
- •Лекция-6 основы численных методов
- •§ 2.6. Методы решения нелинейных уравнений
- •2.6.1. Уравнения с одним неизвестным (скалярные).
- •2.6.2. Метод половинного деления (метод бисекции, метод дихотомии).
- •2.6.3. Метод итерации
- •2.6.4. Пример численного решения нелинейного уравнения.
- •2.6.5. Пример программы (лабораторная работа 6). Вычисление корня функции с заданной точностью на отрезке .
2.6.4. Пример численного решения нелинейного уравнения.
Найти на отрезке
корни функции с точностью =0.1.
.
Метод половинного деления.
Расчет сведен в табличную форму.
Таблица 2.6.1. Вычисление корня методом половинного деления.
|
|
|
|
|
|
|
|
0 |
0 |
3.0 |
1.5 |
–2.92 |
9.79 |
0.5 |
3.0 |
1 |
0 |
1.5 |
0.75 |
–2.92 |
0.51 |
–0.67 |
1.5 |
2 |
0.75 |
1.5 |
1.125 |
–0.67 |
0.51 |
–0.11 |
0.75 |
3 |
1.125 |
1.5 |
1.3125 |
–0.11 |
0.51 |
0.173 |
0.375 |
4 |
1.125 |
1.3125 |
1.218 |
–0.11 |
0.173 |
0.0267, что меньше =0.1 |
0.187 |
Ответ:
.
Метод Ньютона.
.
Начальное приближение:
.
Расчет сведен в табличную форму.
Таблица 2.6.2. Вычисление корня методом половинного деления.
|
|
|
|
|
|
0 |
3.0 |
9.79 |
12.64 |
2.22 |
0.78 |
1 |
2.22 |
3.01 |
5.45 |
1.67 |
0.55 |
2 |
1.67 |
0.89 |
2.52 |
1.32 |
0.35 |
3 |
1.32 |
0.18 |
1.62 |
1.20 |
0.12 |
4 |
1.20 |
0 |
критерий окончания расчета
|
Ответ:
.
2.6.5. Пример программы (лабораторная работа 6). Вычисление корня функции с заданной точностью на отрезке .
Варианты задания.
,
где
,
,
,
,
,
– номер группы;
– номер студента по журналу.
Текст программы на F90
function f(x) common a0,a1,a2 f=((x+a2)*x+a1)*x+a0 end
function df(x) common a0,a1,a2 df=3*x**2+2*a2*x+a1 end
parameter(s=17,g=3,eps=0.00001,kmax=99,a=0,b=3) common a0,a1,a2 a0=-s*(g*g+s*s)/1000; a1=(s+g)**2/100; a2=-(2*g+s)/10; print '(4(2x,a,f10.4))','a0=',a0,'a1=',a1,'a2=',a2 ak=a;bk=b do k=0,kmax c=(ak+bk)/2;y=f(c) if(abs(y)<eps.or.bk-ak<eps) goto 1 if(f(ak)*y<0) then bk=c else ak=c endif enddo 1 print 100,'BISECT',k,y,c
xk=b; if(s<10) xk=(a+b)/2 do k=0,kmax y=f(xk); dy=df(xk); h=y/dy; if(abs(h)<eps) goto 2 xk=xk-h enddo 2 print 100,'NEWTON',k,y,xk
100 format(//10x,a/2x,"k=",i2,3x,"f(x)=",f10.7/2x,"x=",f6.3)
end |
Результаты счета
a0= -5.0660 a1= 4.0000 a2= -2.3000
BISECT
k=19 f(x)=-0.0000008
x= 1.700
NEWTON
k= 5 f(x)=-0.0000002
x= 1.700
Press any key to continue
Замечание.
1. В приведенной программе последовательно реализованы рассматриваемые в настоящем курсе методы численного решения нелинейных уравнений:
BISECT – метод половинного деления;
NEWTON – метод Ньютона.
2. В подпрограмме-функции f вычисляются значения функции:
3. В подпрограмме-функции df вычисляются значения производной от :
4. Параметры a0,a1,a2 вычисляются в основной программе и передаются в подпрограмму-функцию f и подпрограмму-функцию df оператором общих областей common:
common a0,a1,a2 .