SPRAWOZDANIE METODY 5 (1)

SPRAWOZDANIE

METODY NUMERYCZNE

ĆWICZENIE 5

Numeryczne rozwiązywanie równań i układów równań nieliniowych

Hubert Łuczak 171376

Tomasz Szumko 171423


Zadanie 1

M-funkcje - metody bisekcji, siecznych i Newtona:

%metoda bisekcji

A=1.8;

B=2.5;

fA=A*(2*exp(A-2)-A); %x=A

fB=B*(2*exp(B-2)-B); %x=B

if fA*fB==0

'a lub b jest rozwiązaniem równania'

return

elseif fA*fB>0

'Funkcja na krańcach jest tego samego znaku'

return

end

A(1)=A;

B(1)=B;

for i=2:50

p(i)=(B(i-1)-A(i-1))/2;

p1(i)=A(i-1)+p(i);

fp1(i)=p1(i)*(2*exp(p1(i)-2)-p1(i)); %x=p1(i)

fA(i)=A(i-1)*(2*exp(A(i-1)-2)-A(i-1)); %x=A(i-1)

fB(i)=B(i-1)*(2*exp(B(i-1)-2)-B(i-1)); %x=B(i-1)

if fA(i)*fp1(i)>0

A(i)=p1(i);

B(i)=B(i-1);

elseif fB(i)*fp1(i)>0

B(i)=p1(i);

A(i)=A(i-1);

end

if abs(p1(i)*(2*exp(p1(i)-2)-p1(i)))<0.00001 %x=p1(i)

p1(i)

break

end

end

0 0 0.2707 0 -2.0000
2.1500 0.3734 3.0196 2.1500 0.1500
1.9750 -0.0482 1.8531 -0.1750 -0.0250
2.0625 0.1371 2.3950 0.0875 0.0625
2.0187 0.0386 2.1143 -0.0438 0.0187
1.9969 -0.0062 1.9813 -0.0219 -0.0031
2.0078 0.0158 2.0472 0.0109 0.0078
2.0023 0.0047 2.0141 -0.0055 0.0023
1.9996 -0.0008 1.9977 -0.0027 -0.0004
2.0010 0.0020 2.0059 0.0014 0.0010
2.0003 0.0006 2.0018 -0.0007 0.0003
2.0000 -0.0001 1.9997 -0.0003 -0.0000
2.0001 0.0002 2.0007 0.0002 0.0001
2.0000 0.0001 2.0002 -0.0001 0.0000
2.0000 -0.0000 2.0000 -0.0000 -0.0000
2.0000 0.0000 2.0001 0.0000 0.0000
2.0000 0.0000 2.0000 -0.0000 0.0000

Metoda ta jest zbieżna do wartości zerowej x=2.

%metoda siecznych

x(1)=2.5;

x(2)=2.4;

for i=1:30

x(i+2)=x(i+1)-[((x(i+1)*(2*exp(x(i+1)-2)-x(i+1)))*(x(i+1)-x(i)))/((x(i+1)*(2*exp(x(i+1)-2)-x(i+1)))-(x(i)*(2*exp(x(i)-2)-x(i))))];

if abs((x(i+2)*(2*exp(x(i+2)-2)-x(i+2))))<0.00001

x(i+2)

break

end

end

2.5000 1.9936 6.5410 0 0.5000
2.4000 1.4008 5.3444 -0.1000 0.4000
2.1637 0.4156 3.1256 -0.2363 0.1637
2.0641 0.1409 2.4054 -0.0997 0.0641
2.0129 0.0264 2.0785 -0.0511 0.0129
2.0012 0.0023 2.0070 -0.0118 0.0012
2.0000 0.0000 2.0001 -0.0011 0.0000
2.0000 0.0000 2.0000 -0.0000 0.0000

Metoda ta jest zbieżna do wartości zerowej x=2.

%metoda Newtona/stycznych

x(1)=2.5;

for i=1:30

x(i+1)=x(i)-(x(i)*(2*exp(x(i)-2)-x(i)))/(2*exp(x(i)-2)+x(i)*(2*exp(x(i)-2)-1)-x(i));

if abs(x(i+1)*(2*exp(x(i+1)-2)-x(i+1)))<0.00001

x(i+1)

break

end

end

