中国石油大学(华东)数学实验(MATLAB)复习

作者:张世琛

函数的导数

$$ 求函数y=log(x+sqrt{1+x^2})的一阶和二阶导数 $$

syms x;
y=log(x+sqrt(1+x^2));
dydx=diff(y,x);
dydx=simplify(dydx)
dydx2=diff(y,x,2);
dydx2=simplify(dydx2)

隐函数求导

$$ 设e^{y}+xy-e=0求frac{dy}{dx} 公式frac{dy}{dx}=-frac{f_{x}}{f_{y}} $$

syms x y;
f=exp(y)+x*y-exp(1);
dfdx=diff(f,x);
dfdy=diff(f,y);
dydx=-dfdx/dfdy

参数方程求导

$$ 设参数方程left{egin{matrix} x=x(t)& y=y(t)& end{matrix} ight. 确定的函数y=f(x),则frac{dy}{dx}=frac{y'(t)}{x'(t)} $$ $$ 设left{egin{matrix} x=a(t-sin(t))& y=a(1-cos(t))& end{matrix} ight. 求frac{dy}{dx} $$

syms a t;
dxdt=diff(a*(t-sin(t)));
dydt=diff(a*(1-cos(t)));
dydx=dydt/dxdt

积分

$$ 1)int frac{1}{1+sqrt{1-x^2}}dx 2)int_{0}^{1}frac{1}{1+sqrt{1-x^2}}dx 3)int_{0}^{infty}frac{sinx}{x}dx $$

syms x;
I=int(1/(1+sqrt(1-x^2)));
pretty(I)
int(1/(1+sqrt(1-x^2)),0,1)
int(sin(x)/x,0,inf)

平面图形的面积

$$ A=int_{a}^{b}|y_2(x)-y_1(x)|dx $$ $$ 求由y=e^x,y=e^{-x},x=1所围成图形的面积 $$

x=-1:0.1:2;
y1=exp(-x);
y2=exp(x);
plot(x,y1,x,y2);
hold on
plot([1 1],[-1 7]);
x=0:0.1:1;
y1=exp(-x);
y2=exp(x);
fill([x fliplr(x)],[y1 fliplr(y2)],'b')
syms x;
y1=exp(-x);
y2=exp(x);
a=0;
b=1;
area=int(abs(y1-y2),a,b)

旋转体体积

$$ V=int_{a}^{b}pi[f(x)]^2dx $$ $$ 求椭圆y=frac{b}{a}sqrt{a^2-x^2}绕x轴旋转而成的 椭球体积 $$

a=1;
b=2;
x=-a:0.1:a;
f=b/a*sqrt(a^2-x.^2);
[X,Y,Z]=cylinder(f);
Z=Z*a*2-a;
surf(X,Y,Z)
syms x a b;
f=b/a*sqrt(a^2-x^2);
y=int(pi*f^2,-a,a)

已知截面面积的立体体积

$$ V=int_{a}^{b}A(x)dx $$ $$ 求已知截面面积A(x)=3x^4+6x-5,xin [0,5]的立体体积 $$

syms x;
A=3*x^4+6*x-5;
int(A,0,5)

平面曲线的弧长

