MATLAB 之 级数计算和方程符号求解

这篇具有很好参考价值的文章主要介绍了MATLAB 之 级数计算和方程符号求解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、级数

  • 级数是表示函数,研究函数性质以及进行数值计算的一种工具,特别是可以利用收敛的无穷级数来逼近一些无理数,使它们的求值变得更方便。

1. 级数符号求和

  • 前面曾讨论过有限级数求和的函数 sum,sum 处理的级数是以一个向量形式表示的,并且只能是有穷级数,对于无穷级数求和,sum 是无能为力的。
  • 求无穷级数的和需要符号表达式求和函数 symsum,其调用格式如下:
	symsum(s,v,n,m)
  • 其中, s s s 表示一个级数的通项,是一个符号表达式。 v v v 是求和变量, v v v 省略时使用系统的默认变量。 n n n m m m 是求和的开始项和末项。
  • 例如,我们求下列定积分。
  • (1) s 1 = 1 + 1 4 + 1 9 + 1 16 + ⋯ + 1 n 2 + ⋯ s_{1}=1+\frac{1}{4}+\frac{1}{9}+\frac{1}{16}+\cdots +\frac{1}{n^{2}}+\cdots s1=1+41+91+161++n21+
  • (2) s 2 = 1 − 1 2 + 1 3 − 1 4 + ⋯ + ( − 1 ) n + 1 1 n + ⋯ s_{2}=1-\frac{1}{2}+\frac{1}{3}-\frac{1}{4}+\cdots +(-1)^{n+1}\frac{1}{n}+\cdots s2=121+3141++(1)n+1n1+
  • (3) s 3 = x + 2 x 2 + 3 x 3 + ⋯ + n x n + ⋯ s_{3}=x+2x^{2}+3x^{3}+\cdots +nx^{n}+\cdots s3=x+2x2+3x3++nxn+
  • (4) s 4 = 1 + 4 + 9 + 16 + ⋯ + 10000 s_{4}=1+4+9+16+\cdots +10000 s4=1+4+9+16++10000
  • 程序如下:
>> n=sym('n');
>> x=sym('x');
>> s1=symsum(1/n^2,n,1,inf)            	%求s1
 
s1 =
 
pi^2/6
 
>> s2=symsum((-1)^(n+1)/n,1,inf)    	%求s2。未指定求和变量,默认为n
 
s2 =
 
log(2)
 
>> s3=symsum (n*x^n,n,1,inf)           	%求s3。此处的求和变量n不能省略   
 
s3 =
 
piecewise(abs(x) < 1, x/(x - 1)^2)
 
>> s4=symsum(n^2,1,100)              	%求s4。计算有限级数的和
 
s4 =
 
338350
 
  • 其中,s3 的结果表示 ∣ x ∣ < 1 \left | x \right | < 1 x<1 时,级数和 s3 = x ( x − 1 ) 2 =\frac{x}{(x-1)^2} =(x1)2x

2. 函数的泰勒级数

  • 泰勒(Taylor)级数将一个任意函数表示为一个幂级数,并且,在许多情况下,只需要取幂级数的前有限项来表示该函数,这对于大多数工程应用问题来说,精度已经足够。
  • MATLAB 提供了 taylor 函数将函数展开为幂级数,其调用格式如下:
	taylor (f,v,a)
	taylor (f, v,a, Name, Value)
  • 该函数将函数 f f f 按变量 v v v 展开为泰勒级数 v v v 的默认值与 symvar 函数指示的默认变量相同。参数 a a a 指定将函数 f f f 在自变量 v = a v=a v=a 处展开, a a a 的默认值是 0。
  • 第二种格式用于运算时设置相关选项,Name 和 Value 成对使用,Name 为选项,Value 为 Name 的值。Name 有以下 3 个可取字符串。
  • (1) 'ExpansionPoint':指定展开点,对应值为标量或向量。未设置时,展开点为 0。
  • (2) 'Order':指定截断阶,对应值为一个 正整数。未设置时,截断阶为 6,即展开式的最高阶为 5。
  • (3) 'OrderMode':指定展开式采用绝对阶或相对阶,对应值为 ‘Absolute’(绝对阶)或 ‘Relative’(相对阶)。未设置时取 ‘Absolute’。
  • 例如,我们求函数在指定点的泰勒级数展开式。
  • (1) 求 1 − 2 x + x 3 − 1 − 3 x + x 2 3 \sqrt{1-2x+x^{3}}-\sqrt[3]{1-3x+x^{2}} 12x+x3 313x+x2 的 5 阶泰勒级数展开式。
  • (2) 将 1 − 2 x + x 3 − 1 − 3 x + x 2 3 \sqrt{1-2x+x^{3}}-\sqrt[3]{1-3x+x^{2}} 12x+x3 313x+x2 x = 1 x=1 x=1 处按 5 次多项式展开。
  • 程序如下:
