微积分线性代数知识在matlab中的实现
- 格式:doc
- 大小:266.00 KB
- 文档页数:12
第一章 微积分、线性代数的基础知识及其在Matlab中的实现
1.1 建模中常用微积分基础知识在Matlab中的实现
在数摸问题的计算中,经常要用到极限、导数、微分和积分等基本运算。利用数学软件Matlab可以使复杂的微积分运算变得很容易。本节介绍微积分的基本运算在计算机上如何实现,包括:微分、积分、极限、级数求和、方程求根以及Taylor展开等功能的实现方法。
下面是MATLAB中的基本符号运算函数(有关符号运算请参考附录A):
1. x=sym(‘x’)
功能:创建一个符号变量x
2. syms x y z
功能:创建多个符号变量 x , y , z
3. r=collect(S,v)
功能:合并同类项,S是符号表达式,v是变量或表达式,R是合并同类项后的结果。
4. factor(S)
功能:符号计算的因式分解,X是待分解的符号多项式
5. expand(S)
功能:对符号多项式或函数S进行展开
6. r=simple(S) 或 r=simplify(S)
功能:对符号表达式S进行化简
7. subs(S,old,new)
功能:把符号变量中的变量old 用 new 代替,new 可以是一个符号,也可以是具体的数
8. vpa(S)
功能:对符号表达式S计算其任意精度的数值
9. eval(S)
功能:计算符号表达式(或字符串)S
1.1.1 导数、极值和积分、Talyor公式及在Matlab中的实现
一、极限运算
在MATLAB中,计算极限采用下面的命令:
命令 功能
limit(f,x,a) 计算)(limxfax
limit(f,x,inf) 计算)(limxfx
limit(f,x,a,’right’) 计算单侧极限)(limxfax
limit(f,x,a,’left’) 计算单侧极限)(limxfax
注意:在左右极限不相等或左右极限有一个不存在时,Matlab的默认状态是求右极限
例1 求极限xxx10)41(lim与极限xexx1lim0 解 Matlab命令为
syms x;
y1=(1+4*x)^(1/x); y2=(exp(x)-1)/x;
limit(y1,x,0)
ans= exp(4)
limit(y2,x,0)
ans= 1
例2 求极限)2(lim10xxx
解 syms x; y=sqrt(x)-2^(-1/x);
limit(y,x,0,’right’)
ans= 0
二、求导运算
导数是函数增量y与自变量增量x之比的极限(0x),即xxfxxfxf)()()(。在Matlab中求函数的导数及其他一些类似计算均由 diff 命令来完成。
1.一元函数的求导
命令形式1: diff(f)
功能:求函数f的一阶导数,其中f为符号函数。
命令形式2: diff(f,n)
功能:求函数f的n阶导数,其中f为符号函数。
例3 求函数 1533xx的二阶导数
解 Matlab的命令为
syms x ; f= 3*x^3+5*x+1 ;
diff(f,2) ;
ans= 18*x
例4 设1232xxy,求1'|xy
解 syms x ; y=3*x^2-2*x+1 ;
B=diff(y) , x=1 ;
eval(B)
运行结果为
B = 6*x – 2
ans = 4
2.多元函数的偏导数
将函数),(yxfz中的变量y看成常量而对变量x的导数称为二元函数),(yxf对变量x的偏导数,记为),(yxfx。若把x当作常量而对y求导的结果称为函数对y的偏导数,记为),(yxfy。求偏导的方法和一元函数的求导方法一样,只要把另一个变量看成常量即可。
命令形式1: diff(f,ix) 功能: 多函数f 对变量ix的一阶偏导。
命令形式2: diff(f,ix,n)
功能:多函数f 对变量ix的n阶偏导。
例5 求yxz2sin2关于x的偏导数
解 syms x y;
z= x^2*sin(2*y); B=diff(z,’x’);
运行结果为 B=2*x*sin(2*y)
3. 全微分、参数方程求导及隐函数求导
(1) 若函数),(yxfz在某点),(00yx的两个偏导数存在且连续,则函数在该点的全微分为
dyyxfdxyxfdzyx),(),(0000
Matlab中求函数全微分的命令为: diff(z,x)+diff(z,y)
(2) 对参数方程)()(tyytxx所确定的函数)(xfy,根据公式dtdxdtdydxdy,连续两次利用diff(f)命令就可以求出结果。
(3) 隐函数求导
方程0),(yxF所确定的隐函数)(xyy,则其导数yxFFdxdy;方程0),,(zyxF确定的隐函数),(yxzz,其导数为zxFFxz,zyFFyz。在Matlab中按照上述公式,分别求出函数的偏导再相除就可得到隐函数的导数。
三、积分运算
1.一元函数的不定积分
命令形式1: int(f)
功能: 求函数f对默认变量的不定积分,用于函数中只有一个变量的情况。
命令形式2:int(f,v)
功能:求符号函数f对变量v的不定积分。
例6 计算dxxx22cossin1
解 Matlab命令为
syms x ;
y=1/(sin(x)^2*cos(x)^2) ;
int(y)
ans = )sin(/)cos(*2))cos(*)/(sin(1xxxx pretty(int(y)) %把int(y)化简为常用的数学形式的表达式
结果为 xxxxsincos2)cos()sin(1
例7 求dzzx21
解 Matlab的命令为
syms x z ; B=int(x/(1+z^2),z) ;
B=x*atan(z)
2.一元函数的定积分
命令形式: int(f,x,a,b)
功能:用微积分基本公式计算定积分badxxf)(
例8 求22121)11(dxxx
解 Matlab的命令为
syms x ;
t=1+x-1/x; y=exp(x+1/x) ;
t=t*y ;
int(f,x,1/2,2) ;
ans = 3/2*exp(5/2)
3. 多重积分运算
命令 功能
int(int(f,y),x) 计算不定积分dyyxfdx),(
int(int(f,y,c,d),x,a,b) 计算定积分dcbadyyxfdx),(
注意:对于三重积分的运算和二重积分的形式一致。
例9 计算 10122)1(xxdxdyyxA
解 Matlab的命令为
syms x y
A=int(int(x^2+y^2+1,y,x,x+1),x,0,1) %求二重积分
A=5/2
四、函数的Taylor展开
命令形式1:taylor(f)
功能:将函数f展开成默认变量的6阶麦克劳林公式
命令形式2: taylor(f, n)
功能:将函数f展开成默认变量的n阶麦克劳林公式
命令形式3: taylor(f, n, v, a)
功能: 将函数f(v)在v=a处展开n阶泰勒公式 例10 将函数 21lnarctan)(xxxxf展开为x的6阶麦克劳林公式。
解 Matlab命令为
syms x ;
f=x*atan(x) – log(sqrt(1+x^2));
taylor(f)
ans = 1/2*x^2-1/12*x^4
例11 将函数21)(xxf展开为关于)2(x的最高次为4的幂级数。
解 Matlab 命令为
syms x ;
f = 1/x^2 ;
taylor(f, 4, x, 2) ; pretty(taylor(f, 4, x, 2)) ;
32)2(81)2(163)2(4143xxx
1.1.2 数值积分法及其在Matlab中的实现
用定积分的符号解法求定积分有时会失效,此时,可以用数值方法来计算定积分的值。Matlab提供了如下一些计算定积分值的数值方法。
一、用数值方法计算定积分
(1) 复合梯形公式
复合梯形公式用小梯形面积代替小曲边梯形的面积,然后求和以获得定积分的近似值。
命令形式:trapz(x,y)
功能:用复合梯形公式计算定积分,变量x是积分变量在被积区间上的分点向量,y为被积函数在x处对应的函数值向量。
(2)复合辛普生公式
本方法用抛物线代替小曲边梯形的曲边计算小面积,然后求和以获得定积分的近试值。
命令形式1:),,,,'('tracetolbafunquad
命令形式2:),,,,'('8tracetolbafunquad
式中fun式被积函数表达式字符串或者是M函数文件名,ba,积分的下限与上限,tol代表精度,可以缺省;缺省时,001.0tol。1trace 时用图形展示积分过程,0trace时无图形,默认值为0。命令形式2比命令形式`1精度高。
例11 用复合梯形公式和复合辛普生公式求dxxx522ln的积分值。
解 Matlab命令为
syms x ;
x=2:0.1:5 ;
);,();2./().log(yxtrapztxxy
ff = inline(‘log(x)./(x.^2)’,’x’) ;