Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лек-6.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
481.79 Кб
Скачать

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 .

10

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]