>> x=sym('x');
>> f1=sqrt(1-2*x+x^3)-(1-3*x+x^2)^(1/3);
>> f2=(1+x+x^2)/(1-x+x^2);
>> taylor(f1)					%求(1)
 
ans =
 
(239*x^5)/72 + (119*x^4)/72 + x^3 + x^2/6
 
>> taylor(f2,x,1,'Order',6)		%求(2)。展开到x-15次幂时应选择x=6
 
ans =
 
2*(x - 1)^3 - 2*(x - 1)^2 - 2*(x - 1)^5 + 3
 

二、方程符号求解

  • 除了常规的代数方程以及常微分方程数值求解的方法,MATLAB 还提供了 solvedsolve 函数,可以用符号运算求解代数方程和常微分方程。

1. 代数方程符号求解

  • 代数方程是指未涉及微积分运算的方程,相对比较简单。在 MATLAB 中,求解符号表达式表示的代数方程可由函数 solve 实现,其调用格式如下:
  • solve(s):求解符号表达式 s s s 的代数方程,求解变量为默认变量。
  • solve(s,v):求解符号表达式 s s s 的代数方程,求解变量为 v v v
  • solve(s1,s2,...,sn],[v1,v2,...,vn]):求解符号表达式 s 1 , s 2 , … , s n s_{1},s_{2},\dots ,s_{n} s1,s2,,sn 组成的代数方程组,求解变量分别为 v 1 , v 2 , … , v n v_{1},v_{2},\dots ,v_{n} v1,v2,,vn
  • 例如,我们求解下列方程。
  • (1) 1 x + 2 + 4 x x 2 − 4 = 1 + 2 x − 2 \frac{1}{x+2}+\frac{4x}{x^{2}-4}=1+\frac{2}{x-2} x+21+x244x=1+x22
  • (2) x − x 3 − 4 x − 7 3 = 1 x-\sqrt[3]{x^{3}-4x-7}=1 x3x34x7 =1
  • (3) 2 sin ⁡ ( 3 x − π 4 ) = 1 2\sin (3x-\frac{\pi}{4})=1 2sin(3x4π)=1
  • (4) x + x e x − 10 = 0 x+xe^{x}-10=0 x+xex10=0
  • 程序如下:
>> syms x
>> f=1/(x+2)+4*x/(x^2-4)==1+2/(x-2)				%定义(1)中函数
 
f =
 
1/(x + 2) + (4*x)/(x^2 - 4) == 2/(x - 2) + 1
 
>> x=solve(f)									%解方程(1)
 
x =
 
1
 
>> syms x
>> f=x-(x^3-4*x-7)^(1/3)==1						%定义(2)中方程
 
f =
 
x - (x^3 - 4*x - 7)^(1/3) == 1

>> x=solve(f)									%解方程(2)
 
x =
 
3
 
>> syms x
>> f=2*sin(3*x-pi/4)==1							%定义(3)中方程

f =
 
2*sin(3*x - pi/4) == 1
 
>> x=solve(f)									%解方程(3)
 
x =
 
 (5*pi)/36
(13*pi)/36
 
>> syms x
>> f=x+x*exp(x)-10								%定义(4)中方程
 
f =
 
