Решение нелинейного уравнения методом Ньютона. Переписать с Pascal на C#
Формулировка задачи:
Есть примерный алгоритм программы, нужно написать его на C# и доработать так, чтобы m менялось от -79.5 до 79.5 с шагом единица.
Листинг программы
- program Newton;
- function tg(x:real):real;
- begin
- tg := sin(x)/cos(x);
- end;
- function f(x:real):real;
- begin
- f := tg(x)-(1/x);
- end;
- function f1(x:real):real; {Первая производная функции}
- begin
- f1:= 1/(sqr(cos(x)))+(1/sqr(x));
- end;
- var a,b,x,eps,en:real;
- i:integer;
- begin
- writeln ('Решение нелинейного уравнения методом Ньютона');
- writeln ('tg(x)-((abs(m))/x)');
- write ('Введите требуемую точность решения:');
- read (eps);
- writeln ('Решение:');
- writeln ('Номер шага Значение X');
- a:= -2;
- b:= 1;
- en:= abs(a-b);
- x:= b;
- i:= 1;
- while (abs(en)>eps) do begin
- x:=x-f(x)/f1(x); {Шаг метода}
- writeln (i:10,x:14:3); {Вывод значения X с шагом i}
- en:=abs(x-b); {Новая точность}
- b:=x; {Значение границы для следующего шага}
- i:=i+1; {Номер шага}
- end;
- end.
Решение задачи: «Решение нелинейного уравнения методом Ньютона. Переписать с Pascal на C#»
textual
Листинг программы
- using System;
- namespace Newton
- {
- class Program
- {
- static double _a, _b, _x, _m, _eps, _en;
- static int _i;
- static void Main()
- {
- Console.WriteLine("Решение нелинейного уравнения методом Ньютона");
- Console.WriteLine("tg(_x)-((abs(m))/_x)");
- Console.Write("Введите требуемую точность решения: ");
- _eps = double.Parse(Console.ReadLine());
- Console.WriteLine("Решение:");
- Console.WriteLine("Номер шага Значение X");
- Console.WriteLine();
- for (_m = -79.5; _m <= 79.5; _m++)
- {
- _a = -2;
- _b = 1;
- _en = Math.Abs(_a - _b);
- _x = _b;
- _i = 1;
- Console.WriteLine("m = {0}", _m);
- while (Math.Abs(_en) > _eps)
- {
- _x = _x - f(_x, _m) / f1(_x);
- Console.WriteLine(" {0} {1}", _i++, _x);
- _en = Math.Abs(_x - _b);
- _b = _x;
- }
- Console.ReadKey();
- Console.WriteLine();
- }
- Console.ReadKey();
- }
- private static double f(double x, double m)
- {
- return Math.Tan(x) - (m/x);
- }
- private static double f1(double x)
- {
- return 1/(Math.Sqrt(Math.Cos(x)) + 1/Math.Sqrt(x));
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д