好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

第九讲符号运算ppt课件.ppt

41页
  • 卖家[上传人]:壹****1
  • 文档编号:591891019
  • 上传时间:2024-09-18
  • 文档格式:PPT
  • 文档大小:380KB
  • / 41 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 在前面讨论过求和函数sum,sum处理的级数是有穷级数对于无穷级数求和,sum是无能无力的求无穷级数的和需要使用符合表达式求和函数symsum1. 级数的符号求和级数符号求和函数symsum,调用格式为:symsum(a,n,n0,nn)级 数 例1 求级数之和1) 常数项级数n=sym('n');s1=symsum(1/n^2,n,1,inf) %求s1s1 =pi^2/6(2) s2=symsum((-1)^(n+1)/n,1,inf) %求s2未指定求和变量,缺省为ns2 = log(2) (3) 函数项级数函数项级数s3=symsum(n*x^n,n,1,inf) %求求s3此处的求和变量此处的求和变量n不能省略不能省略s3 = piecewise([abs(x) < 1, x/(x - 1)^2])(4) s4=symsum(n^2,1,100) %求求s4计算有限级数的和计算有限级数的和s4 = 338350(5) s5=symsum(sin(n*pi/6),1,inf) %求求s5。

      s5 = NaN 2 函数的泰勒级数 泰勒(Taylor)级数将一个任意函数表示为一个幂级数,并且,在许多情况下,只需要取幂级数的前有限项来表示该函数,这对于大多数工程应用问题来说,精度已经足够 MATLAB中提供了将函数展开为幂级数的函数taylor,其调用格式为:taylor(f,v,n,a) 该函数将函数f按变量v展开为泰勒级数,展开到第n项〔即变量v的n-1次幂〕为止,n的默认值为6,v的默认值与diff函数相同参数a指定将函数f在自变量v=a出展开,a的默认值是0 例 求函数在指定点的泰勒展开式 (1)求 的5阶泰勒级数展开式x=sym('x');f1=sqrt(1-2*x+x^3)-(1-3*x+x^2)^(1/3);taylor(f1,5) %求(1)ans =(119*x^4)/72 + x^3 + x^2/6(2)将 在x=1处按5次多项式展开f2=(1+x+x^2)/(1-x+x^2);taylor(f2,6,x,1) %求(2)。

      展开到x的5次幂时应选择n=6ans = 2*(x - 1)^3 - 2*(x - 1)^2 - 2*(x - 1)^5 + 3 MATLAB 5.x版中,尚未提供求函数傅立叶级数的内部函数下面我们自己设计一个版中,尚未提供求函数傅立叶级数的内部函数下面我们自己设计一个简化的求任意函数的傅立叶级数的函数文件简化的求任意函数的傅立叶级数的函数文件function mfourier=mfourier(f,n)syms x a b c;mfourier=int(f,-pi,pi)/2; %计算计算a0for i=1:n a(i)=int(f*cos(i*x),-pi,pi); b(i)=int(f*sin(i*x),-pi,pi); mfourier=mfourier+a(i)*cos(i*x)+b(i)*sin(i*x);endReturn调用该函数时,需给出被展开的符号函数调用该函数时,需给出被展开的符号函数f和展开项数和展开项数n,不可缺省不可缺省函数的傅立叶级数函数的傅立叶级数 例例6.26在在[-π,,π]区间展开函数为傅立叶级数区间展开函数为傅立叶级数。

      命令如下:命令如下:x=sym('x');a=sym('a');f=x;mfourier(f,5) %求求f(x)=x的傅立叶级数的前的傅立叶级数的前5项项f=abs(x);mfourier(f,5) %求求f(x)=|x|的傅立叶级数的前的傅立叶级数的前5项项syms a;f=cos(a*x);mfourier(f,6) %求求f(x)=cos(ax)的傅立叶级数的前的傅立叶级数的前6项项f=sin(a*x);mfourier(f,4) %求求f(x)=sin(ax)的傅立叶级数的前的傅立叶级数的前4项项 符号方程求解1 符号代数方程求解 代数方程是指未涉及微积分运算的方程,相对比较简单在MATLAB中,求解用符号表达式表示的代数方程可由函数solve实现,其调用格式为:solve(eq): 求解符号表达式表示的代数方程eq,求解变量为默认变量当方程右端为0时,方程eq中可以不包含右端项和等号,而仅列出方程左端的表达式solve(eq,v):求解符号表达式表示的代数方程eq,求解变量为vsolve(eq1,eq2,…,eqn,v1,v2,…,vn):求解符号表达式eq1,eq2,…,eqn组成的代数方程组,求解变量分别v1,v2,…,vn。

      若不指定求解变量,由默认规则确定 例 1 解下列方程(1) x=solve('1/(x+2)+4*x/(x^2-4)=1+2/(x-2)','x') %解方程(1)x = 1(2) f=sym('x-(x^3-4*x-7)^(1/3)=1');x=solve(f) x = 3 n(3) nx=solve('2*sin(3*x-pi/4)=1') %解方程解方程(3)nx =n (5*pi)/36n n (4) nx=solve('x+x*exp(x)-10','x') %解方程解方程(4)仅标出方程仅标出方程的左端的左端nx =n n1.6335061701558463841931651789789 例 解下列方程组(1) [x y]=solve('1/x^3+1/y^3=28','1/x+1/y=4','x,y') %解方程组(1)x = 1 1/3y = 1/3 1 (2) [x y]=solve('x+y-98','x^(1/3)+y^(1/3)-2','x,y') %解方程组(2)x = [ empty sym ] y = [] (3) [x y]=solve('x^2+y^2=5', '2*x^2-3*x*y-2*y^2=0','x,y') %解方程组解方程组(3)x' , y'ans = [ 2, -1, 1, -2]ans = [ 1, 2, -2, -1] 在应用MATLAB求解方程组时,应充分发挥其功能。

      当MATLAB给出无解或未找到所期望的解时,不要认为原方程组就真正无解了,还需要用其他方法试探着求解如果知道方程组在某点附近有解,不妨用方程组的数值求解函数fsolve试探求解,一般能找到所期望的解总之,方程组求解是一个古老而又困难的问题,而MATLAB给方程组求解提供了非常有效的手段 符号常微分方程求解在MATLAB 中,用大写字母D表示导数例如,Dy表示y',D2y表示y'',Dy(0)=5表示y'(0)=5D3y+D2y+Dy-x+5=0表示微分方程y'''+y''+y'-x+5=0 MATLAB的符号运算工具箱中提供了功能强大的求解常微分方程的函数dsolve该函数的调用格式为:dsolve('eqn1','condition','var') 该函数求解微分方程eqn1在初值条件condition下的特解参数var描述方程中的自变量符号,省略时按缺省原则处理,若没有给出初值条件condition,则求方程的通解 dsolve在求微分方程组时的调用格式为:dsolve('eqn1','eqn2',…,'eqnN','condition1',…,'conditionN','var1',…,'varN')函数求解微分方程组eqn1、…、eqnN在初值条件conditoion1、…、conditionN下的解,若不给出初值条件,则求方程组的通解,var1、…、varN给出求解变量。

      例 求微分方程的通解1)求 的通解 y=dsolve('Dy-(x^2+y^2)/x^2/2','x') %解(1)方程的右端为0时可以不写y = x*(-2+log(x)+C1)/(log(x)+C1) (2)求 的通解 y=dsolve('Dy*x^2+2*x*y-exp(x)','x') %解(2)y = (exp(x)+C1)/x^2 (3)求求 的特解的特解 ,, y=dsolve('Dy-x^2/(1+y^2)','y(2)=1','x'); %解解(3)y = (((x^3/2 - 2)^2 + 1)^(1/2) + x^3/2 - 2)^(1/3) - 1/(((x^3/2 - 2)^2 + 1)^(1/2) + x^3/2 - 2)^(1/3), (4)求求 的通解。

      的通解[x,y]=dsolve('Dx=4*x-2*y','Dy=2*x-y','t') %解方程组解方程组(4)x =C1+C2*exp(3*t)y =1/2*C2*exp(3*t)+2*C1 (5)求求 的通解 [x,y]=dsolve('D2x-y','D2y+x','t'); %解方程组解方程组(5)x = (2^(1/2)*C20*(i/2 + 1/2))/exp(2^(1/2)*t*(i/2 + 1/2)) - 2^(1/2)*C19*exp(2^(1/2)*t*(i/2 - 1/2))*(i/2 - 1/2) - (2^(1/2)*C17*exp(2^(1/2)*t*(i + 1))*(i/2 + 1/2))/exp(2^(1/2)*t*(i/2 + 1/2)) + (2^(1/2)*C18*exp(2^(1/2)*t*(i/2 - 1/2))*(i/2 - 1/2))/exp(2^(1/2)*t*(i - 1)) y = (2^(1/2)*C20*(i/2 - 1/2))/exp(2^(1/2)*t*(i/2 + 1/2)) - 2^(1/2)*C19*exp(2^(1/2)*t*(i/2 - 1/2))*(i/2 + 1/2) - (2^(1/2)*C17*exp(2^(1/2)*t*(i + 1))*(i/2 - 1/2))/exp(2^(1/2)*t*(i/2 + 1/2)) + (2^(1/2)*C18*exp(2^(1/2)*t*(i/2 - 1/2))*(i/2 + 1/2))/exp(2^(1/2)*t*(i - 1)) 线性方程组求解线性方程组求解q 线性方程性方程组求解求解linsolve(A,b):解线性方程组:解线性方程组 例:解方程组例:解方程组>> A=[1 2 –1; 1 0 1; 1 3 0];>> A=[1 2 –1; 1 0 1; 1 3 0];>> b=[2;3;8];>> b=[2;3;8];>> x=linsolve(A,b)>> x=linsolve(A,b)b是列向量!是列向量! 非线性方程的根非线性方程的根q Matlab 非线性方程的数值求解非线性方程的数值求解fzero(f,x0):求方程:求方程 f=0 在在 x0 附近的附近的根。

      根l 方程可能有多个根,但方程可能有多个根,但 fzero 只给出距离只给出距离 x0 最近的一个最近的一个l fzero 先找出一个包含先找出一个包含 x0 的区间,使得的区间,使得 f 在这个区间两在这个区间两个端点上的函数值异号,然后再在这个区间内寻找方程个端点上的函数值异号,然后再在这个区间内寻找方程 f=0 的根;如果找不到这样的区间,则返回的根;如果找不到这样的区间,则返回 NaNl x0 是一个标量,不能缺省是一个标量,不能缺省l 由于由于 fzero 是根据函数是否穿越横轴来决定零点,因此是根据函数是否穿越横轴来决定零点,因此它无法确定函数曲线仅触及横轴但不穿越的零点,如它无法确定函数曲线仅触及横轴但不穿越的零点,如 |sin(x)| 的所有零点的所有零点 非线性方程的根非线性方程的根q fzero 的另外一种调用方式的另外一种调用方式fzero(f,[a,b])l 方程在方程在 [a,b] 内可能有多个根,但内可能有多个根,但 fzero 只给出一个只给出一个l 求方程求方程 f=0 在在 [a,b] 区间内的根区间内的根q 参数参数 f 可通过以下方式给出:可通过以下方式给出:l fzero('x^3-3*x+1',2); l f=inline('x^3-3*x+1'); fzero(f,2)l fzero((x)x^3-3*x+1,2);l f 不是方程!也不能使用符号表达式!不是方程!也不能使用符号表达式! 例:例:>> fzero('sin(x)',10)>> fzero('sin(x)',10)>> fzero(sin,10)>> fzero(sin,10)>> fzero('x^3-3*x+1',1)>> fzero('x^3-3*x+1',1)>> fzero('x^3-3*x+1',[1,2])>> fzero('x^3-3*x+1',[1,2])>> fzero('x^3-3*x+1=0',1)>> fzero('x^3-3*x+1=0',1)X>> fzero('x^3-3*x+1',[-2,0])>> fzero('x^3-3*x+1',[-2,0])>> f=inline('x^3-3*x+1');>> f=inline('x^3-3*x+1');>> fzero(f,[-2,0])>> fzero(f,[-2,0]) Matlab 符号方程求解器符号方程求解器s=solve(f,v):求方程关于指定自变量的解;:求方程关于指定自变量的解;s=solve(f):求方程关于默认自变量的解。

      求方程关于默认自变量的解l f 可以是用字符串表示的方程,或符号表达式;可以是用字符串表示的方程,或符号表达式;l 假设假设 f 中不含等号,则表示解方程中不含等号,则表示解方程 f=0q solve例:解方程例:解方程 x^3-3*x+1=0>> syms x; f=x^3-3*x+1;>> syms x; f=x^3-3*x+1;>> s=solve(f,x)>> s=solve(f,x)>> s=solve('x^3-3*x+1','x')>> s=solve('x^3-3*x+1','x')>> s=solve('x^3-3*x+1=0','x')>> s=solve('x^3-3*x+1=0','x') Matlab 符号方程求解器符号方程求解器q solve 也可以用也可以用来解方程解方程组solve( f1 , f2 , ... , fN , v1 , v2 , ... , vN)求解由求解由 f1 , f2 , ... , fN 确定的方程组关于确定的方程组关于 v1 , v2 , ... , vN 的解的解例:解方程组例:解方程组>> [x,y,z]=solve('x+2*y-z=27','x+z=3', ...>> [x,y,z]=solve('x+2*y-z=27','x+z=3', ... 'x^2+3*y^2=28','x','y','z') 'x^2+3*y^2=28','x','y','z')输出变量的顺序要书写正确!输出变量的顺序要书写正确! solve 在得不到解析解时,会给出数值在得不到解析解时,会给出数值解。

      解例:解方程组例:解方程组>> [x,y,z]=solve('x+2*y-z=27','x+z=3', ...>> [x,y,z]=solve('x+2*y-z=27','x+z=3', ... 'x^5+3*y^2=28','x','y','z') 'x^5+3*y^2=28','x','y','z') 符号常微分方程求解在MATLAB 中,用大写字母D表示导数例如,Dy表示y',D2y表示y'',Dy(0)=5表示y'(0)=5D3y+D2y+Dy-x+5=0表示微分方程y'''+y''+y'-x+5=0 MATLAB的符号运算工具箱中提供了功能强大的求解常微分方程的函数dsolve该函数的调用格式为:dsolve('eqn1','condition','var') 该函数求解微分方程eqn1在初值条件condition下的特解参数var描述方程中的自变量符号,省略时按缺省原则处理,若没有给出初值条件condition,则求方程的通解 微分方程〔组〕的数值解微分方程〔组〕的数值解 事实上,能够求得解析解的微分方程或微分方程组少之又少,多数情况下需要求出微分方程〔组〕的数值解。

      Matlab中求微分方程数值解的函数有五个:ode45,ode23,ode113,ode15s,ode23s调用格式为[t, x] = solver (‘f’, ts, x0, options) 需要特别注意的是: ① solver 可以取以上五个函数之一,不同的函数代表不同的内部算法:ode23 运用组合的 2/3 阶龙格—库塔—费尔贝算法,ode45 运用组合的 4/5 阶龙格—库塔—费尔贝算法通常使用函数 ode45; ② f 是由待解方程写成的m文件的文件名; ③ ts=[t0, tf],t0、tf为自变量的初值和终值; ④ x0为函数的初值; ⑤ options 用于设定误差限〔可以缺省,缺省时设定为相对误差 103,绝对误差 106),程序为options = odeset(‘reltol’, rt, ‘abstol’, at)其中rt和at分别为设定的相对误差和绝对误差; ⑥ 在解 n 个未知函数的方程组时,x0、x 均为 n 维向量,m 文件中待解方程组应以 x 的分量形式写成; ⑦ 使用 Matlab 软件求数值解时,高阶微分方程必须等价地变换成一阶微分方程组。

      例 8.5.4 求解下列微分方程解:令 y1 = x,y2 = y1,则微分方程变为一阶微分方程组: (1) 建立 m 文件 vdp1000.m 如下: function dy=vdp1000(t,y) dy=zeros(2,1); dy(1)=y(2); dy(2)=1000*(1-y(1)^2)*y(2)-y(1); (2) 取 t0=0,tf=3000,输入命令: [T,Y]=ode15s('vdp1000',[0 3000],[2 0]); plot(T,Y(:,1),'-')运行程序,得到如图的结果 例 8.5.5 求解下列微分方程组 (1) 建立 m 文件 rigid.m 如下: function dy=rigid(t,y) dy=zeros(3,1); dy(1)=y(2)*y(3); dy(2)=-y(1)*y(3); dy(3)=-0.51*y(1)*y(2);(2) 取 t0=0,tf=12,输入命令: [T,Y]=ode45('rigid',[0 12],[0 1 1]); plot(T,Y(:,1),'-',T,Y(:,2),'*',T,Y(:,3),'+') 运行程序,得到如图的结果。

      图中,y1 的图形为实线,y2 的图形为“*”线,y3 的图形为“+”线 其它运算其它运算q 反函数反函数finverse(f,v):求:求 f 关于指定变量关于指定变量 v 的反的反函数函数finverse(f):求:求 f 关于默认变量的反函数关于默认变量的反函数>> syms x t; f=x^2+2*t;>> syms x t; f=x^2+2*t;>> g1=finverse(f,x)>> g1=finverse(f,x)>> g2=finverse(f,t)>> g2=finverse(f,t)例:计算函数例:计算函数 的反函数的反函数 2.求解一阶微分方程 dy/dx = 1 + y2 1.已知函数 求其taylor幂级数展开的前5项,并关x=2和x=a进行taylor幂级数展开3.求解下列微分方程的通解及 y(0) = 0 和y (0) = 15 条件下的特解 上机作业 。

      点击阅读更多内容
      相关文档
      2026年一级消防工程师考试《消防安全综合能力》预习卷.docx 2025年执业药师《药学专业知识(一)》预测试卷一.docx 2026年证券从业资格考试《证券市场基本法律法规》提分卷二.docx 2025高考真题--全国II卷高考英语真题【原卷+听力音频+听力原文+答案】.docx 2024年高考真题--新课标全国ⅠⅠ卷【英语】真题及答案(含听力音频).docx 2025年秋江苏开放大学农业生态工程060165形考作业123答案.docx 2026年一级造价工程师考试《建设工程造价案例分析(土建专业)》模拟卷.docx 2024年一级建造师-港口与航道工程管理与实务-2024年真题解析.docx 2026年一级建造师考试《公路工程管理与实务》破题卷.docx 2026年证券从业资格考试《金融市场基础知识》提分卷二.docx 2025年秋江开机电设备故障诊断与维修050096第1次形考作业带答案.docx 2025年高考真题---山东省高考真题地理试卷(含答案).docx 2025年高考真题--山东省生物高考真题(含答案).docx 2025年秋江苏开放⼤学建筑材料第⼀次作业答案.docx 2025年高考真题--云南高考地理真题(含答案).docx 2025高考真题--北京卷语文真题(含答案).docx 2025年秋江苏开放⼤学机电设备伺服与变频应⽤第1次形考作业答案.docx 2025年秋江苏开放⼤学机械创新设计060260过程性考核作业1.docx 2025年秋江苏开放大学 知识产权文献检索与应用060933过程性考试.docx 2025年高考云南物理真题(答案参考).docx
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.