2.5000 1.9936 6.5410 0 0.5000
2.1952 0.5179 3.3776 -0.3048 0.1952
2.0419 0.0891 2.2602 -0.1533 0.0419
2.0024 0.0049 2.0147 -0.0394 0.0024
2.0000 0.0000 2.0001 -0.0024 0.0000
2.0000 0.0000 2.0000 -0.0000 0.0000
2.0000 0.0000 2.0001 0.0000 0.0000
2.0000 0.0000 2.0000 -0.0000 0.0000

Metoda ta jest zbieżna do wartości zerowej x=2.

%metoda bisekcji

A=0.3;

B=0.6;

fA=cos(pi*A)+pi*(A-0.5); %x=A

fB=cos(pi*B)+pi*(B-0.5); %x=B

if fA*fB==0

'a lub b jest rozwiązaniem równania'

return

elseif fA*fB>0

'Funkcja na krańcach jest tego samego znaku'

return

end

A(1)=A;

B(1)=B;

for i=2:50

p(i)=(B(i-1)-A(i-1))/2;

p1(i)=A(i-1)+p(i);

fp1(i)=cos(pi*p1(i))+pi*(p1(i)-0.5); %x=p1(i)

fA(i)=cos(pi*A(i-1))+pi*(A(i-1)-0.5); %x=A(i-1)

fB(i)=cos(pi*B(i-1))+pi*(B(i-1)-0.5); %x=B(i-1)

if fA(i)*fp1(i)>0

A(i)=p1(i);

B(i)=B(i-1);

elseif fB(i)*fp1(i)>0

B(i)=p1(i);

A(i)=A(i-1);

end

if abs(cos(pi*p1(i))+pi*(p1(i)-0.5))<0.00001 %x=p1(i)

p1(i)

break

end

end

0 -0.5708 3.1416 0 -0.5000
0.4500 -0.0006 0.0387 0.4500 -0.0500
0.5250 0.0001 0.0097 0.0750 0.0250
0.4875 -0.0000 0.0024 -0.0375 -0.0125
0.5062 0.0000 0.0006 0.0187 0.0062

Metoda ta jest zbieżna do wartości zerowej x=0.5.

%metoda siecznych

x(1)=0.3;

x(2)=0.35;

for i=1:30

x(i+2)=x(i+1)-[((cos(pi*x(i))+pi*(x(i)-0.5))*(x(i+1)-x(i)))/((cos(pi*x(i+1))+pi*(x(i+1)-0.5))-(cos(pi*x(i))+pi*(x(i)-0.5)))];

if abs((cos(pi*x(i+2))+pi*(x(i+2)-0.5)))<0.00001

x(i+2)

break

end

end

0.3000 -0.0405 0.6000 0 -0.2000
0.3500 -0.0172 0.3424 0.0500 -0.1500
0.4370 -0.0013 0.0613 0.0870 -0.0630
0.5311 0.0002 0.0150 0.0941 0.0311
0.6150 0.0078 0.2029 0.0839 0.1150
0.6133 0.0075 0.1970 -0.0017 0.1133
0.5742 0.0021 0.0851 -0.0391 0.0742
0.5198 0.0000 0.0061 -0.0544 0.0198
0.4643 -0.0002 0.0197 -0.0555 -0.0357
0.4562 -0.0004 0.0297 -0.0081 -0.0438
0.4658 -0.0002 0.0181 0.0096 -0.0342
0.4841 -0.0000 0.0039 0.0183 -0.0159
0.5045 0.0000 0.0003 0.0204 0.0045

Metoda ta jest zbieżna do wartości zerowej x=0.5.

%metoda Newtona/stycznych

x(1)=0.3;

for i=1:30

x(i+1)=x(i)-(cos(pi*x(i))+pi*(x(i)-0.5))/(pi-(pi*sin(pi*x(i))));

if abs(cos(pi*x(i+1))+pi*(x(i+1)-0.5))<0.00001

x(i+1)

break

end

end

0.3000 -0.0405 0.6000 0 -0.2000
0.3676 -0.0119 0.2680 0.0676 -0.1324
0.4120 -0.0035 0.1194 0.0444 -0.0880
0.4414 -0.0010 0.0531 0.0294 -0.0586
0.4609 -0.0003 0.0236 0.0196 -0.0391
0.4740 -0.0001 0.0105 0.0130 -0.0260
0.4826 -0.0000 0.0047 0.0087 -0.0174
0.4884 -0.0000 0.0021 0.0058 -0.0116