$$ S=int_{a}^{b}sqrt{1+y'^2}dx S=int_{alpha}^{eta}sqrt{varphi'^2(t)+psi'^2(t)}dt S=int_{alpha}^{eta}sqrt{r^2( heta)+r'^2{ heta}}d heta left{egin{matrix} x=a(t-sint) y=a(1-cost) end{matrix} ight. (0<=t<=2pi)的长度 $$

a=1;
syms t;
x=a*(t-sin(t));
y=a*(1-cos(t));
ezplot(x,y,[0,2*pi]);
grid on;
syms t a;
x=a*(t-sin(t));
y=a*(1-cos(t));
int(sqrt(diff(x)^2+diff(y)^2),0,2*pi)

单调区间

$$ 求函数y=x^3-2*x+1的 单调区间 $$

syms x;
y=x^3-2*x+1;
dydx=diff(y);
x=-4:0.1:4;
y=eval(y);
dydx=eval(dydx);
plot(x,y,x,dydx);
xlabel('x');
ylabel('y,dy.dx');
legend('y(x)','dy/dx');
grid on
syms x;
y=x^3-2*x+1;
dydx=diff(y);
zeroPoint=solve(dydx,x);
subs(dydx,x,-1)
subs(dydx,x,0)
subs(dydx,x,1)
%1 -2 1

$$ 在left (-infty,-frac{sqrt{6}}{3} ight ) quadleft (frac{sqrt{6}}{3},+infty ight )单调递增 在left (-frac{sqrt{6}}{3},frac{sqrt{6}}{3} ight )单调递减 $$

凹凸区间

$$ 求函数y=frac{1}{1+2x^2}的凹凸区间和拐点 $$

syms x;
y=1/(1+2*x^2);
dydx2=diff(y,2);
x=[-3:0.1:3];
y=eval(y);
dydx2=eval(dydx2);
plot(x,y,x,dydx2,'--');
xlabel('x');
ylabel('y, dy/dx2');
legend('函数','二阶导数');
axis([-3,3,-5,2]);
grid on
syms x;
y=1/(1+2*x^2);
dydx2=diff(y,2);
zeroPoint=solve(dydx2,x);
zeroPoint=simplify(zeroPoint)
subs(y,x,double(zeroPoint))

$$ 在left (-infty,frac{1}{sqrt{6}} ight ) quadleft (frac{1}{sqrt{6}},+infty ight )二阶导数大于零,下凸 在left (-frac{1}{sqrt{6}},frac{1}{sqrt{6}} ight )二阶导数小于零,上凸 两个拐点分别是left (-frac{1}{sqrt{6}},frac{3}{4} ight )和 left (frac{1}{sqrt{6}},frac{3}{4} ight ) $$

极值

$$ 求函数y=frac{x}{1+x^2}的极值 $$

syms x;
y=x/(1+x^2);
ezplot(y,[-10,10]);
利用极值判定定理
syms x;
y=x/(1+x^2);
zeroPoint=solve(diff(y),x);
%-1 1
%驻点为x=1或x=-1
subs(diff(y,2),x,double(zeroPoint));
% -1/2 1/2
%二阶导
%x=-1 二阶导为1/2 极小值
%x=1 二阶导为-1/2 极大值
subs(y,x,double(zeroPoint))
%-1/2 1/2
%极小值为-1/2 极大值1/2
利用优化函数
f=@(x) x/(1+x^2);
[xmin,ymin]=fminbnd(f,-2,0);%在(-2,0)求极小值
ff=@(x) -x/(1+x^2);
xmax=fminbnd(ff,0,2);%求极大值转化为求极小值
ymax=f(xmax);

拉格朗日中值定理

$$ 对函数f(x)=ln(1+x)在[0,4]上观察拉格朗日中值定理的几何意义 $$

syms x;
f=log(1+x);
figure;
ezplot(f,[0,4]);
hold on;
ab=[0,4];
fab=subs(f,ab);
kab=(fab(2)-fab(1))/(ab(2)-ab(1));
plot(ab,fab);
hold off
syms x;
f=log(1+x);
hold on;
ab=[0,4];
fab=subs(f,ab);
kab=(fab(2)-fab(1))/(ab(2)-ab(1));
xi=eval(solve(diff(f)-kab))
figure;
ezplot(f,[0,4]);
hold on;
plot(ab,fab);
y=subs(f,x,xi)+kab*(x-xi);
ezplot(y,[0,4]);
axis([0,4,-0.5,2]);
hold off;

偏导数及高阶导数

$$ 设z=e^{2x}(x+y^{2}+2y)求frac{partial z}{partial x}, frac{partial z}{partial y},frac{partial ^2 z}{partial x^2},frac{partial ^2 z}{partial y^2},frac{partial ^2 z}{partial xpartial y} $$

syms x y;
z=exp(2*x)*(x+y^2+2*y);
dzdx=diff(z,x)
dzdy=diff(z,y)
dzdx2=diff(z,x,2)
dxdy2=diff(z,y,2)
dzdxdy=diff(diff(z,x),y)

多元函数全微分

$$ 已知z=(x^2+y^2)sin(xy),求dz $$

syms x y
z=(x^2+y^2)*sin(x*y);
dz=diff(z,x)*'dx'+diff(z,y)*'dy'

$$ 已知z=3x^2y^3+ln(xy)求当x=2,y=3,Delta x=0.02,Delta y=0.01时,求dz $$

syms x y;
z=3*x^2*y^3+log(x*y);
dzdx=diff(z,x);
dzdy=diff(z,y);
x=2;y=3;
dzdx=eval(dzdx);
dzdy=eval(dzdy);
dx=0.02;dy=0.01;
dz=dzdx*dx+dzdy*dy

二重积分

$$ iint_{D} xy^2dxdy 其中D为由x+y=2,x=sqrt{y},y=2所围成有界区域 $$

syms x y;
[x y]=solve(y==2-x,y==x^2,x>=0,x,y);
xpoints=[vpa(x) 0 sqrt(2)];
a=min(xpoints);
b=max(xpoints);
x=a-1:0.1:b+1;
y1=2-x;
y2=x.^2;
y3=0*x+2;
plot(x,y1,x,y2,x,y3);
hold on
x=a:0.1:1;
y1=2-x;
y3=0*x+2;
fill([x fliplr(x)],[y1 fliplr(y3)],'b');
x=1:0.1:b;
y2=x.^2;
y3=x*0+2;
fill([x fliplr(x)],[y2 fliplr(y3)],'b');
syms x y
int(int(x*y^2,x,2-y,sqrt(y)),y,1,2)

$$ 计算iint_{D}e^{-(x^2+y^2)}dxdyquad D为x^2+y^2leqslant 1 $$

syms x y r theta;
x=r*cos(theta);
y=r*sin(theta);
xy2r=simplify(x^2+y^2);
f=exp(-xy2r);
int(int(f*r,r,0,1),theta,0,2*pi)

三重积分

$$ iiint (x^2+y^2+z)dxdydz 是由曲面z=sqrt{2-x^2-y^2}与z=sqrt{x^2+y^2}围成 $$ $$ 曲面z=sqrt{2-x^2-y^2}与z=sqrt{x^2+y^2}交线在xoy平面上的投影为 left{egin{matrix} sqrt{2-x^2-y^2}=sqrt{x^2+y^2} z=0 end{matrix} ight. 得 left{egin{matrix} x^2+y^2=1 z=0 end{matrix} ight. $$

柱面坐标

$$ left{egin{matrix} x=rsin heta y=rcos heta z=z end{matrix} ight. $$ $$ iiint f(x,y,z)dxdydz=f(rsin heta,rcos heta,z)rdrd heta dz $$

syms x y z;
z1=sqrt(2-x^2-y^2);
z2=x^2+y^2;
[X Y]=meshgrid(-1:0.1:1);
Z1=eval(subs(z1,{x,y},{X,Y}));
Z2=eval(subs(z2,{x,y},{X,Y}));
surf(X,Y,Z1);
hold on
surf(X,Y,Z2)
xlabel('x轴');
ylabel('y轴');
syms t theta;
x=r*cos(theta);
y=r*sin(theta);
f=x^2+y^2+z;
z1=sqrt(2-x^2-y^2);
z2=sqrt(x^2+y^2);
int(int(int(f*r,z,z2,z1),r,0,1),theta,0,2*pi)
球坐标

$$ left{egin{matrix} x=rsin varphi cos heta x=rsin varphi sin heta z=rcosvarphi end{matrix} ight. $$ $$ iiint f(x,y,z)dxdydz=f(rsin varphi cos heta,rsin varphi sin heta,rcosvarphi)r^2sinvarphi drd heta dvarphi $$

syms r phi theta;
x=r*sin(phi)*cos(theta);
y=r*sin(phi)*sin(theta);
z=r*cos(phi);
f=x^2+y^2+z;
int(int(int(f*r^2*sin(phi),r,0,sqrt(2)),phi,0,pi/4),theta,0,2*pi)

求弧长

$$ int_L f(x,y)ds=int_{a}^{b} f(x(t),y(t))sqrt{x'^2(t)+y'^2(t))}dt int_L f(x,y,z)ds=int_{a}^{b} f(x(t),y(t),z(t))sqrt{x'^2(t)+y'^2(t)+z'^2(t))}dt $$ $$ 计算int_Lsqrt{y}ds L为y=x^2上O(0,0)到B(1,1)一段弧 $$

syms t;
x=t;
y=t^2;
z=0;
f=sqrt(y);
s=int(f*sqrt(diff(x,t)^2+diff(y,t)^2+diff(z,t)^2),t,0,1)

$$ 求锥面x^2+y^2=z^2,z>=0与柱面x^2+y^2=x交线的长度 $$ $$ left{egin{matrix} x=cos^2(t) y=sin(t)cos(t); z=cos(t); end{matrix} ight. tin[-pi/2,pi/2] $$

u=linspace(0,pi,50);
figure;
v=linspace(0,pi*2,50);
[u,v]=meshgrid(u,v);
x=sin(u).*cos(v);
y=sin(u).*sin(v);
z=sin(u);
surf(x,y,z)
hold on
t=linspace(0,pi*2,50);
z1=linspace(0,1.2,50);
[t,z1]=meshgrid(t,z1);
surf(cos(t).^2,cos(t).*sin(t),z1);
t=linspace(-pi/2,pi/2,50);
figure
plot3(cos(t).^2,cos(t).*sin(t),cos(t));
syms t;
x=cos(t)^2;
y=cos(t)*sin(t);
z=cos(t);
f=1;
s=int(f*sqrt(simplify(diff(x,t)^2+diff(y,t)^2)+diff(z,t)^2),t,-pi/2,pi/2)

多元函数极值

$$ 求f(x,y)=x^3-y^3+3x^2+3y^2-9x的极值 $$

高等数学法
syms x y;
f=x^3-y^3+3*x^2+3*y^2-9*x;
dfdx=diff(f,x);
dfdy=diff(f,y);
[x0,y0]=solve(dfdx,dfdy,x,y);
xmax=[];
xmin=[];
for k=1:length(x0)
    A=subs(diff(dfdx,x),[x,y],[x0(k),y0(k)]);
    B=subs(diff(dfdx,y),[x,y],[x0(k),y0(k)]);
    C=subs(diff(dfdy,y),[x,y],[x0(k),y0(k)]);
    if double(A*C-B^2)>0
        if double(A)<0
            xmax=[xmax;[x0(k),y0(k)]];
        else
            xmin=[xmin;[x0(k),y0(k)]];
        end
    end
end
if ~isempty(xmax)
    fmax=subs(f,[x,y],[xmax(:,1),xmax(:,2)]);
else
    fmax=[];
end
if ~isempty(xmin)
    fmin=subs(f,[x,y],[xmin(:,1),xmin(:,2)]);
else
    fmin=[];
end
[xmax fmax]
[xmin fmin]
等高线法
x=-4:0.2:3;
y=-1:0.2:3;
[x,y]=meshgrid(x,y);
f=x.^3-y.^3+3*x.^2+3*y.^2-9*x;
figure
surf(x,y,f);
figure
contour(x,y,f,50);
hold on
grid on
[px,py]=gradient(f,0.2,0.2);
quiver(x,y,px,py)
利用优化函数
fun=@(x) x(1)^3-x(2)^3+3*x(1)^2+3*x(2)^2-9*x(1);
[xmin,fmin]=fminsearch(fun,rand(1,2))
fun1=@(x) -(x(1)^3-x(2)^3+3*x(1)^2+3*x(2)^2-9*x(1));
[xmax,fmax]=fminsearch(fun1,rand(1,2))

iskeyword:获得关键字的列表

变量说明
ans 预设的计算结果的变量名
eps 定义正的极小值=$$2.2204*10^{-16}$$
pi $$pi$$ 值
inf $$infty$$ 值,无限大
NaN 无法定义一个数目(零做分母)
i 或 j 虚数单位 i = j =$$sqrt{-1}$$

clear all:如果变量用户不用clear清除它,或对它重新进行赋值,那么该变量一直保存在变量空间中,直到本次指令窗口关闭为止。 clc:清除所有指令

函数运算法则实例
floor 向下取整 floor(3.5)=3;floor(-3.5)=-4
ceil 向上取整 ceil(3.5)=4;ceil(-3.5)=-3
round 取最接近的整数,如果小数部分是0.5,向绝对值大的方向取整 round(1.4)=1;round(3.5)=4;round(-3.5)=-4
fix 向0取整 fix(3.5)=3;fix(-3.5)=3
函数说明
x=complex(a,b) 建立一个复数a+bi
real(x) 返回复数的实部a
abs(x) 返回复数的模
conj(x) 返回复数x的共轭复数
imag(x) 返回复数的虚部a
angle(x) 返回复数x辅角
str='abs'
abs(str)
ans=
    97  98  99
函数说明
char 转换成字符类型
int2str 将整数转化成字符串
num2str 将数值转化成字符串
str2num 将字符串转化成数值
str2double 将字符串转化成浮点数
eval 将字符串转化成matlab可执行的语句
num={'2.5e-1','-3.8','1.125'}
str2double(num)
ans=
    0.2500
   -3.8000
    1.1250
eval('sin(1)')
ans=
    0.8415
名称含义
exp 以e为底的指数
log 自然对数
sqrt 平方根
log10 以10为底的对数
log2 以2为底的对数
pow2 2的幂
函数说明
collect 将表达式按照其默认的符号变量的幂次由高到低,同一幂次的符号变量的系数被合并到一起
expand 将表达式展开
horner 将表达式分解成嵌套形式
factor 因式分解
simplify 表达式化简
subs 将符号表达式中的某些符号变量为指定新变量
syms x y a b c s
f=x^3*y+x*(y^2+6)+x*y+8*x^2+y^2*x
collect(f)
ans=
    y*x^3+8*x^2+(2*y^2+y+6)*x

expand((x-1)*(x-2)*(x-3))
ans=
    x^3-6*x^2+11*x-6

horner(x^3-6*x^2+11*x-6)
ans=
    -6+(11+(-6+x)*x)*x

factor(x^3-6*x^2+11*x-6)
ans=
    (x-1)*(x-2)*(x-3)

subs(s+a+b+c,{a,b,c},{10,10,20})
ans=
    s+40

%:表示注释

h=1+3+5 ...
+10
ans=
    19

MATLAB的每条命令后,若为逗号无标点符号,则显示命令的结果;若命令后为分号禁止显示结果

%行向量
x=[1 2 3 4 5]
%列向量
x=[1;2;3;4;5]
x=1:5 %默认步长为1
x=1:2:5
x=linspace(1,5,5)%把1~5分成5份
x=logspace(a,b,n)%在 10 的幂 10^a 和 10^b(10 的 N 次幂)之间生成 n 个点

(1)访问一个元素: x(i)表示访问数组x的第i个元素. (2)访问一块元素: x(a :b :c)表示访问数组x的从第a个元素开始,以步长为b到第c个元素(但不超过c),b可以为负数,b缺损时为1.

x=1:5
x(3)
ans=
    3
x(1:2:5)
ans=
    1 3 5
x(1:5)
ans=
    1 2 3 4 5
A=[1 2 3 4]
A'
ans=
    1
    2
    3
    4

$$ a=[a_1,a_2,…,a_n], c=标量 a+c=[a_1+c,a_2+c,...,a_n+c] a.c=[a_1c,a_2c,...,a_nc] a./c=[a_1/c,a_2/c,...,a_n/c] a.verb||c=[c/a_1,c/a_2,...,c/a_n] a.verb|^|c=[a_1^c,a_2^c,...,a_n^c] c.*a=[c^a_1,c^a_2,...,c^a_n] $$

A=[1 2 3;4 5 6;7 8 9]
ans=
    1 2 3
    4 5 6
    7 8 9

a=[ ] 产生一个空矩阵,当对一项操作无结果时,返回空矩阵,空矩阵的大小为零 b=zeros(m,n)产生一个m行、n列的零矩阵 **c=ones(m,n) **产生一个m行、n列的元素全为1的矩阵 **d=eye(m,n) **产生一个m行、n列的元素单位阵 (1)矩阵A的第r行:A(r,:) (2)矩阵A的第r列:A(:,r) (3)依次提取矩阵A的每一列,将A拉伸为一个列向量:A(:) (4)取矩阵A的第$i1verb|~|i2$行、第j1~j2列构成新矩阵:A(i1:i2, j1:j2) (5)以逆序提取矩阵A的第i1~i2行,构成新矩阵:A(i2:-1:i1,:) (6)以逆序提取矩阵A的第j1~j2列,构成新矩阵:A(:, j2:-1:j1 ) (7)删除A的第i1~i2行,构成新矩阵:A(i1:i2,:)=[ ] (8)删除A的第j1~j2列,构成新矩阵:A(:, j1:j2)=[ ] (9)将矩阵A和B拼接成新矩阵:[A B]或[A;B]

A=[1 2 3]
B=[2 3 4]
A.*B=[2 6 12] %对应分量相乘
A*B'=[20]  %线性代数中普通的乘
原文地址:https://www.cnblogs.com/pteromyini/p/12374831.html