Читайте также:
|
|
Пусть функция f(x) определена и непрерывна на [a, b]. Пусть на [a, b] есть корень и только один, т. е. f(a)*f(b)<0, график функции проходит через точку A(a, f(a)), B(b, f(b)) и f’(x), f’’(x) -знакопостоянны на [a, b].
В точке B(b, f(b)) проводим касательную. Уравнение касательной запишется так:
Для нахождения точки пересечения этой прямой с осью Ox нужно принять y=0, а x=x1, тогда получаем: 0=f(b)+f’(b)(x1-b)
f’(b)(x1-b)= - f(b)
Если касательная проведена в точку B(b, f(b)), то получаем x1, найдя значение x1 по формуле, вычислим x1 и найдём точку B1(x1, f(x1)), тогда
Процесс продолжается неограниченно. x1,…, xn являются приближёнными значениями корня.
Замечание. Для того, чтобы точка пересечения касательной с осью Ox лежала внутри [a, b] касательную надо проводить через тот конец отрезка [a, b], где знак функции и второй производной совпадают.
Методами математического анализа можно доказать, что последовательность x1,…, xn есть последовательность приближённых значений корня, она монотонна, сходится и её предел равен истинному значению корня, процесс закончить, когда |xn+1-xn|<E.
Код программы «Задание 2»
program method_of_kasatelnue
real eps, sh, xi,fi,ff,ff1,a,b! описание действительных переменных
a=1! начало отрезка
b=!конец отрезка
eps=1d-1!погрешность, 1д-1=0,1
sh=1d-1!шаг расбиения
do 10 xi=a,b,sh! цикл от а до б с шагом аш, 10-метка, т е цикл заканчивается там где ниже стоит 10
call F(ff,xi)! значение функции ф в точке хи
call F(ff1,xi+sh)! значение функции ф в точке хи+шаг
fi=ff*ff1!перемножаем эти значения
if (fi.le.0) then!less <, если это значение меньше 0 то идем дальше
call F(ff,xi)! значение функции ф в точке хи
call F2(ff1,xi)! значение функции ф(ф2-вторая производная) в точке хи
if(ff*ff1.gt.0) then!grate >, если произведение этих значений больше 0 то х0=хи т е а
x0=xi
else
x0=xi+sh!f(b)*f''(b)>0,то хи=б
endif
do 5
call F(ff,x0)! значение функции в точке х0
call F1(ff1,x0)! значение функции в точке х0 (ф1-первая производная)
x1=x0-ff/ff1! общая формула нахождения точек
if(abs(x1-x0)-eps) 6,11,11!если результат<0 то по метке 6|если результат =0 то по метке 11|если результат >0 то по метке 11
11 x0=x1
5 continue
6 write (*,*) 'Koren na promegutke[',xi,',', xi+sh,']'!вывод на экран интервала
write (*,*) 'x=', x1!вывод на экран решения т е х
call F(ff,x1)! значение функции в точке х
write (*,*) 'F(x)=', ff
x0=0d0! 0д0=0
x1=0d0
fi=0d0
endif
10 continue
end program method_of_kasatelnue
! функция
subroutine f(x_n,x)
real x_n,x
x_n= 3*log(x)**2+6*log(x)-5
end subroutine f
! первая производная функции
subroutine f1(x_n,x)
real x_n,x
x_n= 6d0/x*(log(x)+1)
end subroutine f1
! вторая производная функции
subroutine f2(x_n,x)
real x_n,x
x_n= -6*log(x)/x/x
end subroutine f2
Проверка:
Литература
1. Бартеньев О.В. Современный Фортран / О. В. Бартеньев. – 2-е изд. – М.: ДИАЛОГ-МИФИ, 1998. – 397 с.
2. Бахвалов, Н.С. Численные методы / Н. С. Бахвалов, Н. П. Жидков, Г. М. Кобельков. – 2-е изд. – М.: Лаб. Баз. Знаний, 2002. – 630 с.
3. Каханер Д. Численные методы и программное обеспечение / Д. Каханер, К. Моулер, С. Нэш. – М.: Мир, 1998. – 575 с.
4. Самохин А.Б. Фортран и вычислительные методы: Для пользователя IBM PC / А.Б.Самохин, А.С.Самохина. – М.: Русина, 1994. – 120 с.
5. Светозарова Г.И. Современные методы программирования в примерах и задачах / Г.И. Светозарова, А.В. Козловский, Е.В. Сигитов. – М.: Наука, 1995. – 432 с.
Дата добавления: 2014-12-18; просмотров: 36 | Поможем написать вашу работу | Нарушение авторских прав |
<== предыдущая лекция | | | следующая лекция ==> |
Графический интерфейс устройства (CDI). Контекст устройства. Регионы и отсечение. | | | Направления физ географии |