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
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
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
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
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
Metoda ta nie jest zbieżna do wartości zerowej x=0.5, wyliczona wartość x= 0.3524.
%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
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
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
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
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
Zadanie 4