11. laborgyakorlat, házik megoldásai
Contents
clear all, close all
1. feladat
f=@(x)exp(-x.^2);
fprintf(' n Integral\n')
for n=2:2:12
x=linspace(0,2,n);
y=f(x);
z=polyfit(x,y,n-1);
zint=polyint(z);
I=polyval(zint,2)-polyval(zint,0);
fprintf('%3.0f %14.13f\n',n,I)
end
n Integral
2 1.0183156388887
4 0.8622241875992
6 0.8838030970893
8 0.8819818734330
10 0.8820846420591
12 0.8820814406474
2. feladat
fprintf(' h Integral Hiba\n')
for n=2.^[1:7];
h=pi/n;
y=sin(0:h:pi);
I=h*(y(1)/2+y(end)/2+sum(y(2:end-1)));
fprintf('%6.5f %14.13f %14.13f\n',h,I,abs(I-2))
end
disp('Onnét látszik, hogy másodrendű a módszer, hogy h felezésével negyedelődik a hiba.')
h Integral Hiba
1.57080 1.5707963267949 0.4292036732051
0.78540 1.8961188979370 0.1038811020630
0.39270 1.9742316019456 0.0257683980544
0.19635 1.9935703437723 0.0064296562277
0.09817 1.9983933609701 0.0016066390299
0.04909 1.9995983886400 0.0004016113600
0.02454 1.9998996001842 0.0001003998158
Onnét látszik, hogy másodrendű a módszer, hogy h felezésével negyedelődik a hiba.
3. feladat
fprintf(' h Integral Hiba\n')
for n=2.^[1:7];
h=pi/n;
y=sin(0:h/2:pi);
I=h/6*(y(1)+y(end)+4*sum(y(2:2:end-1))+2*sum(y(3:2:end-2)));
fprintf('%6.5f %14.13f %14.13f\n',h,I,abs(I-2))
end
disp('Onnét látszik, hogy negyedrendű a módszer, hogy h felezésével 16-odolódik a hiba.')
h Integral Hiba
1.57080 2.0045597549844 0.0045597549844
0.78540 2.0002691699484 0.0002691699484
0.39270 2.0000165910479 0.0000165910479
0.19635 2.0000010333694 0.0000010333694
0.09817 2.0000000645300 0.0000000645300
0.04909 2.0000000040323 0.0000000040323
0.02454 2.0000000002520 0.0000000002520
Onnét látszik, hogy negyedrendű a módszer, hogy h felezésével 16-odolódik a hiba.
4. feladat
f=@(x)sin(x.^2);
quad(f,0,pi)
ans =
0.772651637187877
5. feladat
6. feladat
clear all
f=@(t,y)t.^2+y;
t0=0;
y0=0;
tmax=1;
kmax=10;
h=(tmax-t0)/kmax;
t=t0;
yy(1)=y0;
for k=1:kmax
yy(k+1)=yy(k)+h*f(t,yy(k));
t=t+h;
end;
tt=[t0:h:tmax];
figure(1)
plot(tt,yy,'-b')
7. feladat
hold on
t=t0;
yy(1)=y0;
for k=1:kmax
k1=f(t,yy(k));
k2=f(t+h/2,yy(k)+h*k1/2);
k3=f(t+h/2,yy(k)+h*k2/2);
k4=f(t+h,yy(k)+h*k3);
yy(k+1)=yy(k)+h/6*(k1+2*k2+2*k3+k4);
t=t+h;
end;
tt=[t0:h:tmax];
plot(tt,yy,'-g')
8. feladat
f=@(t,y)t.^2+y;
[t,y]=ode45(f,[0,1],0);
interp1(t,y,0.6)
plot(t,y,'-r')
ans =
0.084237601797041