Metoda ta jest zbieżna do wartości zerowej x=0.5.

Zadanie 2

%metoda bisekcji

A=0.3;

B=0.6;

fA=(cos(pi*A)+pi*(A-0.5))/(pi-(pi*sin(pi*A))); %x=A

fB=(cos(pi*B)+pi*(B-0.5))/(pi-(pi*sin(pi*B))); %x=B

if fA*fB==0

'a lub b jest rozwiązaniem równania'

return

elseif fA*fB>0

'Funkcja na krańcach jest tego samego znaku'

return

end

A(1)=A;

B(1)=B;

for i=2:50

p(i)=(B(i-1)-A(i-1))/2;

p1(i)=A(i-1)+p(i);

fp1(i)=(cos(pi*p1(i))+pi*(p1(i)-0.5))/(pi-(pi*sin(pi*p1(i)))); %x=p1(i)

fA(i)=(cos(pi*A(i-1))+pi*(A(i-1)-0.5))/(pi-(pi*sin(pi*A(i-1)))); %x=A(i-1)

fB(i)=(cos(pi*B(i-1))+pi*(B(i-1)-0.5))/(pi-(pi*sin(pi*B(i-1)))); %x=B(i-1)

if fA(i)*fp1(i)>0

A(i)=p1(i);

B(i)=B(i-1);

elseif fB(i)*fp1(i)>0

B(i)=p1(i);

A(i)=A(i-1);

end

if abs((cos(pi*p1(i))+pi*(p1(i)-0.5))/(pi-(pi*sin(pi*p1(i)))))<0.00001 %x=p1(i)

p1(i)

break

end

end

0 -0.1817 0.4292 0 -0.5000
0.4500 -0.0167 0.3342 0.4500 -0.0500
0.5250 0.0083 0.3335 0.0750 0.0250
0.4875 -0.0042 0.3334 -0.0375 -0.0125
0.5062 0.0021 0.3333 0.0187 0.0062
0.4969 -0.0010 0.3333 -0.0094 -0.0031
0.5016 0.0005 0.3333 0.0047 0.0016
0.4992 -0.0003 0.3333 -0.0023 -0.0008
0.5004 0.0001 0.3333 0.0012 0.0004
0.4998 -0.0001 0.3333 -0.0006 -0.0002
0.5001 0.0000 0.3333 0.0003 0.0001
0.5000 -0.0000 0.3333 -0.0001 -0.0000
0.5000 0.0000 0.3330 0.0001 0.0000

Metoda ta jest zbieżna do wartości zerowej x=0.5.

%metoda siecznych

x(1)=0.3;

x(2)=0.35;

for i=1:30

x(i+2)=x(i+1)-(((cos(pi*x(i))+pi*(x(i)-0.5))/(pi-(pi*sin(pi*x(i)))))*(x(i+1)-x(i)))/(((cos(pi*x(i+1))+pi*(x(i+1)-0.5))/(pi-(pi*sin(pi*x(i+1)))))-((cos(pi*x(i))+pi*(x(i)-0.5))/(pi-(pi*sin(pi*x(i))))));

if abs((cos(pi*x(i+2))+pi*(x(i+2)-0.5))/(pi-(pi*sin(pi*x(i+2)))))<0.00001

x(i+2)

break

end

end

