MATLAB quad ( ) quad1 ( -). , , .. , ( ). , quad1 quad, (.., , ). quad quad1 (, , MATLAB), . : , :
q=quad (fun, a, b)
q1=quad1 (fun, a, b)
fun ; a b .
() , , ( 10-6).
, quad quad1. :
>> f=inline ('1-x+x.^2-x.^3', 'x');
>> TolX=1e-5;
>> [I, cnt]=quad (f, a, b, TolX);
I=
-12.749999999999996
cnt=
>> [I,cnt]=quad1 (f, a, b, TolX)
I=
-12.750000000000002
cnt=
, , - , . , , quad , quad (13 18). , , , . , ,
>> f=inline ('sin(x)', 'x');
>> TolX=1e-5;
>> [I, cnt]=quad (f, -pi, pi, TolX);
I=
2.220446049250313e-16
cnt=
>> [I,cnt]=quad1 (f, -pi, pi, TolX)
I=
2.015274060089494e-17
cnt=
.. quad1 ( 18 21 quad).
.
-. -.
function Lab_3_5
a=input(' a=');
b=input(' b=');
eps=input(' eps=');
nmax=input(' nmax=');
|
|
fprintf('\n S :');
% MATLAB
f=@(x)p(x);
squad=quad(f,a,b);
fprintf('\n - ( quad), S=%10.3f',squad);
%
[spr,npr]=INT_Pr(a,b,eps,nmax);
fprintf('\n - , S=%10.3f',spr);
fprintf(' (n=%4d)',npr);
[str,ntr]=INT_Tr(a,b,eps,nmax);
fprintf('\n - , S=%10.3f',str);
fprintf(' (n=%4d)',ntr);
[ssimps,nsimps]=INT_Simps(a,b,eps,nmax);
fprintf('\n - , S=%10.3f',ssimps);
fprintf(' (n=%4d)',nsimps);
end
function [s,nf]=INT_Pr(a,b,eps,nmax)
n=4;
s1=pr(a,b,n);
n=2*n;
s2=pr(a,b,n);
while(abs(s2-s1)>eps&n<nmax)
s1=s2;
n=2*n;
s2=pr(a,b,n);
end
s=s2;
nf=n;
end
function [s,nf]=INT_Tr(a,b,eps,nmax)
n=4;
s1=tr(a,b,n);
n=2*n;
s2=tr(a,b,n);
while(abs(s2-s1)>eps&n<nmax)
s1=s2;
n=2*n;
s2=tr(a,b,n);
end
s=s2;
nf=n;
end
function [s,nf]=INT_Simps(a,b,eps,nmax)
n=4;
s1=simps(a,b,n);
n=2*n;
s2=simps(a,b,n);
while(abs(s2-s1)>eps&n<nmax)
s1=s2;
n=2*n;
s2=simps(a,b,n);
end
s=s2;
nf=n;
end
function y=pr(a,b,n)
h=(b-a)/n;
x=a+h/2;
s=0;
for i=1:n
s=s+p(x);
x=x+h;
end
y=h*s;
end
function y=tr(a,b,n)
h=(b-a)/n;
x=a;
s=(p(a)+p(b))/2;
for i=2:n
x=x+h;
s=s+p(x);
end
y=h*s;
end
function y=simps(a,b,n)
h=(b-a)/n;
x=a+h;
s=p(a)+p(b);
z=1;
for i=2:n
s=s+(3+z)*p(x);
z=-z;
x=x+h;
end
y=h/3*s;
end
function y=p(x)
y=1-x+x.^2-x.^3;
end
a=0, b=3, eps=0.001,
nmax=1000:
S :
- ( quad), S= -12.750
- , S= -12.750 (n= 256)
- , S= -12.750 (n= 256)
- , S= -12.750 (n= 8)
.
1. MATLAB , , quad, . , .. , ( ). quad , . : , :
q=quad(fun,a,b), fun ( @); a b . () , , ( ). .
2. : pr INT_Pr ; tr INT_Tr ; simps INT_Simps .
|
|
3. ( nmax) ( ,
) , .
n , ( eps), . : nmax=1000, eps=0.001.