matlab 积分进阶教程,最适合小白的matlab教程系列_进阶系列二之微积分

微积分篇

更多文章参考

符号变量

极限问题

求导数

求导数————偏导数

积分--符号解

积分数值解

多重积分

级数求和

泰勒级数展开

常微分方程

更多文章参考

最适合小白的matlab教程系列_基础系列三_矩阵与向量

最适合小白的matlab教程系列_基础系列四_基础代码

最适合小白的matlab教程系列_进阶系列一

符号变量

命名格式:

sym('var') %定义var为符号变量

sym('var',set) % 设置为实数或者正数

sym('var',dim) %定义var为符号矩阵

syms var1 var2...varn %定义多个符号变量

这东西,可以说很重要的了。

实例分析一:

定义符号变量x和y,将x设定为实数;y设置为正数

第一步来了:%创建符号变量x和y

x=sym('x');

y=sym('y');

第二步:%设置符号变量x为实属,y为正数

x=sym('x','real');

y=sym('y','positive');

在用的时候是没有必要分步的,直接用第二步的就行了,这里只是更明白点区别。

实例分析二

默认格式:>> M_mat=sym('M',[3,4])

M_mat =

[ M1_1, M1_2, M1_3, M1_4]

[ M2_1, M2_2, M2_3, M2_4]

[ M3_1, M3_2, M3_3, M3_4]

默认格式:>> M_mat=sym('N%d%d',[3,4])

M_mat =

[ N11, N12, N13, N14]

[ N21, N22, N23, N24]

[ N31, N32, N33, N34]

实例分析三

定义多个符号变量

>> syms a b c;

>> sym('f(a,b,c)');

>> f(a,b,c)=a+b+c

f(a, b, c) =

a + b + c

极限问题

极限

matlab中代码

lim(f(x)) x-0

limit(f)

limf(x) x-a

limit(f,x,a)or limit(f,a)

lim f(x) x-a-

limit(f,x,a,‘left’)

limf(x)x-a+

limit(f,x,a,‘right’)

实例分析

求limsin(x)/x x-0

>>sym x;

>>lim1 =limit(sin(x)/x)

lim1=1

求lim(sin(x+h)-sin(x))/h

>>syms x h;

>> Lim2=limit((sin(x+h)-sin(x))/h,h,0)

Lim2 =

cos(x)

lim2x/3x+1

>> sym x;

>> Lim3=limit(2*x/(3*x+1),x,inf)

Lim3 =

2/3

求导数

命名格式

diff(f) %f对预设独立变量的一阶导数

diff(f,'t') %f对预设’t’的二阶导数

diff(f,n) %f对预设独立变量的n阶导数

diff(f,'t',n) %f对预设’t’的n阶导数

实例分析

求f(x)=5x^3+3x关于x的一阶导数

>>f=sym('5*x^3+3*x');

>>diff(f)

ans =

15*x^2 + 3

求g(a)=4a方+3a关于a的三阶导数

>>syms a

>>g=sym('4*a^4+3*a');

>>diff(g,a,3)

ans=96*a

求导数————偏导数

h(x,y)=x2+y3+3xy的对x偏导和对y的二次

>> syms x y

>> h=sym('x^2+y^3+3*x*y');

>> diff_dx_1=diff(h,x)

diff_dx_1 =

2*x + 3*y

>> syms x y

>> h=sym('x^2+y^3+3*x*y');

>> diff_dy_2=diff(h,y,2)

diff_dy_2 =

6*y

求h=x2+y3+3xy求对x的对y的二阶

>> syms x y

>> h=sym('x^2+y^3+3*x*y');

>> diff(diff(h,'y'),'x')

ans =

3

积分–符号解

int(f) %f对预设独立变量求积分

int(f,'t') %f对预设变量t求积分

int(f,a,b) %f对预设独立变量在区间[a,b](数值)求积分

int(f,'t',a,b) %f对独立变量t在区间[a,b](数值求积分)

