Beruflich Dokumente
Kultur Dokumente
clear; close;
format long
N=2;err=1;x0=0;x1=1;s1=0;
f=@(x) sin(x)./(1+x.^4)+sin(1./x).* x.^2./(1+x.^4);
disp(' Step approximation')
while err>=10^(-4)/2
h=(x1-x0)/N;
s=0*h/2;
for i=1:N-1
s=s+h*f(x0+h*i);
end
s=s+f(x1)*h/2;
err=abs(s-s1)/(2^4-1);
s1=s;
disp([N, s])
N=N*2;
end
Step approximation
2.000000000000000 0.542955932230503
4.000000000000000 0.554587142041583
8.000000000000000 0.568766288145437
16.000000000000000 0.569553726654222
32.000000000000000 0.569624349130263
b) The following is the program of b).
clear; close;
format long
N=2;err=1;s1=1;
f=@(x) exp(-x)./(1+x).^(5)+x.^3.*exp(-1./x)./(x+1).^5;
disp('Step approximation')
while err>=10^(-4)/2
x0=0;x1=1; h=(x1-x0)/N;
s=1*h/2;
for i=1:N-1
s=s+h*f(x0+h*i);
end
s=s+f(x1)*h/2;
err=abs(s1-s)/(2^4-1);
s1=s;
disp([N, s])
N=N*2;
end
Step approximation
2.000000000000000 0.296798162037338
4.000000000000000 0.221110701061077
8.000000000000000 0.199193261253196
16.000000000000000 0.193453482148226
32.000000000000000 0.192000466701357
64.000000000000000 0.191636049869488
1.0e+002 *
1.280000000000000 0.001915448724313
c) The following the program of c).
clear; close;
format long
N=2;err=1;s1=0;
f=@(x) exp(-x.^2).*cos(x)+exp(-1./x.^2).*cos(1./x).*(1./x.^2);
disp('Step approximation')
while err>=10^(-4)/2
x0=0;x1=1; h=(x1-x0)/N;
s=1*h/2;
for i=1:N-1
s=s+h*f(x0+h*i);
end
s=s+f(x1)*h/2;
err=2*abs(s1-s)/(2^4-1);
s1=s;
disp([N, 2*s])
N=N*2;
end
Step approximation
2.000000000000000 1.351740116024899
4.000000000000000 1.374766532917430
8.000000000000000 1.379371257478457
16.000000000000000 1.380129499702764
32.000000000000000 1.380323735398339
64.000000000000000 1.380372270845669
Trapezoidal Rule:
clear; close;
format long
N=2;err=1;x0=0;x1=1;s1=0;r=1.1;
g=@(x) exp(x).*log(x);
f=@(x) r^2*exp(x.^r).*x.^(r-1).*log(x);
disp('Step approximation')
while err>=10^(-5)/2
h=(x1-x0)/N;
s=0*h/2;
for i=1:N-1
s=s+h*f(x0+h*i);
end
s=s+f(x1)*h/2;
err=abs(s-s1)/(2^2-1);
s1=s;
disp([N, s])
N=N*2;
end
Step approximation
2.000000000000000 -0.623854591742896
4.000000000000000 -0.940995768035230
8.000000000000000 -1.112592600798488
16.000000000000000 -1.207102951940195
32.000000000000000 -1.258874395487081
64.000000000000000 -1.286856326016077
1.0e+002 *
1.280000000000000 -0.013017605045802
1.0e+002 *
2.560000000000000 -0.013095928079541
1.0e+002 *
5.120000000000000 -0.013136609482607
1.0e+003 *
1.024000000000000 -0.001315753063183
1.0e+003 *
2.048000000000000 -0.001316819945001
1.0e+003 *
4.096000000000000 -0.001317360119595
1.0e+003 *
8.192000000000000 -0.001317631941802
1.0e+004 *
1.638400000000000 -0.000131776800227
1.0e+004 *
3.276800000000000 -0.000131783579334
1.0e+004 *
6.553600000000000 -0.000131786943298
1.0e+005 *
1.310720000000000 -0.000013178860660
1.0e+005 *
2.621440000000000 -0.000013178942640
Step approximation
2.000000000000000 -0.785252399689505
4.000000000000000 -1.102752633918305
8.000000000000000 -1.230956958968851
16.000000000000000 -1.282945971385789
32.000000000000000 -1.303961853848449
64.000000000000000 -1.312392276358369
1.0e+002 *
1.280000000000000 -0.013157431784960
1.0e+002 *
2.560000000000000 -0.013170629138336
1.0e+002 *
5.120000000000000 -0.013175782571961
1.0e+003 *
1.024000000000000 -0.001317777944723
1.0e+003 *
2.048000000000000 -0.001317854789939
1.0e+003 *
4.096000000000000 -0.001317884182432
1.0e+003 *
8.192000000000000 -0.001317895364322
Step approximation
2.000000000000000 -0.890018597344417
4.000000000000000 -1.192608285867874
8.000000000000000 -1.282681369490746
16.000000000000000 -1.308174900682751
32.000000000000000 -1.315243410237071
64.000000000000000 -1.317180972500353
1.0e+002 *
1.280000000000000 -0.013177077490157
1.0e+002 *
2.560000000000000 -0.013178500249506
1.0e+002 *
5.120000000000000 -0.013178882384224
1.0e+003 *
1.024000000000000 -0.001317898452849
Step approximation
2.000000000000000 -0.883618487324026
4.000000000000000 -1.195009443541396
8.000000000000000 -1.286108348460041
16.000000000000000 -1.309909614973187
32.000000000000000 -1.315905252904677
64.000000000000000 -1.317403523621169
1.0e+002 *
1.280000000000000 -0.013177775970825
1.0e+002 *
2.560000000000000 -0.013178710274392
1.0e+002 *
5.120000000000000 -0.013178943723826
1.0e+003 *
1.024000000000000 -0.001317900206935
Step approximation
2.000000000000000 -0.067756290305606
4.000000000000000 -0.605305883381251
8.000000000000000 -1.043582590843233
16.000000000000000 -1.235910892754504
32.000000000000000 -1.296223780878548
64.000000000000000 -1.312400159150013
1.0e+002 *
1.280000000000000 -0.013165213457023
1.0e+002 *
2.560000000000000 -0.013175566157121
1.0e+002 *
5.120000000000000 -0.013178157465841
1.0e+003 *
1.024000000000000 -0.001317880548928
1.0e+003 *
2.048000000000000 -0.001317896750741
1.0e+003 *
4.096000000000000 -0.001317900801271
Simpson Rule:
close; clear;
N=2;r=1.1;x0=0;x1=1; S1=0;err=1;
g=@(x) exp(x).*log(x);
f=@(x) r^2*exp(x.^r).*x.^(r-1).*log(x);
disp('Step approximation')
while err>=(1e-5)/2
h=(x1-x0)/2/N;
S=0;
for i=1:2*N
if (floor(i/2)-i/2==0) a=2;
else a=4;
end
S=S+a*f(x0+i*h);
end
S=S-f(x1);
S=h/3*S;
err=abs(S1-S)/15;
S1=S;
disp([N, S])
N=2*N;
end
r=1.1
Step approximation
2.000000000000000 -1.046709493466008
4.000000000000000 -1.169791545052907
8.000000000000000 -1.238606402320764
16.000000000000000 -1.276131543336043
32.000000000000000 -1.296183636192408
64.000000000000000 -1.306728564101631
1.0e+002 *
1.280000000000000 -0.013122035757454
1.0e+002 *
2.560000000000000 -0.013150169950296
1.0e+002 *
5.120000000000000 -0.013164504348236
1.0e+003 *
1.024000000000000 -0.001317175572273
1.0e+003 *
2.048000000000000 -0.001317540177793
1.0e+003 *
4.096000000000000 -0.001317722549204
1.0e+003 *
8.192000000000000 -0.001317813355760
1.0e+004 *
1.638400000000000 -0.000131785839036
r=1.5
Step approximation
2.000000000000000 -1.208586045327905
4.000000000000000 -1.273691733985700
8.000000000000000 -1.300275642191435
16.000000000000000 -1.310967148002669
32.000000000000000 -1.315202417195009
64.000000000000000 -1.316860145875236
1.0e+002 *
1.280000000000000 -0.013175028256128
1.0e+002 *
2.560000000000000 -0.013177500383170
1.0e+002 *
5.120000000000000 -0.013178445072319
1.0e+003 *
1.024000000000000 -0.001317880405011
r=2
Step approximation
2.000000000000000 -1.293471515375693
4.000000000000000 -1.312705730698371
8.000000000000000 -1.316672744413419
16.000000000000000 -1.317599580088510
32.000000000000000 -1.317826826588113
64.000000000000000 -1.317883341187503
r=3
Step approximation
2.000000000000000 -1.298806428947186
4.000000000000000 -1.316474650099589
8.000000000000000 -1.317843370477569
16.000000000000000 -1.317903798881840
r=10
Step approximation
2.000000000000000 -0.784489081073132
4.000000000000000 -1.189674826663894
8.000000000000000 -1.300020326724927
16.000000000000000 -1.316328076919896
32.000000000000000 -1.317792285240502
64.000000000000000 -1.317895074553085
1.0e+002 *
1.280000000000000 -0.013179017057153
6. Solution.
b)
clear; close;
format long
N=2;err=1;
x0=0;x1=2/pi;s1=100;
f=@(x) x.^2.*sin(1./x);
disp('Step approximation')
while err>=10^(-3)/2
h=(x1-x0)/N;
s=0*h/2;
for i=1:N-1
s=s+h*f(x0+h*i);
end
s=s+f(x1)*h/2;
err=abs(s1-s);
s1=s;
disp([N, s])
N=N*2;
end
Result:
Step approximation
2.000000000000000 0.064503068866399
4.000000000000000 0.063673513579651
8.000000000000000 0.059387564754992
16.000000000000000 0.058902335031313
c)
clear; close;
format long
N=2;err=1;
x0=0;x1=1; s1=111;
f=@(x) 3*cos(x.^3);
disp('Step approximation')
while err>=10^(-8)/2
h=(x1-x0)/N;
s=f(x0)*h/2;
for i=1:N-1
s=s+h*f(x0+h*i);
end
s=s+f(x1)*h/2;
err=abs(s1-s)/3;
s1=s;
disp([N, s])
N=N*2;
end
Step approximation
2.000000000000000 2.643523230245098
4.000000000000000 2.755912152904892
8.000000000000000 2.785264907428469
16.000000000000000 2.792648819817276
32.000000000000000 2.794497055948642
64.000000000000000 2.794959246696237
1.0e+002 *
1.280000000000000 0.027950748024685
1.0e+002 *
2.560000000000000 0.027951036919146
1.0e+002 *
5.120000000000000 0.027951109143075
1.0e+003 *
1.024000000000000 0.002795112719908
1.0e+003 *
2.048000000000000 0.002795113171308
1.0e+003 *
4.096000000000000 0.002795113284158
1.0e+003 *
8.192000000000000 0.002795113312370
1.0e+004 *
1.638400000000000 0.000279511331942
6. Solution.
First we plot the graph of f, p_1(x), p_3(x) and p_5(x).
close;clear;
x0=-1;x1=1; x=x0:0.001:x1;
f=@(x) sin(pi/2*x);
p5= @(x) pi* x/2 - (pi^3* x.^3)/48 + (pi^5 *x.^5)/3840;
p3=@(x) pi* x/2 - (pi^3* x.^3)/48;
p1=@(x) pi* x/2;
plot(x,p5(x),'--')
hold on
plot(x,p3(x),'-.')
hold on
plot(x,p1(x),':')
hold on
plot(x,f(x))
legend('n=5','n=3','n=1','analytic')
And also we plot the error of p_1(x), p_3(x) and p_5(x) with respect to f.
close;clear;
x0=-1;x1=1; x=x0:0.001:x1;
f=@(x) sin(pi/2*x);
p5= @(x) pi* x/2 - (pi^3* x.^3)/48 + (pi^5 *x.^5)/3840;
p3=@(x) pi* x/2 - (pi^3* x.^3)/48;
p1=@(x) pi* x/2;
plot(x,abs(f(x)-p5(x)),'--')
hold on
plot(x,abs(f(x)-p3(x)),'-.')
hold on
plot(x,abs(f(x)-p1(x)))
legend('n=5','n=3','n=1');