Matlab—微积分运算 1. 符号方法1.1 极限1.2 求导1.3 偏导1.4 积分 2. 数值方法2.1 梯度2.2 定积分2.3 高精度数值积分2.4 重积分2.5 计算椭圆的周长
1. 符号方法 1.1 极限
代码求解
syms n x; % 定义 n x 为符号变量limit((1+x/n)^n,n,inf) % 求n趋向于正无穷时的极限 1.2 求导
1.2.1
代码求解
syms x; % 定义 x 为符号变量y=(1-cos(2.*x))./x;dx1=diff(y) % 求函数的一阶导数dx2=diff(y,2) % 求函数的二阶导数
1.2.2
代码求解
f=inline('(sin(x)).^2+(cos(x)).^2'); % 定义函数dx1=diff(f([pi./6,0.001+pi./6]))./0.001dx2=diff(f([pi./4,0.001+pi./4]))./0.001dx3=diff(f([pi./3,0.001+pi./3]))./0.001dx4=diff(f([pi./2,0.001+pi./2]))./0.001
1.2.3
代码求解
f=inline('(x.^2+1).^(0.5)'); % 定义函数dx1=diff(f([1,0.001+1]))./0.001dx2=diff(f([2,0.001+2]))./0.001dx3=diff(f([3,0.001+3]))./0.001 1.3 偏导
1.3.1
代码求解
syms x y; % 定义 x y 为符号变量f=x^2*exp(-y) % f为括号内的函数s=diff(f,x,2) % f对x的2阶导函数t=diff(f,x); % f对x的导函数t=diff(t,y); % t对y的导函数t=subs(t,x,1); % 将t中的变量x替换为变量1t=subs(t,y,2) % 将t中的变量y替换为变量2
1.3.2
代码求解
syms x y;s=diff(y^2*sin(x^2),x,2) % 对x的2阶导函数
1.3.3
代码求解
syms x y;t=diff(y^2*sin(x^2),x,2);t=diff(t,y)
1.3.4
代码求解
syms x y;t=diff(y^2*sin(x^2),x,2);t=diff(t,y);t=subs(t,x,pi)t=subs(t,y,1) 1.4 积分
1.4.1
代码求解
syms t; % 定义 t 为符号变量f=exp(-t)+sin(t); % f为括号内的函数s=int(f,t) % f关于变量t的不定积分
1.4.2
代码求解
syms x ; % 定义 x 为符号变量F=3*sin(x^2) /x; % F为待定积分f=int(F,1,4) % 求F在1-4区间内的定积分,特殊函数sinint(a)表示积分int(sin(a*x) /x,0,1)D=vpa(f,5) % 用vpa找数值解
1.4.3
代码求解
syms x y; % 定义 x 为符号变量F=int(2*sqrt(1-x^2),y,- sqrt(1-x^2), sqrt(1-x^2)); % 求不定积分f=int(F,x,-1,1) % 求F在1-3区间内的定积分,
1.4.4
代码求解
syms x;f=1./(1+x.^4+x.^8);q=int(f)
1.4.5
代码求解
syms x;f=1./((asin(x).^2).*sqrt(1-x.^2));q=int(f)
1.4.6
代码求解
syms x;f=exp(x).*(1+exp(x)).^2;q=int(f)
1.4.7
代码求解
syms x y;iy=int((x+y-x*y),y,0,1-x);q=int(iy,x,0,1)
1.4.8
代码求解
syms u v r;iy=int(r^2*sin(v),r,0,2^0.5);iiy=int(iy,v,0,pi/4);q=int(iiy,u,0,2*pi) 2. 数值方法 2.1 梯度
代码求解
xa=-2:1:2;ya=-2:1:2;[x,y]=meshgrid(xa,ya);z=x.*exp(-x.^2-y.^2);[px,py]=gradient(z,xa,ya) 2.2 定积分
2.2.1
代码求解
t=0:0.5:1;y=exp(-t)+sin(t);z=trapz(t,y) % t是表示积分区间的离散化向量,y是与t同维数的向量,表示被积函数;z为返回积分的近似值(梯形积分法)
2.2.2
代码求解
x=1:0.05:4;y=3.*sin(x.^2)./x;z=trapz(x,y) % x是表示积分区间的离散化向量,y是与x同维数的向量,表示被积函数;z返回积分的近似值(梯形积分法) 2.3 高精度数值积分
2.3.1
代码求解
z=quadl(@(t)exp(-t)+sin(t),0,1) % 函数在区间[0,1]上的定积分(高精度Lobatto积分法)
2.3.2
代码求解
z=quadl(@(x)3.*sin(x.^2)./x,1,4) % 函数在区间[1,4]上的定积分(高精度Lobatto积分法)
2.3.3
代码求解
z= integral (@(x)exp(-x.^2),-1,1) % 函数在区间[-1,1]上的定积分
2.3.4
代码求解
fun= @(x)exp(-x.^2) .*log(x).^2;q=integral(fun,0,Inf) % 函数在区间[0,inf]上的定积分
2.3.5
代码求解
f=inline('(cos(t.^2)+4.*sin((2.*t).^2)+1).^(1/2)','t');isim=quadl(f,0,2*pi)
2.3.6
代码求解
f=inline('(log(1+x))./(1+x.^2)','x');isim=quadl(f,0,1)
2.3.7
代码求解
f=inline('exp(x).*(1+exp(x)).^2','x');isim=quadl(f,0,log(2)) 2.4 重积分
2.4.1
代码求解
f=@(x,y)2.*(1-x.^2).^0.5;q=quad2d(f,-1,1,@(x)(-1).*(1-x.^2).^0.5,@(x)(1-x.^2).^0.5) % 函数在区间[-1,1]上的二重积分
2.4.2
代码求解
f=@(x,y)x+y-x.*y;q=quad2d(f,0,1,0,@(x)(1-x))
2.4.3
代码求解
f=@(t,y,z)y.*sin(t)+z.*cos(t);q=triplequad(f,0,pi,0,1,-1,1) % 函数在区间[0,pi],[0,1],[-1,1]上的三重积分
2.4.4
代码求解
fun=@(u,v,r)(r.^2).*sin(v)+0.*u;q=triplequad(fun,0,2*pi,0,pi/4,0,2^0.5) 2.5 计算椭圆的周长
转化为积分形式
代码求解
s=quadl(@(x)2.*((16+5.*x.^2)./(4-x.^2)).^0.5,0,2)