2 лаба численые методы
.pdf{
int k = 0;
double c = (a + b) / 2; double ans = 0;
while (b - a > epsilon || Fx(c) > epsilon)
{
c = (a + b) / 2;
if (Fx(b) * Fx(c) < 0)
{
a = c;
ans = Math.Round(a, 4); k++;
}
else
{
b = c;
ans = Math.Round(b, 4); k++;
}
}
ShowAnswer("Вычисление методом дихотомии", ans, k);
}
11
///<summary>
///Вычисляет корень методом Ньютона
///</summary>
///<param name="a">Начальная граница интервала</param>
///<param name="b">Конечная граница интервала</param>
/// <param name="epsilon">Допустимая погрешность</param>
static void MethodNewtonCalculation(double a, double b, double epsilon)
{
int k = 0;
double c = (a + b) / 2;
while (Math.Abs(Fx(c)) >= epsilon)
{
c = c - Fx(c) / FxDerivative(c); k++;
}
ShowAnswer("Вычисление методом Ньютона", c, k);
}
///<summary>
///Вычисляет корень с помощью метода простых итераций
///</summary>
12
///<param name="a">Начальная граница интервала</param>
///<param name="b">Конечная граница интервала</param>
///<param name="epsilon">Допустимая погрешность</param>
static void MethodSimpleIterationsCalculation(double a, double b, double epsilon)
{
double x0, l, xi; x0 = b;
l = 2 / FxDerivative(x0); x0 = b;
int cnt = 0; do
{
cnt++; xi = x0;
x0 = P(xi, l);
}
while (Math.Abs(x0 - xi) > epsilon);
ShowAnswer("Вычисление методом простых итераций", x0, cnt);
}
/// <summary>
13
///Выводит на экран ответ
///</summary>
///<param name="nameMethod">Название метода</param>
///<param name="answerValue">Значение корня</param>
///<param name="iterationsCount">Количество итераций</param>
private static void ShowAnswer(string nameMethod, double answerValue, int iterationsCount)
{
Console.WriteLine(nameMethod + ":");
Console.WriteLine("Найденный |
корень |
(х): |
" |
+ |
Math.Round(answerValue, 4)); |
|
|
|
|
Console.WriteLine("Количество итераций: " + iterationsCount);
Console.WriteLine();
}
}
}
14