Решение нелинейного уравнения методом Ньютона. Переписать с 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));
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.75 из 5
Похожие ответы