建模matlab之三符号计算及其应用.ppt
《建模matlab之三符号计算及其应用.ppt》由会员分享,可在线阅读,更多相关《建模matlab之三符号计算及其应用.ppt(122页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、MMATLABATLAB 软件及其应用王林君江苏大学理学院 Application of Matlab Language1MATLAB符号运算符号运算(Symbolic)2Matlab符号运算介绍q Matlab 符号运算是通过符号运算是通过符号数学工具箱符号数学工具箱(Symbolic Math Toolbox)来实现的。)来实现的。Matlab 符号数学工具箱是建符号数学工具箱是建立在功能强大的立在功能强大的 Maple 软件的基础上的,当软件的基础上的,当 Matlab 进进行符号运算时,它就请求行符号运算时,它就请求 Maple 软件去计算并将结果返软件去计算并将结果返回给回给 Mat
2、lab。qMatlab的符号数学工具箱可以完成几乎所有得符号运算功能。主要包括:符号表达式的运算,符号表达式的复合、化简,符号矩阵的运算,符号微积分、符号作图,符号代数方程求解,符号微分方程求解等。此外,该工具箱还支持可变精度运算,即支持以指定的精度返回结果。3Matlab符号运算特点 计算以计算以推理方式推理方式进行,因此不受计算误差累积所带来的进行,因此不受计算误差累积所带来的困扰。困扰。符号计算指令的调用比较简单,与数学教科书上的公式相近。符号计算可以给出完全正确的封闭解,或任意精度的数符号计算可以给出完全正确的封闭解,或任意精度的数值解(封闭解不存在时)。值解(封闭解不存在时)。符号计
3、算所需的运行时间相对较长。4Matlab符号运算举例 求一元二次方程求一元二次方程 ax2+bx+c=0 的根的根 solve(a*x2+b*x+c=0)求的根求的根 f(x)=(cosx)2 的一次导数的一次导数 x=sym(x);diff(cos(x)2)计算计算 f(x)=x2 在区间在区间 a,b 上的定积分上的定积分 syms a b x;int(x2,a,b)5q在进行符号运算时,必须先定义基本的符号对象,可以是符号常量、符号变量、符号表达式等。符号对象是一种数据结构。符号对象与符号表达式q含有符号对象的表达式称为符号表达式,Matlab在内部把符号表达式表示成字符串,以与数字变量
4、或运算相区别。q符号矩阵/数组:元素为符号表达式的矩阵/数组。6 sym 函数用来建立单个符号变量,一般调用格式为:q 符号对象的建立:符号对象的建立:sym 和和 syms符号对象的建立例:a=sym(a)符号变量=sym(A)参数A可以是一个数或数值矩阵,也可以是字符串a是符号变量b是符号常量 b=sym(1/3)C是符号矩阵 C=sym(1 ab;c d)7q 符号对象的建立:符号对象的建立:sym 和和 syms符号对象的建立 syms 命令用来建立多个符号变量,一般调用格式为:syms 符号变量符号变量1 符号变量符号变量2.符号变量符号变量n 例:syms a b c a=sym(
5、a);b=sym(b);c=sym(c);8q 符号表达式的建立:符号表达式的建立:例:建立符号表达式通常有以下2种方法:(1)用sym函数直接建立符号表达式。(2)使用已经定义的符号变量组成符号表达式。y=sym(sin(x)+cos(x)x=sym(x);y=sin(x)+cos(x)符号表达式的建立 syms x;y=sin(x)+cos(x)9Matlab符号运算采用的运算符和基本函数,在形状、名称和使用上,都与数值计算中的运算符和基本函数完全相同符号对象的基本运算q 基本运算符基本运算符普通运算:+-*/数组运算:.*./.矩阵转置:.例:X=sym(x11,x12;x21,x22;
6、x31,x32);Y=sym(y11,y12,y13;y21,y22,y23);Z1=X*Y;Z2=X.*Y;10符号对象的基本运算sin、cos、tan、cot、sec、csc、asin、acos、atan、acot、asec、acsc、exp、log、log2、log10、sqrtabs、conj、real、imagrank、det、inv、eig、lu、qr、svddiag、triu、tril、expm三角函数与反三角函数、指数函数、对数函数等q 基本函数基本函数11q 查找符号表达式中的符号变量查找符号表达式中的符号变量若表达式中有两个符号变量与x的距离相等,则ASCII码大者优先。查
7、找符号变量findsym(expr)按字母顺序列出符号表达式expr中的所有符号变量findsym(expr,N)按顺序列出expr中离x最近的N个符号变量常量pi,i,j不作为符号变量12例:f=sym(2*w-3*y+z2+5*a)findsym(f)findsym(f,3)findsym(f,1)findsym举例13符号表达式的替换subs(f,x,a)用用 a 替换字符函数替换字符函数 f 中的字符变量中的字符变量 x a是可以是是可以是 数数/数值变量数值变量/表达式表达式 或或 字符变量字符变量/表达式表达式若x是一个由多个字符变量组成的数组或矩阵,则a应该具有与x相同的形状的数
8、组或矩阵。q 用给定的用给定的数据数据替换符号表达式中的指定的替换符号表达式中的指定的符号变量符号变量14subs举例 f=sym(2*u);subs(f,u,2)f2=subs(f,u,u+2)a=3;subs(f2,u,a+2)subs(f2,u,a+2)syms x y f3=subs(f,u,x+y)subs(f3,x,y,1,2)ans=4f2=2*(u+2)ans=14ans=2*(a+2)+2)f3=2*x+2*yans=6 例:指出下面各条语句的输出结例:指出下面各条语句的输出结果果f=2*u15符号符号矩阵矩阵 A=sym(1+x,sin(x);5,exp(x)使用sym函数
9、直接生成 将数值矩阵转化成符号矩阵 符号矩阵中元素的引用和修改 B=2/3,sqrt(2);5.2,log(3);C=sym(B)A=sym(1+x,sin(x);5,exp(x);A(1,2)%引用引用 A(2,2)=sym(cos(x)%重新赋值重新赋值16六六类常见符号运算类常见符号运算q 因式分解、展开、合并、简化及通分等因式分解、展开、合并、简化及通分等q 计算极限计算极限q 计算导数计算导数q 计算积分计算积分q 符号求和符号求和q 代数方程和微分方程求解代数方程和微分方程求解17因式分解因式分解factor(f)syms x;f=x6+1;factor(f)lfactor 也可用
10、于正整数的分解 s=factor(100)factor(sym(12345678901234567890)l 大整数的分解要转化成符号常量大整数的分解要转化成符号常量18函数展开函数展开expand(f)syms x;f=(x+1)6;expand(f)l多项式展开l三角函数展开 syms x y;f=sin(x+y);expand(f)19合并同类项合并同类项collect(f,v):按指定变量按指定变量 v 进行合并进行合并collect(f):按按默认变量默认变量进行合并进行合并 syms x y;f=x2*y+y*x-x2+2*x;collect(f)collect(f,y)20函数简
11、化函数简化y=simple(f):对对 f 尝试多种不同的算法进行尝试多种不同的算法进行简化,返回其中最简短的形式简化,返回其中最简短的形式How,y=simple(f):y 为为 f 的最简短形式,的最简短形式,How 中记录的为简化过程中使用的方法。中记录的为简化过程中使用的方法。fRHOW2*cos(x)2-sin(x)23*cos(x)2-1 simplify(x+1)*x*(x-1)x3-xcombine(trig)x3+3*x2+3*x+1(x+1)3factorcos(3*acos(x)4*x3-3*xexpand21函数简化函数简化y=simplify(f):对对 f 进行简化
12、进行简化 syms x;f=sin(x)2+cos(x)2;simplify(f)syms c alpha beta;f=exp(c*log(sqrt(alpha+beta);simplify(f)22函数简化举例 syms x;f=(1/x3+6/x2+12/x+8)(1/3);y1=simplify(f)g1=simple(f)g2=simple(g1)l 多次使用多次使用 simple 可以达到最简表达。可以达到最简表达。例:简化23分式通分函数简化N,D=numden(f):N 为通分后的分子,为通分后的分子,D 为通分后的分母为通分后的分母 syms x y;f=x/y+y/x;N,
13、D=numden(f)n,d=numden(sym(112/1024)24horner多项式horner 多项式:嵌套形式的多项式 syms x;f=x4+2*x3+4*x2+x+1;g=horner(f)例:例:25计算极限limit(f,x,a):计算计算limit(f,a):当当默认变量默认变量趋向于趋向于 a 时的极限时的极限limit(f):计算计算 a=0 时的极限时的极限limit(f,x,a,right):计算右极限计算右极限limit(f,x,a,left):计算左极限计算左极限例:计算,syms x h n;L=limit(log(x+h)-log(x)/h,h,0)M=l
14、imit(1-x/n)n,n,inf)26计算导数g=diff(f,v):求符号表达式求符号表达式 f 关于关于 v 的导数的导数g=diff(f):求符号表达式求符号表达式 f 关于关于默认变量默认变量的导数的导数g=diff(f,v,n):求求 f 关于关于 v 的的 n 阶导数阶导数q diff syms x;f=sin(x)+3*x2;g=diff(f,x)27计算积分int(f,v,a,b):计算定积分计算定积分int(f,a,b):计算关于计算关于默认变量默认变量的定积分的定积分int(f,v):计算不定积分计算不定积分int(f):计算关于计算关于默认变量默认变量的不定积分的不定
15、积分 syms x;f=(x2+1)/(x2-2*x+2)2;I=int(f,x)K=int(exp(-x2),x,0,inf)例:计算和28符号求和 syms n;f=1/n2;S=symsum(f,n,1,inf)S100=symsum(f,n,1,100)symsum(f,v,a,b):求和求和symsum(f,a,b):关于关于默认变量默认变量求和求和例:计算级数及其前100项的部分和例:计算函数级数 syms n x;f=x/n2;S=symsum(f,n,1,inf)29代数方程求解solve(f,v):求方程关于指定自变量的解,求方程关于指定自变量的解,f 可以是可以是用字符串表
16、示的方程用字符串表示的方程、符号表达式符号表达式或或符号方程符号方程;l solve 也可解方程组也可解方程组(包含非线性包含非线性);l 得不到解析解时,给出数值解。得不到解析解时,给出数值解。30微分方程微分方程求解求解q dsolvey=dsolve(eq1,eq2,.,cond1,cond2,.,v)其中其中 y 为输出的解,为输出的解,eq1、eq2、.为微分方程,为微分方程,cond1、cond2、.为初值条件,为初值条件,v 为自变量为自变量例例 1:求微分方程求微分方程 的通解,并验证。的通解,并验证。y=dsolve(Dy+2*x*y=x*exp(-x2),x)syms x;
17、diff(y)+2*x*y-x*exp(-x2)31微分方程微分方程求解求解q 几点说明几点说明l 如果省略初值条件,则表示求通解;如果省略初值条件,则表示求通解;l 如果省略自变量,则默认自变量为如果省略自变量,则默认自变量为 t dsolve(Dy=2*x,x);dy/dx=2xdsolve(Dy=2*x);dy/dt=2xl 若找不到解析解,则返回其积分形式。若找不到解析解,则返回其积分形式。l 微分方程中用微分方程中用 D 表示对表示对 自变量自变量 的导数,如:的导数,如:Dy y;D2y y;D3y y32微分方程微分方程求解求解例例 2:求微分方程求微分方程 满足初值条件满足初值
18、条件 的特解,并画出解函数的图形。的特解,并画出解函数的图形。y=dsolve(x*Dy+y-exp(x)=0,.y(1)=2*exp(1),x)ezplot(y);33微分方程微分方程求解求解例例3:求微分方程组求微分方程组 在初值条件在初值条件 下的特解,并画出解函数的图形。下的特解,并画出解函数的图形。x,y=dsolve(Dx+5*x+y=exp(t),Dy-x-3*y=0,.x(0)=1,y(0)=0,t)ezplot(x,y,0,1.3);注:解微分方程组时,如果所给的输出个数与方程个数相同,注:解微分方程组时,如果所给的输出个数与方程个数相同,则方程组的解则方程组的解 按词典顺序
19、按词典顺序 输出。输出。34其它运算其它运算反函数finverse(f,v):求求 f 关于指定变量关于指定变量 v 的反函数的反函数finverse(f):求求 f 关于默认变量的反函数关于默认变量的反函数 syms x t;f=x2+2*t;g1=finverse(f,x)g2=finverse(f,t)例:计算函数的反函数35MATLAB应用应用-解线性规划解线性规划36用用MATLAB优化工具箱解线性规划优化工具箱解线性规划minz=cX 1、模型:命令:x=linprog(c,A,b)2、模型:minz=cX 命令:x=linprog(c,A,b,Aeq,beq)注意:若没有不等式:
20、存在,则令A=,b=.373、模型:minz=cX VLBXVUB命令:1x=linprog(c,A,b,Aeq,beq,VLB,VUB)2x=linprog(c,A,b,Aeq,beq,VLB,VUB,X0)注意:1若没有等式约束:,则令Aeq=,beq=.2其中X0表示初始点4、命令:x,fval=linprog()返回最优解及处的目标函数值fval.38解解 编写编写M文件文件xxgh1.m如下:如下:c=-0.4-0.28-0.32-0.72-0.64-0.6;A=0.01 0.01 0.01 0.03 0.03 0.03;0.02 0 0 0.05 0 0;0 0.02 0 0 0.
21、05 0;0 0 0.03 0 0 0.08;b=850;700;100;900;Aeq=;beq=;vlb=0;0;0;0;0;0;vub=;x,fval=linprog(c,A,b,Aeq,beq,vlb,vub)39解解:编写编写M文件文件xxgh2.m如下:如下:c=6 3 4;A=0 1 0;b=50;Aeq=1 1 1;beq=120;vlb=30,0,20;vub=;x,fval=linprog(c,A,b,Aeq,beq,vlb,vub)40MATLAB应用应用 解非线性规划解非线性规划41一、二次规划一、二次规划(Quadratic Program)概念概念42二、二、Mat
22、lab中求解二次规划中求解二次规划4344转转化化为为matlabmatlab求解格式:求解格式:4546 定义定义如果目标函数或约束条件中至少有一个是非线性函数,则最优化问题就叫做非线性规划问题非线性规划问题四、非线性规划的基本概念四、非线性规划的基本概念 一般形式一般形式:(1)其中 ,是定义在 R Rn 上的实值函数()nTnRxxxX=,21L()()=.,.,2,10m;1,2,.,0.ljXhiXgtsji47五、非线性规划的基本解法五、非线性规划的基本解法SUTM外点法外点法SUTM内点法(障碍罚函数法)内点法(障碍罚函数法)1 罚函数法罚函数法2 近似线性规划法近似线性规划法4
23、8 1 1、罚函数法罚函数法 罚函数法罚函数法基本思想是通过构造罚函数把约束问题转化为一系列无约束最优化问题,进而用无约束最优化方法去求解这类方法称为序列无约束最小化方法序列无约束最小化方法简称为SUMTSUMT法法 其一为SUMTSUMT外点法外点法,其二为SUMTSUMT内点法内点法49Matlab求解非线性规划问题求解非线性规划问题 其中其中X为为n维变元向量,维变元向量,G(X)与与Ceq(X)均为非线性函数组成的均为非线性函数组成的向量。向量。50 1 首先建立首先建立M文件文件fun.m,用来定义目标函数用来定义目标函数F(X):function f=fun(X);f=F(X);M
24、ATLAB求解上述问题,基本步骤分三步求解上述问题,基本步骤分三步513 建立主程序建立主程序.求解非线性规划的函数是求解非线性规划的函数是fmincon,命令的基本命令的基本格式如下:格式如下:(1)x=fmincon(fun,X0,A,b)(2)x=fmincon(fun,X0,A,b,Aeq,beq)(3)x=fmincon(fun,X0,A,b,Aeq,beq,VLB,VUB)(4)x=fmincon(fun,X0,A,b,Aeq,beq,VLB,VUB,nonlcon)(5)x=fmincon(fun,X0,A,b,Aeq,beq,VLB,VUB,nonlcon,options)(6
25、)x,fval=fmincon()(7)x,fval,exitflag=fmincon()(8)x,fval,exitflag,output=fmincon()输出极值点M文件迭代的初值参数说明变量上下限fmincon函数可能会给出局部最优解,这与初值函数可能会给出局部最优解,这与初值X0的选取有关的选取有关521写成标准形式写成标准形式:s.t.2x1+3x2 6 s.t.x1+4x2 5 x1,x2 0例例532先建立先建立M-文件文件 fun3m:function f=fun3(x);f=-x(1)-2*x(2)+(1/2)*x(1)2+(1/2)*x(2)23再建立主程序youh2m:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 建模 matlab 符号 计算 及其 应用
限制150内