Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Найти корни уравнения f(x)=sin(x)-x+0,15=0 на отрезке [0,5;1] e=10 .
Запишем производную функции f (x):
f ’(x)=cos(x)-1
y = x -(sin(x)- x +0,15)/(cos(x)-1))
Выберем начальное приближение. Метод Ньютона обладает хорошей сходимостью, но основная трудность в методе Ньютона заключается в выборе начального приближения (x 0), которое ведет к сходящемуся итерационному процессу. Начальное приближение целесообразно выбирать так, чтобы выполнялось условие:
f (x 0)* f ’’(x 0)>0
f ’’(x 0)=-sin(x 0)<0 (на заданном интервале). Значит необходимо, чтобы: f (x)=sin(x)- x *0,15<0.
Чтобы избежать процесса зацикливания программы, необходимо поставить ограничение на число итераций (повторов).
/************************************************/
/* Приближенные методы решения уравнений */
/* Метод Ньютона */
/************************************************/
#include <stdio.h>
#include <math.h>
#include <conio.h>
void main()
{
clrscr();
int i, k=50; // k-ограничитель итераций.
float x, y, z, eps;
printf ("\n Начальное приближение:");
scanf ("%f",&x);
printf ("\n Точность:");
scanf ("%f",&eps);
printf ("\n x=%f и eps=%f", x, eps);
i=0; // i-счетчик итераций.
do
{
y=x-(sin(x)-x+0.15)/(cos(x)-1);
i++;
if (i>k) break;
z=x; // Сохраним предыдущее приближение.
x=y; // Новое приближение.
}
while (fabs(y-z)>eps);
if (i>=k)
printf ("\n Число итераций больше допустимого");
else
printf ("\n Корень равен=%f",x);
getch();
}
Дата публикования: 2015-01-23; Прочитано: 234 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!