int(f,'m','n') %f对预设独立变量在区间m,n求积分

int(f,'t','m','n')%f对独立变量t在区间[m,n](符号)求积分

实例分析

求ax^2+bx+c dx

>>syms a b c x

>> f=sym('a*x^2+b*x+c');

>>int(f)

ans =

(a*x^3)/3 + (b*x^2)/2 + c*x

fsin(x)+2cos(y)dy(m-n)

f=sym('sin(x)+2*cos(y)');

int(f,y,m,n)

ans =

2*sin(n) - 2*sin(m) - sin(x)*(m - n)

求f0-1f0-1sin(x)+2cos(y)dxdy

>> syms x y

>> f=sym('sin(x)+2*cos(y)');

>> int(int(f,x,0,1),y,0,1)

ans =

2*sin(1) - cos(1) + 1

积分数值解

命名格式:

integral(fun,xmin,xmax)

integral(fun,xmin,xmax,Name,Value)

fun:函数句柄

xmin,xmax:积分范围

Name,Value:特殊选项的名称及其值

实例分析

求0-1f e^-2x dx

>>f=@(x)exp(-x.^2);

>>integral(f,0,1)

ans =

0.7468

或者

g=sym('exp(-x.^2)');

int(g,0,1)

添加条件

AbsTol 绝对误差

RelTol 相对误差

ArrayValued 数组值函数的标志

Waypoints 积分航点

实例分析

求f 0-1log(x)dx 绝对误差10^-12相对误差0

>> fun=@(x)log(x);

>> format long

>> integral(fun,0,1,'RelTol',0,'AbsTol',1e-12)

>ans =

-1.000000000000010

如果不加误差:

>> integral(fun,0,1)

ans =

-1.000000010959678

求积分(航点设定)-----实例分析

求f 1/2z-1 dz航点设置0->1+i->1-i->0

>> fun=@(z) 1./(2*z-1);

>> q=integral(fun,0,0,'Waypoints',[1+i,1-i])

q =

0.000000000000000 - 3.141592653589799i

求积分(数组)—实例分析

f(x)=[sinx,sin2x,sin3x,sin4x,sin5x],求区间[0,1]范围内的积分值

>> fun=@(x)sin((1:5)*x);

>> q=integral(fun,0,1,'ArrayValued',true)

q =

1 至 2 列

0.459697694131860 0.708073418273571

3 至 4 列

0.663330832200149 0.413410905215903

5 列

0.143267562907355

多重积分

命名格式

二重积分 integral2(fun,xmin,xmax,ymin,ymax)

三重积分 integral3(fun,xmin,xmax,ymin,ymax,zmin,zmax)

实例分析

求f-1-1f0-1f0-Π ysin(x)+zcos(x)dxdydz

>> fun=@(x,y,z)y.*sin(x)+z.*cos(x);

>> q=integral3(fun,0,pi,0,1,-1,1)

q =

2.000000000000000

级数求和

命名格式symsum(expr,var).

.symsum(expr,var,a,b)

expr:关于var的表达式

var:自变量

a:该数列或级数所求和的起始项数

b:该数列或级数所求和的结束项数

实例分析

在没有给定ab的情况下,symsum(expr,var)会返回表达式s,s满足expr(var)=s(var+1)-s(var)

>> syms k

>> s=symsum(k)

s =

k^2/2 - k/2

symsum(expr,var,a,b)

求1/n!的累加和

>> syms n

>> f=1/sym('n!');

>> sn=symsum(f,n,0,inf)

sn =

exp(1)

泰勒级数展开

命令格式

taylor(f)

taylor(f,Name,Value)

taylor(f,v)

taylor(f,v,Name,Value)

taylor(f,v,a)

taylor(f,v,a,Name,Value)

f:符号表达式

v:符号变量

a:展开点,默认值为0

泰勒展开级数

taylor(f,v,a,Name,Value)

