- •Кафедра електроніки
- •Лабораторна робота № 1 розв’язування нелінійних рівнянь
- •Початкове наближення слід вибрати з умови
- •Похибка методу оцінюється як
- •Звіт повинен містити
- •Контрольні питання
- •Метод половинного ділення:
- •Метод хорд:
- •Метод дотичних:
- •Метод січних:
- •Лістинг програм: Метод половинного ділення:
- •Метод хорд:
- •Метод дотичних:
- •Метод січних:
- •Висновок
Метод хорд:
a b
x3-x2-9x+9=0; [-4 ; -2] ɛ = 0,001
-f(x) = 0
- x3+x2+9x-9=0;
a
f(-4) = 35 > 0
b
f(-2) = -15 <0
f '' = -6x+2
f ''(-4) = 26 > 0
f ''(-2) = 14 > 0
x0 = b = -2
x1 = -2 - (-2+4) = -2,6
∆x1 = |x1-x0|=0,6 > ɛ
f(-2,6) = -8,064
x2 = -2,6 - (-2,6+4) = -2,862158
∆x2 = |x2-x1|=0,262158 > ɛ
f(-2,862158) = -3,120824
x3 = -2,262158 - (-2,262158+4) = -2,955309
∆x3 = |x3-x2|=0,093151 > ɛ
f(-2,955309) = -1,052701
x4 = -2,955309 - (-2,955309+4) = -2,985811
∆x4 = |x4-x3|=0,030502 > ɛ
f(-2,985811) = -0,278526
x5 = -2,985811 - (-2,985811+4) = -2,993818
∆x5 = |x5-x1|=0,008007 > ɛ
f(-2,993818) = -0,147987
x6 = -2,993818- (-2,993818+4) = -2,998054
∆x6 = |x6-x5|=0,0046656 > ɛ
f( -2,998054) = -0,046656
x7 = -2,998054- (-2,998054+4) = -2,999387
∆x7 = |x7-x6|=0,001338 > ɛ
f( -2,999387) = -0,014688
x8 = -2,999387- (-2, 2,999387+4) = -2,9993872571524 ≈ - 3,000000
∆x8 = |x8-x7|=0,001338 > ɛ
Метод дотичних:
x3-x2-9x+9=0; [-4 ; -2] ɛ = 0,001
f(-4) = 35 > 0
f(-2) = -15 <0
f '= 3x2-2x-9
f '' = -6x+2
f '(-4) = 47 > 0
f '(-2) = 7 > 0
f ''(-4) = 26 > 0
f ''(-2) = 14 > 0
x0 = -4
x1 = -4 - = - 3,255319
∆x1=|x1-x0|=0,744681
f(-3,255319) =-6,791775
f '(-3,255319) = 29,301943
x2 = -3,255319 - = - 3,023382
∆x2=|x2-x1|=0,231936
f(-3,023382) =-0,566648
f '(-3,023382) = 24,469280
x3 = -3,023382 - = - 3,000224
∆x3=|x3-x2|=0,0231575
f(-3,000224) =-0,005376
f '(-3,000224) = 24,004480
x4 = -3,000224 - = - 3,000000041806 ≈ - 3,00000000
∆x4=|x4-x3|=0,000223
Метод січних:
x3-x2-9x+9=0; [-4 ; -2] ɛ = 0,001; δ = 0,1
f(-4) = 35 > 0
f(-2) = -15 <0
f '= 3x2-2x-9
f '' = -6x+2
f '(-4) = 47 > 0
f '(-2) = 7 > 0
f ''(-4) = 26 > 0
f ''(-2) = 14 > 0
x0 = -4
f '(x0) = 48,31
x1 = -4 - = - 3,275512
∆x1=|x1-x0|=0,724488 >ɛ
f(x1) = -6,73999
f '(x1) = 37,35341
x2 = -3,275512 - 0,724488 = - 3,095073
∆x2=|x2-x1|=0,180439 >ɛ
f(x2) = -2,372999
f '(x2) = 26,9671
x3 = -3,095073 - 0,180439 = - 3,0070769
∆x3=|x3-x2|=0,087996 >ɛ
f(x3) = -0,1703459
f '(x3) = 25,153818
x4 = -3,0070769 - 0,087996 = - 3,000304
∆x4=|x4-x3|=0,006772 >ɛ
f(x4) = -0,000729
f '(x4) = 25,08184
x5 = -3,000304 - 0,006772= - 3,000274 ≈ - 3,0000
∆x5=|x5-x4|=0,00003 >ɛ
Лістинг програм: Метод половинного ділення:
#include <cstdlib>
#include <iostream>
#include <math.h>
using namespace std;
int main(int argc, char *argv[])
{
double a,b,c,p,fa,fb,fc,e;
a=-2;
b=2;
e=0.001;
ssulka1:
c=(a+b)/2;
fa=4*a*a*a-3,5*a*a-3,5*a-0,5;
fb=4*b*b*b-3,5*b*b-3,5*b-0,5;
fc=4*c*c*c-3,5*c*c-3,5*c-0,5;
//cout <<"fa="<<fa<< endl;
//cout <<"fb="<<fb<< endl;
//cout <<"fc="<<fc<< endl;
if (fa<0&&fc>0)
b=c;
else
a=c;
p=b-a;
//cout <<"p ="<<p<<endl;
//cout <<"a="<<a<<endl;
//cout <<"b="<<b<<endl;
//cout <<"c="<<c<<endl;
if (p>e)
goto ssulka1;
c=(a+b)/2;
cout <<"x="<<c<< endl;
system("PAUSE");
return EXIT_SUCCESS;
}