0.3000 -0.0676 0.3468 0 -0.2000
0.3500 -0.0504 0.3408 0.0500 -0.1500
0.5466 0.0155 0.3340 0.1966 0.0466
0.6968 0.0665 0.3464 0.1502 0.1968
0.6510 0.0507 0.3409 -0.0458 0.1510
0.4575 -0.0142 0.3339 -0.1934 -0.0425
0.3063 -0.0654 0.3459 -0.1512 -0.1937
0.3482 -0.0510 0.3410 0.0418 -0.1518
0.5385 0.0128 0.3338 0.1904 0.0385
0.6906 0.0643 0.3455 0.1521 0.1906
0.6526 0.0513 0.3411 -0.0380 0.1526
0.4653 -0.0116 0.3337 -0.1873 -0.0347
0.3125 -0.0632 0.3451 -0.1528 -0.1875
0.3467 -0.0515 0.3412 0.0342 -0.1533
0.5310 0.0103 0.3337 0.1843 0.0310
0.6845 0.0622 0.3448 0.1535 0.1845
0.6539 0.0517 0.3412 -0.0306 0.1539
0.4725 -0.0092 0.3336 -0.1814 -0.0275
0.3184 -0.0612 0.3444 -0.1541 -0.1816
0.3456 -0.0519 0.3413 0.0272 -0.1544
0.5241 0.0080 0.3335 0.1785 0.0241
0.6786 0.0602 0.3440 0.1546 0.1786
0.6549 0.0520 0.3413 -0.0238 0.1549
0.4792 -0.0069 0.3335 -0.1756 -0.0208
0.3242 -0.0592 0.3437 -0.1550 -0.1758
0.3448 -0.0522 0.3414 0.0205 -0.1552
0.5176 0.0059 0.3334 0.1728 0.0176
0.6729 0.0582 0.3433 0.1554 0.1729
0.6555 0.0523 0.3414 -0.0174 0.1555
0.4855 -0.0048 0.3334 -0.1701 -0.0145
0.3298 -0.0573 0.3430 -0.1557 -0.1702
0.3442 -0.0524 0.3414 0.0144 -0.1558

Metoda ta nie jest zbieżna do wartości zerowej x=0.5.

%metoda Newtona/stycznych

x(1)=0.3;

for i=1:30

x(i+1)=x(i)-((cos(pi*x(i))+pi*(x(i)-0.5))/(pi-(pi*sin(pi*x(i)))))/(((pi-(pi*sin(pi*x(i))))^2+pi^2*cos(pi*x(i))*(cos(pi*x(i))+pi*(x(i)-0.5)))/((pi-(pi*sin(pi*x(i))))^2));

if abs((cos(pi*x(i+1))+pi*(x(i+1)-0.5))/(pi-(pi*sin(pi*x(i+1)))))<0.00001

x(i+1)

break

end

end

0.3000 -0.0676 0.0000 0 -0.2000
0.4948 -0.0017 0.0000 0.1948 -0.0052
0.5000 0.0010 2.2363 0.0052 -0.0000
0.5000 0.0002 0.3068 -0.0000 -0.0000
0.5000 0.0001 0.1071 -0.0000 -0.0000
0.5000 0.0000 0.0184 -0.0000 -0.0000
0.5000 0.0000 0.0068 -0.0000 -0.0000
0.5000 0.0000 0.0057 -0.0000 -0.0000
0.5000 0.0000 0.0011 -0.0000 -0.0000

Metoda ta jest zbieżna do wartości zerowej x=0.5.

Zadanie 3

x1 = fzero(@(x) x*(2*exp(x-2)-x), 1.8)
x1 = 2

x2 = fzero(@(x) cos(pi*x)+pi*(x-0.5), 0.3)

x2 = 0.5000

x3 = fzero(@(x) (cos(pi*x)+pi*(x-0.5))/(pi-(pi*sin(pi*x))), 0.3)

x3 = 0.5000

Wyniki są takie same jak te otrzymane przy użyciu napisanych przez nas funkcji.

Zadanie 4

W=[1 5 4 14 76 32 -198 -6 -333 -2245 -2750 -1000]

L1=Laguerre(W,0.001)

B1=bairstow(W,0.001)

R=roots(W)

L1 B1 R
-0.9992 -0.9996 - 0.0005i -4.0000
-1.0001 -0.9996 + 0.0005i 2.0000
-1.0007 -1.0009 1.0000 + 2.0000i
0.9996 + 1.9994i 2.0001 1.0000 - 2.0000i
2.0000 + 0.0000i 0.9924 - 2.0016i 1.0000 + 2.0000i
0.9994 - 1.9997i 0.9924 + 2.0016i 1.0000 - 2.0000i
-4.0000 + 0.0000i 1.0078 - 1.9982i -2.0000 + 1.0000i
-2.0000 + 1.0000i 1.0078 + 1.9982i -2.0000 - 1.0000i
-2.0000 - 1.0000i -1.9988 - 1.0023i -1.0000
1.0006 - 2.0003i -1.9988 + 1.0023i -1.0000 + 0.0000i
1.0004 + 2.0006i -4.0028 -1.0000 - 0.0000i