ExpansionPoint 指定展开点

Order 指定截断阶数n即表示求函数f(v)在v=a处的(n-1)阶泰勒级数

OrderMode 指定阶数模式

实例分析

求f(x)=tanx的麦克劳林级数

>> syms x

>> taylor(tan(x))

ans =

(2*x^5)/15 + x^3/3 + x

f(x)=log(x)在x=1处的泰勒级数

>> syms x

>> taylor(log(x),x,1)

ans =

x - (x - 1)^2/2 + (x - 1)^3/3 - (x - 1)^4/4 + (x - 1)^5/5 - 1

求f(x)=sinx/x的泰勒级数,指定截断阶数为6阶8阶10阶

syms x

f=sin(x)/x

t6=taylor(f,'order',6);

t8=taylor(f,'order',8);

t10=taylor(f,'order',10);

L1=ezplot(t6,[-10,10]);set(L1,'color','r','LineWidth',3);

hold on

L2=ezplot(t8,[-10,10]);set(L2,'color','b','LineWidth',3);

L3=ezplot(t10,[-10,10]);set(L3,'color','m','LineWidth',3);

L4=ezplot(f,[-10,10]);set(L4,'color','g','LineWidth',3);

legend('sin(x)/x截断6阶小量', 'sin(x)/x截断8阶小量','sin(x)/x截断10阶小量','sin(x)/x','location','Northeast')

title('泰勒级数展开')

hold off

a91c62e39919471b9521858387cdd103.jpg

常微分方程

命名格式S=dsolve(eqn)

,S=dsolve(eqn,cond)

eqn:符号表达式(等式)

cond:边界条件

实例分析

常微分方程----单个微分方程

求y’(t)=ty的通解

>> syms y(t)

>> y(t)=dsolve(diff(y,t)==t*y)

y(t) =

C1*exp(t^2/2)

或者

syms y(t) t

y(t)=dsolve('Dy=t*y')

求y’’-y’/x-xe^x=0的通解

>> syms x y

>> y=dsolve('D2y-Dy/x-x*exp(x)','x');

>> simplify(y)

ans =

C5 - exp(x) + C4*x^2 + x*exp(x)

d^3u /dx^3=u,u(0)=1,u’(0)=-1,u’’(0)=Π特解

>> syms u(x) x

>> u(x)=dsolve('D3u=u','u(0)=1','Du(0)=-1','D2u(0)=pi')

u(x) =

(pi*exp(t))/3 - exp(-t/2)*cos((3^(1/2)*t)/2)*(pi/3 - 1) - (3^(1/2)*exp(-t/2)*sin((3^(1/2)*t)/2)*(pi + 1))/3

常微分方程组

命名格式

[y1,yN]=dsolve(eqns)

[y1,yN]=dsolve(eqns,conds)

初学者建议使用以下命令格式

Z=dsolve(eqns)

Z=dsolve(eqns,conds)

eqns:符号 表达式

conds:边界条件

实例分析

求方程组x’(t)=y y’(t)=-x的通解

>> syms x(t) y(t)

>> [x,y]=dsolve(diff(x)==y,diff(y)==-x)

x =

C10*cos(t) + C9*sin(t)

y =

C9*cos(t) - C10*sin(t)

或者:

>> syms x(t) y(t)

>> [x,y]=dsolve('Dx=y','Dy=-x')

x =

C10*cos(t) + C9*sin(t)

y =

C9*cos(t) - C10*sin(t)

求方程组x’(t)=x+2y+1 y’(t)=-x+y+t 的通解

syms x(t) y(t)

A=[1 2;-1 1];

B=[1;t];

Y=[x;y];

S=dsolve(diff(Y)==A*Y+B);

x=simplify(S.x);

y=simplify(S.y)

y =

C11*exp(t)*cos(2^(1/2)*t) - t/3 - C12*exp(t)*sin(2^(1/2)*t) - 2/9

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值