Обычный метод перевести в метод Ньютона - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, дорогие. Имеется код программы, считающей корень функции

0,3arctgx-x-1

обычным школьным методом.
#include <stdio.h>
#include <math.h>
#include <conio.h>
 
int main()
{
        float x;
        printf("Enter argument (x) function 0.3*arctg(x)-x-1: ");
        scanf("%f",&x);
        float y = 0.3*atan(x)-x-1;
 
        printf("Function value = %f", y);
        getch();
        return 0;
}
Нужно переделать ее для подсчета

того же

уравнения, но

методом Ньютона

. Программа на

С

. Никак не разберусь с методом Ньютона. Прошу вашей помощи. Заранее спасибо.

Решение задачи: «Обычный метод перевести в метод Ньютона»

textual
Листинг программы
#include <stdio.h>
#include <math.h>
#include <conio.h>
 
float f(float x)
{ return 0.3*atan(x)-x-1; }
float f1(float x)
{ return 0.3/(1+x*x)-1; }
float f2(float x)
{ return 0.6*x/((1+x*x)*(1+x*x)); }
 
float Newt(float a,float b,float (*f)(float),float (*f1)(float),float (*f2)(float),float eps, int (*k))
{
      float x,t,m=0;
      if(f(a)*f2(a)>0) t=a;
         else  t=b;
      do
        {
               x=t;
               t=x-f(x)/f1(x);
        }
        while(fabs(x-t)>eps);
        { m++; }
        *k=m;
        return t;
        }
 
main ()
 
{
     int k;
     float x,y,a,b,eps;
     printf("Enter a, b, eps: ");
     scanf("%f%f%f", &a, &b, &eps);
     
     x=Newt(a,b,f,f1,f2,eps,&k);
     printf("Koren: x=%1.3f\nIteraciy: %d" ,x,k);
     getch();
     }

Объяснение кода листинга программы

  1. В функции main() пользователю предлагается ввести значения переменных a, b и eps с помощью функции scanf().
  2. Значения переменных a, b и eps сохранены в соответствующих переменных функции main().
  3. Вызывается функция Newt(), передавая ей значения переменных a, b, f, f1, f2 и eps, а также адрес переменной k.
  4. В функции Newt() используются три функции: f, f1 и f2, которые представляют собой коэффициенты, используемые в методе Ньютона.
  5. Функция Newt() начинает с проверки условия на интервале [a, b], используя функцию f(x). Если это условие выполняется, то начальное значение t устанавливается равным a.
  6. Используется цикл do-while для выполнения итераций метода Ньютона.
  7. На каждой итерации значение x вычисляется как среднее между текущим значением t и корректировкой, полученной с помощью функций f1(x) и f2(x).
  8. Цикл продолжается до тех пор, пока изменение x не станет меньше заданной точности eps.
  9. Переменная k увеличивается на единицу после каждой итерации.
  10. Значение x возвращается в функцию main().
  11. В функции main() выводится сообщение, содержащее значение x и количество итераций k.
  12. Программа завершается вызовом функции getch().

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


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

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

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