Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Пример 9.3



Найти корни уравнения 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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...