Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- %Newtons metod och fixpunktsiteration
- clc;
- clear all;
- z = -2:0.01:2;
- plot(z,f(z)); grid on;
- %Variabeldeklaration, x och z är startpunkter
- x = 0;
- z = 0;
- y = 0; %Anvands endast i bestammande av det exakta vardet
- zsista = 0;
- xsista = 0;
- nedz = 0.26979418;
- nedx = 0.26979418;
- %Bestämmande av zexakt, z med 15 decimaler.
- for c = 1:100
- y = [y,newton(y(c))];
- errorze = abs(y(c) - newton(y(c)));
- if errorze <= 10^-15
- exaktvar = y(c);
- break;
- end
- end
- %Bestämmande av zsista och z till 10 decimaler med newton.
- for i = 1:100
- z = [z,newton(z(i))];
- errorz = abs(z(i) - newton(z(i)));
- if errorz <= 10^-10
- zsista = z(i);
- break;
- end
- nedz = [nedz,abs(z(i+1) - exaktvar)];
- end
- figure(1);
- semilogy(nedz); hold on;
- %Bestämmande av xsista och x till 10 decimaler med fixpunktsiteration.
- for j = 1:100
- x = [x,fix(x(j))];
- errorx = abs(x(j) - fix(x(j)));
- if errorx <= 10^-10
- xsista = x(j);
- break;
- end
- nedx = [nedx,abs(x(j+1) - exaktvar)];
- end
- figure(1);
- title('Newtons metod och fixpunktsiteration');
- xlabel('Antal iterationer');
- ylabel('Felet');
- semilogy(nedx); hold on; legend('newtons','Fixpunkt');
- hline = gline;
- set(hline,'Color','r')
- %Simpla printfunktioner.
- sprintf('Fixpunktsiterationen konvergerar mot %.15f \n', x(j))
- sprintf('Newtons metod konvergerar mot %.15f \n', z(i))
- function fi = fix(x)
- fi = (-exp(-x) + 2*x^3)/5;
- end
- function fun = f(x)
- fun = exp(-x) -2.*x.^3 + 5.*x;
- end
- function der = deriv(x)
- der = -exp(-x) -6.*x.^2 + 5;
- end
- function new = newton(x)
- new = x - (f(x)/deriv(x));
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement