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

% Pl.

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