Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

2 лаба численые методы

.pdf
Скачиваний:
3
Добавлен:
01.12.2023
Размер:
566.21 Кб
Скачать

{

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