L2=Laguerre(W,0.00001)

B2=bairstow(W,0.00001)

L2 B2 R
-1.0000 -1.0000 - 0.0000i -4.0000
-1.0000 - 0.0000i -1.0000 + 0.0000i 2.0000
-1.0000 + 0.0000i -1.0000 1.0000 + 2.0000i
1.0000 - 2.0000i 2.0000 1.0000 - 2.0000i
2.0000 - 0.0000i 0.9995 - 2.0001i 1.0000 + 2.0000i
1.0000 + 2.0000i 0.9995 + 2.0001i 1.0000 - 2.0000i
-4.0000 + 0.0000i 1.0005 - 1.9999i -2.0000 + 1.0000i
-2.0000 - 1.0000i 1.0005 + 1.9999i -2.0000 - 1.0000i
-2.0000 + 1.0000i -2.0000 - 1.0000i -1.0000
1.0000 + 2.0000i -2.0000 + 1.0000i -1.0000 + 0.0000i
1.0000 - 2.0000i -4.0000 -1.0000 - 0.0000i

L3=Laguerre(W,0.000000001)

B3=bairstow(W,0.000000001)

L3 B3 R
-1.0000 -1.0000 -4.0000
-1.0000 - 0.0000i -1.0000 2.0000
-1.0000 + 0.0000i -4.0000 1.0000 + 2.0000i
1.0000 - 2.0000i -1.0000 1.0000 - 2.0000i
2.0000 + 0.0000i -2.0000 - 1.0000i 1.0000 + 2.0000i
1.0000 + 2.0000i -2.0000 + 1.0000i 1.0000 - 2.0000i
-4.0000 + 0.0000i 0.9972 - 1.9993i -2.0000 + 1.0000i
-2.0000 - 1.0000i 0.9972 + 1.9993i -2.0000 - 1.0000i
-2.0000 + 1.0000i 1.0028 - 2.0008i -1.0000
1.0000 + 2.0000i 1.0028 + 2.0008i -1.0000 + 0.0000i
1.0000 - 2.0000i 2.0000 -1.0000 - 0.0000i

Trzy metody wyznaczania zer wielomianu W(x) dają mniej więcej takie same wyniki, w zależności od przyjętej wartości przybliżenia.

Zadanie 5

W=[1 5 4 14 76 32 -198 -6 -333 -2245 -2750 -1000]

L=Lehmer(W,0.00001)

L
-1.0000 + 0.0000i
-1.0000 + 0.0000i
2.0000 + 0.0000i
-1.0000 - 0.0000i
0.9995 + 1.9993i
1.0005 + 2.0007i
-2.0000 + 1.0000i
-4.0000 + 0.0000i
-2.0000 - 1.0000i
0.9986 - 2.0024i
1.0014 - 1.9976i

Metoda Lehmera-Shure’a wyznacza miejsca zerowe wielomianu interpolującego badanej funkcji. Rozbieżnosci z poprzednimi wynikami wynikają z tego, iż wielomian ten jest przybliżeniem funkcji, stąd uzyskane miejsca zerowe również są przybliżone.

Zadanie 6

x=-3.3;

y=0.4;

Fxy=[x*y+x-y+3;x^2-2*x+y^2+2*y-15];

Fpochodna=[y+1,x-1;2*x-2,2*y+2];

x(1)=-3.3;

y(1)=0.4;

for i=1:40

d=-(inv([y(i)+1,x(i)-1;2*x(i)-2,2*y(i)+2])*[x(i)*y(i)+x(i)-y(i)+3;x(i)^2-2*x(i)+y(i)^2+2*y(i)-15]);

x(i+1)=x(i)+d(1,1);

y(i+1)=y(i)+d(2,1);

if [abs(x(i+1)*y(i+1)+x(i+1)-y(i+1)+3);abs(x(i+1)^2-2*x(i+1)+y(i+1)^2+2*y(i+1)-15)]<[0.00001;0.00001]

[x(i+1);y(i+1)]

break

end

end

Funkcja zwraca założone wartości x i y.


Wyszukiwarka