x + x*exp(x) - 10
 
>> x=solve(f,x)									%解方程(4)。仅标出方程的左端
 
x =
 
1.6335061701558463841931651789789
 
  • 例如,我们求解下列方程。
  • (1) { 1 x 3 + 1 y 3 = 28 1 x + 1 x = 4 \left\{\begin{matrix}\frac{1}{x^{3}}+\frac{1}{y^{3}}=28 \\\frac{1}{x}+\frac{1}{x}=4 \end{matrix}\right. {x31+y31=28x1+x1=4
  • (2) { x + y = 98 x 3 + y 3 = 2 \left\{\begin{matrix}x+y=98 \\\sqrt[3]{x}+\sqrt[3]{y}=2 \end{matrix}\right. {x+y=983x +3y =2
  • (3) { u 3 + v 3 = 98 u + v = 2 \left\{\begin{matrix}u^{3}+v^{3}=98 \\u+v=2 \end{matrix}\right. {u3+v3=98u+v=2
  • (4) { x 2 + y 2 = 5 2 x 2 − 3 x y − 2 y 2 = 0 \left\{\begin{matrix}x^{2}+y^{2}=5 \\2x^{2}-3xy-2y^{2}=0 \end{matrix}\right. {x2+y2=52x23xy2y2=0
  • 程序如下:
>> syms x y
>> f1=1/x^3+1/y^3==28	%定义(1)中方程
 
f1 =
 
1/x^3 + 1/y^3 == 28
 
>> f2=1/x+1/y==4	%定义(1)中方程
 
f2 =
 
1/x + 1/y == 4
 
>> [x,y]=solve([f1,f2],[x,y])	%解方程组(1)
 
x =
 
  1
1/3
 
 
y =
 
1/3
  1
 
>> syms x y
>> f1=x+y==98	%定义(2)中方程
 
f1 =
 
x + y == 98
 
>> f2=x^(1/3)+y^(1/3)==2	%定义(2)中方程
 
f2 =
 
x^(1/3) + y^(1/3) == 2
 
>> [x,y]=solve([f1,f2],[x,y])	%解方程组(2)
 
x =
 
Empty sym: 0-by-1
 
 
y =
 
Empty sym: 0-by-1

  • 对方程组 (2),MATLAB 给出了无解的结论,显然错误,请看完全与其同构的方程组(3)。输入程序如下:
>> syms u v
>> f1=u^3+v^3==98	%定义(3)中方程
 
f1 =
 
u^3 + v^3 == 98
 
>> f2=u+v==2	%定义(3)中方程
 
f2 =
 
u + v == 2
 
>> [u,v]=solve([f1,f2],[u,v])	%解方程组(3)
 
u =
 
 5
-3
 
 
v =
 
-3
 5
 
>> syms x y
>> f1=x^2+y^2==5	%定义(4)中方程
 
f1 =
 
x^2 + y^2 == 5
 
>> f2=2*x^2-3*x*y-2*y^2==0	%定义(4)中方程
 
f2 =
 
2*x^2 - 3*x*y - 2*y^2 == 0
 
>> [x,y]=solve([f1,f2],[x,y])	%解方程组(4)
 
x =
 
 1
-2
 2
-1
 
 
y =
 
-2
-1
 1
 2
 
  • 在应用 MATLAB 求解方程组时,应充分发挥其功能。当 MATLAB 给出无解或未找到所期望的解时,不要认为原方程组就真正无解了,还需要用其他方法试探着求解。
  • 如果知道方程组在某点附近有解,不妨用方程组的数值求解函数 fsolve 试探求解,一般能找到所期望的解。

2. 常微分方程符号求解

  • 在 MATLAB 中,用大写字母 D 表示导数。例如,Dy 表示 y ′ y' y,D2y 表示 y " y" y",Dy(0)=5 表示 y ′ ( 0 ) = 5 y'(0)=5 y(0)=5。D3y+D2y+Dy -x+5=0 表示微分方程 y " + y " + y ′ x + 5 = 0 y"+y"+y' x+5=0 y"+y"+yx+5=0
  • 符号常微分方程求解可以通过函数 dsolve 来实现,其调用格式如下:
	dsolve(e,c,v)
  • 该函数求解常微分方程 e e e 在初值条件 c c c 下的特解。参数 v v v 描述方程中的自变量,省略时按默认原则处理,若没有给出初值条件 c c c,则求方程的通解。
  • dsolve 函数在求常微分方程组时的调用格式如下:
	dsolve(e1,e2,,en,c1,,cn,v)
  • 该函数求解常微分方程组 e1,…,en 在初值条件 c1,…,cn 下的特解,若不给出初值条件,则求方程组的通解。 v v v 给出求解变量,如果没有指定自变量,则采用默认自变量 t t t
  • 例如,我们求下列定积分。
  • (1) 求 d y d x = x 2 + y 2 2 x 2 \frac{\mathrm{d} y}{\mathrm{d} x} =\frac{x^{2}+y^{2}}{2x^{2}} dxdy=2x2x2+y2 的通解。
  • (2) 求 x 2 d y d x + 2 x y = e x x^{2}\frac{\mathrm{d} y}{\mathrm{d} x} +2xy=e^{x} x2dxdy+2xy=ex 的通解。
  • (3) 求 d y d x = x 2 1 + y 2 \frac{\mathrm{d} y}{\mathrm{d} x} =\frac{x^{2}}{1+y^{2}} dxdy=1+y2x2 的特解, y ( 2 ) = 1 y(2)=1 y(2)=1
  • (4) 求 { d y d x = 4 x − 2 y d y d x = 2 x − y \left\{\begin{matrix}\frac{\mathrm{d} y}{\mathrm{d} x} =4x-2y \\\frac{\mathrm{d} y}{\mathrm{d} x} =2x-y \end{matrix}\right. {dxdy=4x2ydxdy=2xy 的通解。
  • 程序如下:
>> y=dsolve('Dy-(x^2+y^2)/x^2/2','x')		%解(1)。方程的右端为0时可以不写
 
y =
 
-x*(1/(C1 + log(x)/2) - 1)
                         x
 
>> y=dsolve('Dy*x^2+2*x*y-exp(x)','x')		%解(2)

y =
 
-(C1 - exp(x))/x^2
 
>> 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)
 
>> [x,y]=dsolve('Dx=4*x-2*y','Dy=2*x-y','t')	%解方程组(4)
  
x =
 
C1/2 + 2*C2*exp(3*t)
  
y =
 
C1 + C2*exp(3*t)
 
  • 在 MATLAB 中,dsolve 函数一律使用显式方式表示结果,有时解的表达式很冗长。必要时可作化简处理。

文章来源地址https://www.toymoban.com/news/detail-496128.html

到了这里,关于MATLAB 之 级数计算和方程符号求解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • MATLAB:方程组的求解

    MATLAB:方程组的求解

    综合实例应用:方程组的求解 无论工程应用问题,还是数学计算问题,方程组都是解决问题转化的重要途径之一,将复杂问题转化为简单的方程组矩阵求解问题。 利用矩阵分解来求解线性方程组,是工程计算中最常用的计算。 LU分解法是先将系数矩阵A进行LU分解,得到LU=P

    2024年01月19日
    浏览(11)
  • MATLAB-常微分方程求解

    MATLAB-常微分方程求解

    MATLAB中可以用来求解常微分方程(组)的函数有ode23、 ode23s、 ode23t、 ode23tb 、ode45、ode15s和odel13等,见下表。它们的具体调用方法类似,为了方便后面的描述, 在后面的介绍中将使用solver统一代替它们。 函数的具体调用方法如下。 [T,Y] =solver( odefun, tspan,y0) [T,Y] = solver( odefun,

    2024年02月02日
    浏览(9)
  • MATLAB-线性方程组求解

    线性方程组是线性代数中的重要内容之一,其理论发展的最为完善。MATLAB中包含多种处理线性方程组的命令,下面进行详细介绍。 对于形如AX=B的方程组来说,假设其系数矩阵A是m×n的矩阵,根据其维数可以将方程组分以下3种情况。 1)若m=n,则为恰定方程组,即方程数等于未知

    2023年04月16日
    浏览(12)
  • MATLAB 之 非线性方程数值求解、最优化问题求解和常微分方程初值问题的数值求解

    MATLAB 之 非线性方程数值求解、最优化问题求解和常微分方程初值问题的数值求解

    非线性方程的求根方法很多,常用的有牛顿迭代法,但该方法需要求原方程的导数,而在实际运算中这一条件有时 是不能满足的,所以又出现了弦截法、二分法等其他方法。 在 MATLAB 中,非线性方程的求解和最优化问题往往需要调用最优化工具箱来解决。优化工具箱提供了一

    2024年02月08日
    浏览(15)
  • 热传导方程以及Matlab求解

    热传导方程以及Matlab求解

    设 u = u ( x ⃗ , t ) u=u(vec{x},t) u = u ( x , t ) 表示某一个均匀物体 Ω ⊂ R 3 Omegasubsetmathbb{R}^3 Ω ⊂ R 3 在位置 x ⃗ vec{x} x ,时刻 t t t 的温度(单位: K K K ), c c c 表示比热(单位: J / ( k g ⋅ K ) J/(kgcdot K) J / ( k g ⋅ K ) ), ρ rho ρ 表示密度(单位: k g / m 3 kg/m^3 k g / m 3 ),令

    2024年02月06日
    浏览(10)
  • MATLAB 之 线性方程组求解

    在 MATLAB 中,关于线性方程组的解法一般分为两类:一类是直接法,就是在没有舍入误差的情况下,通过有限步的矩阵初等运算来求得方程组的解;另一类是迭代法,就是先给定一个解的初始值,然后按照一定的迭代算法进行逐步逼近,求出更精确的近似解。 线性方程组的直

    2024年02月08日
    浏览(9)
  • 单模光纤的特征方程以及MATLAB求解

    单模光纤的特征方程以及MATLAB求解

    在之前的文章中,我们写出了单模光纤的特征方程以及对应的导波模式 这里我们在MATLAB中求解特征方程并表示出几个归一化参数的变化曲线 用到的公式是单模光纤导波模式的特征方程: fzero函数能求解fun(x) = 0 的点 x。 使用方式: 其中x0表示初始值 我们从0-10之间选取了N(

    2024年02月05日
    浏览(14)
  • 李雅普诺夫方程以及MATLAB函数求解

    (1)开环系统:x(k+1)=Ax(k)+Bu(k) A T PA - P = -Q (2)闭环系统:x(k+1)=Ax(k)+Bu(k) (A-BK) T P(A-BK) - P = -Q (1)开环系统:x(k+1)=Ax(k)+Bu(k) A T P - P A= -Q (2)闭环系统:x(k+1)=Ax(k)+Bu(k) (A-BK) T P - P(A-BK) = -Q 连续时间系统: P = lyap (A , Q) 就可以求解满足李雅普诺夫方程的对称矩阵P。 离散时间系

    2024年02月08日
    浏览(7)
  • 10种基于MATLAB的方程组求解方法

    10种基于MATLAB的方程组求解方法

              线性方程组的求解包括直接法和迭代法,其中迭代法包括传统的高斯消元法,最速下降法,牛顿法,雅克比迭代法,共轭梯度法,以及智能启发式算法求解法和神经网络学习算法,传统算法可以相互组合改进,智能仿生启发式算法包括粒子群算法,遗传算法,模拟

    2024年02月02日
    浏览(13)
  • matlab使用教程(6)—线性方程组的求解

    matlab使用教程(6)—线性方程组的求解

            进行科学计算时,最重要的一个问题是对联立线性方程组求解。在矩阵表示法中,常见问题采用以下形式:给定两个矩阵 A 和 b,是否存在一个唯一矩阵 x 使 Ax = b 或 xA = b?         考虑一维示例具有指导意义。例如,方程         7x = 21         是否具

    2024年02月14日
    浏览(11)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包