利用MATLAB求解微积分的方法
- 格式:doc
- 大小:86.00 KB
- 文档页数:5
matlab 微积分基本运算§1 解方程和方程组解1. 线性方程组求解对于方程 AX = B ,其中 A 是( m ×n )的矩阵有三种情形:1)当n=m 且A 非奇异时,此方程为“恰定”方程组。
2)当 n > m 时,此方程为“超定”方程组。
3)当n<m 时,此方程为“欠定”方程组。
下面就三种情形的求解分别作一说明:(1) MATLAB 解恰定方程 A* X = B 的方法1)采用求逆运算解方程x=inv(A)*B2)采用左除运算解方程x=A\B例1 “求逆”法和“左除”法求下列方程组的解⎪⎪⎪⎩⎪⎪⎪⎨⎧=+=++=++=++=+150650650651655454343232121x x x x x xx x x x x x x在Matlab 编辑器中建立M 文件fanex1.m :A=[5 6 0 0 01 5 6 0 00 1 5 6 00 0 1 5 60 0 0 1 5];B=[1 0 0 0 1]';R_A=rank(A) %求秩X1=A\B %用"左除"法解恰定方程所得的解X2=inv(A)*B %用"求逆"法解恰定方程所得的解运行后结果如下R_A =5X1 =2.2662-1.72181.0571-0.59400.3188X2 =2.2662-1.72181.0571-0.59400.3188两种方法所求方程组的解相同。
(2)MATLAB 解超定方程AX=B 的方法对于方程 AX = B ,其中 A 是( m ×n )的矩阵, n > m ,如果A 列满秩,则此方程是没有精确解的。
然而在实际工程应用中,求得其最小二乘解也是有意义的。
基本解法有:1)采用求伪逆运算解方程x=pinv(A)*B说明:此解为最小二乘解x=inv(A ’*A)*A*B,这里pinv(A) =inv(A ’*A)*A.2)采用左除运算解方程x=A\B例2 “求伪逆”法和“左除”法求下列方程组的解⎪⎩⎪⎨⎧=+=+=+12214212212121x x x x x x命令如下:>> a=[1 2;2 4;2 2];>> b=[1,1,1]';>> xc=a\b %用左除运算解方程运行得结果:xc =0.40000.1000>> xd=pinv(a)*b %用求伪逆运算解方程运行得结果:xd =0.40000.1000>> a*xc-b %xc 是否满足方程ax=b运行得结果:ans =-0.40000.20000.0000可见xc 并不是方程的精确解。
第三章 微积分的数学实验3.1极限与一元微积分3.1.1 初等运算1.定义单个或多个符号变量:syms x y z t ;定义单个符号变量或者符号函数还可以用单引号定义,如x=’x ’,f=’sin(x^2)+2*x-1’。
符号表达式的反函数运算g=finverse(f),g 是返回函数f 的反函数。
例1 求sin(1)y x =-的反函数>>syms x>>y=sin(x-1); g=finverse(y),结果为 g=1+asin(t)2. f actor(f) 因式分解函数f3.Collect(f) 对函数f 合并同类项4. expand(f) 将函数f 表达式展开5. simple(f) 找出表达式的最简短形式(有时需要用2次)6. roots (p )对多项式p 求根函数。
7. solve(F) 一般方程的求根函数例2 解方程2510x x +-=解 >>syms x>>solve(x^2+5*x-1)结果为x =[ -5/2+1/2*29^(1/2) -5/2-1/2*29^(1/2)]8.fzero(f,x0)或fzero(f,[a,b]) 在初始点x0处开始或在区间[a,b]上搜索函数的零点,f(a)与f(b)需要符号相反。
3.1.2 Matlab计算函数的极限函数形式:1)limit(F,x,a),求函数F在 x ->a时的极限。
2)limit(F,a),默认其中的变量为极限变量.3)limit (F),默认其中的变量为极限变量且趋向于0.4)limit(F,x,a,'right')或limit(F,x,a,’le ft') 求函数F在x->a时的右、左极限.例3 >>syms x a t h; %syms作用是申明x,a,t,h是符号变量,不需先赋值再调用。
>>limit(sin(x)/x) %结果为 1>>limit((x-2)/(x^2-4),2) %结果为 1/4>>limit((1+2*t/x)^(3*x),x,inf) %结果为 exp(6*t)>>limit(1/x,x,0,'right') %结果为 inf>>limit(1/x,x,0,'left') %结果为 -inf>>limit((sin(x+h)-sin(x))/h,h,0) %结果为 cos(x)>>v = [(1 + a/x)^x, exp(-x)];limit(v,x,inf,'left') %结果为[exp(a),0]3.1.3 Matlab计算导数与微分1.一元导数和微分diff函数用以计算函数的微分和导数,相关的函数语法有下列4个:diff(f) 返回f对预设独立变量的一次导数值diff(f,'t')或diff(f,t) 返回f对独立变量t的一次导数(值)diff(f,n) 返回f对预设独立变量的n阶导数(值)diff(f,'t',n) 或diff(f,t,n)返回f对独立变量t的n阶导数(值)这里尽管自变量已经作为符号变量,可以不用syms说明,但是在具体执行diff(f)、diff(f,'t')和diff(f,t)会出现差异,有的能够执行,有的不能够,有的执行符号微分,有的执行数值微分,所以比较麻烦。
第三章微积分问题的计算机求解一、实验内容:题目1.试求出如下极限。
①limx→∞(3x +9x )1/ x,②lim x→∞[(x+2)x+2(x+3)x+3 ]/(x+5)2x+5【分析】:该题为单变量函数的极限。
极限问题可以用limit()函数直接求出。
要注意该函数的调用格式为:L=limit(fun,x,x0)(求极限),L=limit(fun,x,x0,’left’或’right’)(求极限)。
还需注意一开始要对函数的字符进行申明。
【解答】:(1)输入如下语句:>> syms x;f=(3^x+9^x)^(1/x);L=limit(f,x,inf)语句运行后显示如下:L =9(2)输入如下语句:>>syms x;f=(x+2)^(x+2)*(x+3)^(x+3)/(x+5)^(2*x+5);>> L=limit(f,x,inf)语句运行后显示如下:L =exp(-5)题目2.试求下面的双重极限。
①lim x→−1y→2 (x2y+xy3)/(x+y) 3,②limx→0 y→0 xy /√(xy+1)−1,③limx→0y→0 [1−cos(x2+y2)]/(x2+y2)e x2+y2。
【分析】:该题为多变量函数的极限问题。
他可以用嵌套使用limit()函数来解决。
在MATLAB上可以用L=limit(limit(f,x,x0),y,y0)或者L=limit(f,y,y0),x,x0)来解决。
其思想是所有的先关于X求导,再所有的关于y求导。
【解答】:(1)输入如下语句:>> syms x y>> f=(x^2*y+x*y^3)/(x+y)^3;>> L=limit(limit(f,x,-1),y,2)语句运行后显示如下:L =-6(2)输入如下语句:>> syms x yf=(x*y)/(sqrt(x*y+1)-1);L=limit(limit(f,x,0),y,0)按ENTER键,语句运行后显示如下:L =2(3)输入如下语句:>> syms x yf=(1-cos(x^2+y^2))/(sqrt(x^2+y^2)*exp(x^2+y^2));L=limit(limit(f,x,0),y,0)按ENTER键,语句运行后显示如下:L =题目3.求出下面函数的导数。
Matlab 在微积分中的应用命令1 极限函数 limit格式 limit(F,x,a) %计算符号表达式F=F(x)的极限值,当x →a 时。
limit(F,a) %用命令findsym(F)确定F 中的自变量,设为变量x ,再计算F 的极限值,当x →a 时。
limit(F) %用命令findsym(F)确定F 中的自变量,设为变量x ,再计算F 的极限值,当x →0时。
limit(F,x,a,'right')或limit(F,x,a,'left') %计算符号函数F 的单侧极限:左极限x →a - 或右极限x →a+。
例3-25>>syms x a t h n;>>L1 = limit((cos(x)-1)/x)>>L2 = limit(1/x^2,x,0,'right')>>L3 = limit(1/x,x,0,'left')>>L4 = limit((log(x+h)-log(x))/h,h,0)>>v = [(1+a/x)^x, exp(-x)];>>L5 = limit(v,x,inf,'left')>>L6 = limit((1+2/n)^(3*n),n,inf)计算结果为:L1 =L2 =infL3 =-infL4 =1/xL5 =[ exp(a), 0]L6 =exp(6)命令2 导数(包括偏导数)函数 diff格式 diff(S,'v')、diff(S,sym('v')) %对表达式S 中指定符号变量v 计算S 的1阶导数。
diff(S) %对表达式S 中的符号变量v 计算S 的1阶导数,其中v=findsym(S)。
diff(S,n) %对表达式S 中的符号变量v 计算S 的n 阶导数,其中v=findsym(S)。
第三章 微积分的数学实验3.1极限与一元微积分3.1.1 初等运算1.定义单个或多个符号变量:syms x y z t ;定义单个符号变量或者符号函数还可以用单引号定义,如x=’x ’,f=’sin(x^2)+2*x-1’。
符号表达式的反函数运算g=finverse(f),g 是返回函数f 的反函数。
例1 求sin(1)y x =-的反函数>>syms x>>y=sin(x-1); g=finverse(y),结果为 g=1+asin(t)2. f actor(f) 因式分解函数f3.Collect(f) 对函数f 合并同类项4. expand(f) 将函数f 表达式展开5. simple(f) 找出表达式的最简短形式(有时需要用2次)6. roots (p )对多项式p 求根函数。
7. solve(F) 一般方程的求根函数例2 解方程2510x x +-=解 >>syms x>>solve(x^2+5*x-1)结果为x =[ -5/2+1/2*29^(1/2) -5/2-1/2*29^(1/2)]8.fzero(f,x0)或fzero(f,[a,b]) 在初始点x0处开始或在区间[a,b]上搜索函数的零点,f(a)与f(b)需要符号相反。
3.1.2 Matlab计算函数的极限函数形式:1)limit(F,x,a),求函数F在 x ->a时的极限。
2)limit(F,a),默认其中的变量为极限变量.3)limit (F),默认其中的变量为极限变量且趋向于0.4)limit(F,x,a,'right')或limit(F,x,a,’left') 求函数F在x->a时的右、左极限.例3 >>syms x a t h; %syms作用是申明x,a,t,h是符号变量,不需先赋值再调用。
>>limit(sin(x)/x) %结果为 1>>limit((x-2)/(x^2-4),2) %结果为 1/4>>limit((1+2*t/x)^(3*x),x,inf) %结果为 exp(6*t)>>limit(1/x,x,0,'right') %结果为 inf>>limit(1/x,x,0,'left') %结果为 -inf>>limit((sin(x+h)-sin(x))/h,h,0) %结果为 cos(x)>>v = [(1 + a/x)^x, exp(-x)];limit(v,x,inf,'left') %结果为[exp(a),0]3.1.3 Matlab计算导数与微分1.一元导数和微分diff函数用以计算函数的微分和导数,相关的函数语法有下列4个:diff(f) 返回f对预设独立变量的一次导数值diff(f,'t')或diff(f,t) 返回f对独立变量t的一次导数(值)diff(f,n) 返回f对预设独立变量的n阶导数(值)diff(f,'t',n) 或diff(f,t,n)返回f对独立变量t的n阶导数(值)这里尽管自变量已经作为符号变量,可以不用syms说明,但是在具体执行diff(f)、diff(f,'t')和diff(f,t)会出现差异,有的能够执行,有的不能够,有的执行符号微分,有的执行数值微分,所以比较麻烦。
第 3 章 (1)M A T L A B 微积分
极限与级数的符号运算
M A T L A B 的极限与级数运算在符号系统中进行
◆极限运算
● l i m i t (f , x , a ) 求符号函数f 的极限 ● l i m i t (f , x , a , ’r i g h t ’) 求符号函数f 的右极限 ● l i m i t (f , x , a , ’l e f t ’) 求符号函数f 的左极限
说明:上述命令中的a 可以是无穷大 i n f 或 -i n f
☐说明:多元函数的极限需要使用累次极限来计算 举例
◆级数运算
● s y m s u m (a n , n , i , j ) 求符号通项a n 的和
其中,当j 为无穷大i n f 时,即为无穷级数。
举例
◆级数运算
● t a y l o r (f , n , a , x )
求符号函数f 在点a 关于变量x 的n -1阶泰勒多项式 举例
● t a y l o r t o o l 泰勒工具 举例
微积分的符号运算
◆导函数与偏导函数
● d i f f (f , x ) 求符号函数f 对x 的一阶导函数或偏导函数 ● d i f f (f , x , n ) 求符号函数f 对x 的n 阶导函数或偏导函数 ● 注:d i f f 是d i f f e r e n t i a l (微分)的缩写
lim ()
x a
f x +
→lim ()
x a f x -
→lim ()x
a f x →j
n
n i
a =∑
例:计算
⏹ 问:如何求符号函数在给定点的导数值或偏导数值?
求完导函数或偏导函数之后,使用符号替换命令 s u b s 可以求得导函数值或偏导函数值
◆不定积分与定积分
● i n t (f , x )
求符号函数f 关于变量x 的不定积分 ● 注:i n t 是i n t e g r a t i o n (积分)的缩写 ● i n t (f , x , a , b )
求符号函数f 关于变量x 的定积分,a 、b 分别是积分下限和上限,a 、b 可以是函数表达式,也可以是无穷大i n f 或-i n f 举例
● 对于定积分,当系统求不出精确解时,如果被积函数中不含待定符号,可以使用v p a 命令给出近似解 例如: s y m s x a =i n t (s i n (s i n (x )), 1, 2) v p a (a )
☐说明: ● 参数方程求导和隐函数求导需要使用相关数学公式(见教材66-67页) ● 重积分、曲线积分与曲面积分需要使用数学方法转化为累次积分来计算
微积分的数值运算
◆微积分的数值运算特点
采用数值算法,主要用于解决导数和定积分的近似计算问题 还可以解决离散数据的相关计算问题
● 实例:某河床的横断面如图所示,试根据图示的测量数据(单位: m ),计算各测量点的坡度和横断面的面积。
)ln(2
22
3xy y x y
x +∂∂∂,)1
sin (2+x e x
dx d
◆数值导数
● g r a d i e n t (f , x )
该命令求一元函数 f 的数值导数f ’(x )
其中,x 是自变量的一组取值(离散数据),f 是因变量的对应取值(离散数据) ,计算结果是各离散数据点的导数值(近似解)。
☐说明:
x 的取值越密集,得到的导数值就越精确。
该命令常用于求解离散型数据的变化率。
● 例:计算前例中的坡度
x =[0,4,10,12,15,22,28,34,40]; f =[0,-1,-3,-6,-8,-9,-5,-3,0]; f x =g r a d i e n t (f ,x )
● 例:求函数y =x 2s i n x 在区间[-3,3]的一阶和二阶数值导数,作出原函数与一、二阶导函数的图形,并观察函数的单调性、凹凸性、极值、拐点与一、二阶导数之间的关系。
x =-3:0.01:3; f =x .^2.*s i n (x );
f x =
g r a d i e n t (f ,x ) f x x =g r a d i e n t (f x ,x ) p l o t (x ,f , x ,f x ,'r --', x ,f x x ,'k --'), g r i d o n
☐ 思考:怎样求函数在指定点的数值导数?
比如:上面函数在x =1.5和x =1.501的数值导数是多少? f (f i n d (x ==1.5)) 或者 f (x ==1.5) 一般方法:[p ,q ]=m i n (a b s (x -x 0)); f (q )
◆数值偏导数
● [f x , f y ]=g r a d i e n t (f , x , y )
该命令求二元函数f 的数值偏导数f ’x 和f ’y
4 10 12 1
5 22 28 34 40
1
3
6
8
9
5
3
其中,x,y分别是自变量x和y的一组取值(向量表示);
f是定义在x-y平面点集区域上的函数值(矩阵表示),平面点集区域可以使用
m e s h g r i d命令生成;
f x和f y分别得到每个点处偏x和偏y的偏导数值(矩阵表示)。
☐说明:x和y的取值越密集,得到的偏导数值就越精确;该命令常用于求解离散型数据的方向导数、梯度、散度、旋度等。
●举例
◆数值定积分
●梯形法数值积分:t r a p z(x,y)
其中x表示自变量在积分区间的一组取值,y表示被积函数对应于x的一
组函数值。
●例:计算前面例题中的横断面积
x=[0,4,10,12,15,22,28,34,40];
y=[0,1,3,6,8,9,5,3,0];
s=t r a p z(x,y)
●例:求积分
解:x=-1:0.1:1;y=e x p(-x.^2);t r a p z(x,y)
●高精度数值积分:q u a d(f,a,b)或q u a d l(f,a,b)
求函数f在区间[a,b]上的定积分,其中:f使用字符串函数表达式或内
联函数,定义函数的乘、除、乘方时要使用点运算。
积分限a、b必
须是常量。
q u a d采用自适应步长S i m p s o n积分法
q u a d l采用高精度L o b a t t o积分法
●例求积分
解:z=q u a d l('e x p(-x.^2)',-1,1)
●注意:t r a p z,q u a d,q u a d l都不能用于求反常积分。
◆数值重积分
●矩形区域上的二重积分和立方体区域上的三重积分:
→二重积分命令d b l q u a d(f,a1,a2,b1,b2)
f 为被积函数, 积分区域为矩形[a 1, a 2; b 1, b 2] →三重积分命令 t r i p l e q u a d (f , a 1, a 2, b 1, b 2 , c 1, c 2)
f 为被积函数, 积分区域为立方体[a 1, a 2; b 1, b 2; c 1, c 2]
说明:①被积函数使用字符串函数表达式或内联函数;②乘、除、乘方要用点运算;③积分限必须是常量;④f 是字符串函数表达式时,积分的顺序按照自变量的字典顺序进行,f 是内联函数时,积分的顺序按照自变量的定义顺序进行。
● 积分顺序举例
d b l q u a d ('s i n (t ./r .^2)',1,2,6,9)
即 二重积分
f =i n l i n e ('s i n (t ./r .^2)', 't ', 'r ') d b l q u a d (f ,1,2,6,9)
即 二重积分
微积分的数值运算
◆数值重积分
● 例 计算重积分
92261sin t
dt dr r ⎰
⎰9
2
26
1
sin t dr dt r
⎰
⎰。