实验内容 |
实 验 步 骤、过 程
1.(1)
x = [0:pi/30:2*pi]';
y = [exp(-x).*cos(x+pi/3)];
S = trapz(x,y) % trapz函数
y1=inline('exp(-x).*cos(x+pi/3)','x');
y2=quad(y1,0,2*pi) % quad函数
y3=quadl(y1,0,2*pi) % quadl函数
f1=@(x)exp(-x).*cos(x+pi/3); % 定义被积函数
y1=quadgk(f1,0,2*pi) % quadgk函数
f1=@(x)exp(-x).*cos(x+pi/3);
y1=integral(f1,0,2*pi) % integral函数
(2)
x = [0:0.01:1]';
y = [3./(1+5.*x.*x)];
S = trapz(x,y) % trapz函数
y1=inline('3./(1+5.*x.*x)','x');
y2=quad(y1,0,1) % quad函数
y3=quadl(y1,0,1) % quadl函数
f2=@(x)3./(1+5.*x.*x);
y2=quadgk(f2,0,1) % quadgk函数
f2=@(x)3./(1+5.*x.*x);
y2=integral(f2,0,1) % integral函数
2.
编写文件:在matlab中创建新脚本,并保存,然后在命令行执行。
function ss=su(t,a,b,n)
dx=(b-a)/n;
syms x;
ff=x*exp(x)*sin(x);
xx=a:dx:b;
ss=0;
if t==1
for i =1:n
f1=subs(ff,x,xx(i));
ss=ss+dx*f1;
end
elseif t==2
for i =1:n
f1=subs(ff,x,xx(i+1));
ss=ss+dx*f1;
end
elseif t==3
for i=1:n
yy=(xx(i)+xx(i+1))/2;
f1=subs(ff,x,yy);
ss=ss+dx*f1;
end
elseif t==4
for i =1:n
f1=subs(ff,x,xx(i));
f2=subs(ff,x,xx(i+1));
ss=ss+dx*(f1+f2)/2;
end
else
for i=1:n
f1=subs(ff,x,xx(i));
f2=subs(ff,x,xx(i+1));
yy=(xx(i)+xx(i+1))/2;
f12=subs(ff,x,yy);
ss=ss+dx*(f1+f2+4*f12)/6;
end
end
输入:(t,a,b,n) % t 用于控制积分方法、【a,b】为对应积分区间、n表示分割份数
方法一:左矩形法
ss=vpa(su(1,0,1,200))
方法二:右矩形法
ss=vpa(su(2,0,1,200))
方法三:中矩形法
ss=vpa(su(3,0,1,200))
方法四:梯形法
ss=vpa(su(4,0,1,200))
方法五:辛普生方法
ss=vpa(su(5,0,1,200))
3.(1)
syms x y;
f=x*sin(y)+exp(x)
f1=int(f,0,1)
f2=int(f1,x^2,3*x) % int函数
f=@(x,y)x*sin(y)+exp(x)
I=dblquad(f,0,1,x^2,3*x) % dblquad函数
%会报错很正常,因为函数不符合要求
f=@(x,y)x.*sin(y)+exp(x);
ymin=@(x)x.^2;
ymax=@(x)3.*x;
I=integral2(f,0,1,ymin,ymax) % integral2函数
(2)
syms x y;
f=3*x*exp(y^2)+2*y*sin(x)
f1=int(f,0,1)
f2=int(f1,0,1) % int函数
f=@(x,y)3*x*exp(y^2)+2*y*sin(x)
I=dblquad(f,0,1,0,1) % dblquad函数
f=@(x,y)3.*x.*exp(y.^2)+2.*y.*sin(x);
I=integral2(f,0,1,0,1) % integral2函数
答案供参考,如有错误请自行改正,本人只是随意分享之前的作业,代码均来源于网络+个人稍微修改,认为有用可参考哈~