Обычный метод перевести в метод Ньютона - 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(); }
Объяснение кода листинга программы
- В функции main() пользователю предлагается ввести значения переменных a, b и eps с помощью функции scanf().
- Значения переменных a, b и eps сохранены в соответствующих переменных функции main().
- Вызывается функция Newt(), передавая ей значения переменных a, b, f, f1, f2 и eps, а также адрес переменной k.
- В функции Newt() используются три функции: f, f1 и f2, которые представляют собой коэффициенты, используемые в методе Ньютона.
- Функция Newt() начинает с проверки условия на интервале [a, b], используя функцию f(x). Если это условие выполняется, то начальное значение t устанавливается равным a.
- Используется цикл do-while для выполнения итераций метода Ньютона.
- На каждой итерации значение x вычисляется как среднее между текущим значением t и корректировкой, полученной с помощью функций f1(x) и f2(x).
- Цикл продолжается до тех пор, пока изменение x не станет меньше заданной точности eps.
- Переменная k увеличивается на единицу после каждой итерации.
- Значение x возвращается в функцию main().
- В функции main() выводится сообщение, содержащее значение x и количество итераций k.
- Программа завершается вызовом функции getch().
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д