jjzjj

MATLAB教程七:MATLAB符号计算

都是Bug惹的祸 2024-07-02 原文

文章目录

7.1 符号对象

符号对象的建立:

sym函数:用于建立单个符号对象,其常用调用格式为:

                                 符号对象名=sym(A)

将由 A 来建立符号对象。其中,A 可以是一个数值常量、数值矩阵或数值表达式(不加单引号),此时符号对象为一个符号常量;A也可以是一个变量名(加单引号),这时符号对象为一个符号变量。

>> t=sym(2);
>> t+1/2
ans=
	5/2
>> sin(sym(pi/3))
ans =
	3^(1/2)/2
>> sin(pi/3)
ans =
	0.8660

syms命令:可以一次定义多个符号变量,其一般调用格式如下:

             syms 符号变量名1 符号变量名2 … 符号变量名n

其中,变量名不能加单引号,相互之间用空格隔开。

符号对象的运算:

四则运算:符号表达式的四则运算与数值运算一样,用+、-、*、/、^ 运 算符实现,其运算结果依然是一个符号表达式。

>> syms x;
>> f=2*x^2+3*x-5;
>> g=x^2-x+7;
>> f+g
ans =
	3*x^2 + 2*x + 2

关系运算

6种关系运算符:<、<=、>、>=、==、~=。

对应的6个函数:lt()、le()、gt()、ge()、eq()、ne()。

逻辑运算

3种逻辑运算符:&(与)、|(或)和~(非)。

4个逻辑运算函数:and(a,b)、or(a,b)、not(a)和xor(a,b)。

>> syms x;
>> y=and(x>0,x<10)
y=
	0<x & x<10

因式分解与展开运算

  • factor(s):对符号表达式s分解因式,也可以对数进行分解质因子。
  • expand(s):对符号表达式s进行展开。
  • collect(s):对符号表达式s合并同类项。
  • collect(s,v):对符号表达式s按变量v合并同类项。
>> syms a b;
>> s=a^3-b^3;
>> factor(s) 
ans=
	[ a-b, a^2 + a*b + b^2]
>> factor(12)
ans=
2 2 3

>> syms x;
>> y=(x+2)^3;
>> expand(y)
ans =
	x^3 + 6*x^2 + 12*x + 8

其他运算

  • [n,d]=numden(s):提取有理分式的分子分母。
  • c=coeffs(s,x):提取符号表达式的系数。
  • simplify(s):符号表达式化简。
  • p=sym2poly(s):符号多项式转换为多项式系数向量。
  • s=poly2sym§:多项式系数向量转换为符号多项式。

例:求方程ax2+bx+c=0的根。

>> syms a b c x;
>> f=a*x^2+b*x+c
f =
a*x^2 + b*x + c
>> g=coeffs(f,x)
g =
[c, b, a]
>> g=g(end:-1:1)
g =
[a, b, c]
>> roots(g)
ans =
	-(b + (b^2 - 4*a*c)^(1/2))/(2*a)
	-(b - (b^2 - 4*a*c)^(1/2))/(2*a)

符号矩阵:

符号矩阵:也是一种符号表达式,所以符号表达式运算都可以在矩阵意义下进行。

注意:这些函数作用于符号矩阵时,是分别作用于矩阵的每一个元素。

例:建立符号矩阵并化简

>> syms a b x y alp;
>> m=[a^3-b^3,sin(alp)^2+cos(alp)^2;(15*x*y-3*x^2)/(x-5*y),78]
m =
	[                   a^3 - b^3, cos(alp)^2 + sin(alp)^2]
	[(- 3*x^2 + 15*y*x)/(x - 5*y),                      78]
>> simplify(m)
ans =
	[a^3 - b^3,  1]
	[     -3*x, 78]

7.2 符号微积分

符号函数的极限:

  • limit(f,x,a):求符号函数极限的命令为 limit,即求函数 f 关于变量 x 在 a 点的极限。
  • limit(f,x,a,‘right’) :求函数 f 关于变量 x 在 a 点的左极限。
  • limit(f,x,a,‘left’):求函数 f 关于变量x 在 a 点的右极限。

例:求下列极限
( 1 ) lim ⁡ x → a x m − a m x − a ( 2 ) lim ⁡ n → ∞ ( 1 + 1 n ) n (1)\lim_{x\to a}\frac{\sqrt[m]{x}-\sqrt[m]{a}}{x-a} \quad \quad \quad \quad \quad \quad \quad (2)\lim_{n \to \infty}(1+\frac{1}{n})^n (1)xalimxamx ma (2)nlim(1+n1)n

>> syms a m x n;
>> f=(x^(1/m)-a^(1/m))/(x-a);
>> limit(f,x,a)  
ans =
	a^(1/m - 1)/m
	
>> g=(1+1/n)^n;
>> limit(g,n,inf) 
ans =
	exp(1)

符号函数的导数:

  • diff(f,x,n):即求函数 f 关于变量 x 的 n 阶导数。参数 x 的用法同求极限函数 limit,可以缺省,默认值与 limit 相同,n 的默认值是1。

例:求下列函数的导数
( 1 ) y = 1 + e x , 求 y ’ ( 2 ) z = x e y y 2 , 求 z x ′ 、 z y ′ (1)y=\sqrt{1+e^x},求y’ \quad\quad\quad\quad\quad (2)z=\frac{xe^y}{y^2},求z_x'、z_y' (1)y=1+ex ,y(2)z=y2xey,zxzy

>> syms x y z;
>> f=sqrt(1+exp(x));
>> diff(f) 
ans =
	exp(x)/(2*(exp(x) + 1)^(1/2))
	
>> g=x*exp(y)/y^2;
>> diff(g,x) 
ans =
	exp(y)/y^2 
>> diff(g,y) 
ans =
	(x*exp(y))/y^2 - (2*x*exp(y))/y^3

符号函数的积分:

不定积分

  • int(f,x):求函数 f 对变量 x 的不定积分。

例:求下列不定积分
( 1 ) ∫ ( 3 − x 2 ) 3 d x ( 2 ) ∫ 5 x t 1 + x 2 d t (1)\int(3-x^2)^3dx \quad\quad\quad\quad\quad\quad\quad (2)\int \frac{5xt}{1+x^2}dt (1)(3x2)3dx(2)1+x25xtdt

>> syms x t;
>> f=(3-x^2)^3;
>> int(f)
ans = 
	- x^7/7 + (9*x^5)/5 - 9*x^3 + 27*x 
>> g=5*x*t/(1+x^2);
>> int(g,t) 
ans = 
	(5*t^2*x)/(2*(x^2 + 1))

定积分

  • int(f,x,a,b):求函数 f 对变量 x 的不定积分。其中,a、b分别表示定积分的下限和上限。

例:求下列定积分
( 1 ) ∫ 1 2 ∣ 1 − x ∣ d x ( 2 ) ∫ − ∞ + ∞ 1 1 + x 2 d x ( 3 ) ∫ 2 s i n x 4 x t d t (1)\int_1^2|1-x|dx \quad\quad\quad (2)\int_{-\infty}^{+\infty}\frac{1}{1+x^2}dx \quad\quad\quad (3)\int_2^{sinx}\frac{4x}{t}dt (1)12∣1xdx(2)+1+x21dx(3)2sinxt4xdt

>> syms x t;
>> int(abs(1-x),1,2)   
ans =
	1/2
>> int(1/(1+x^2),-inf,inf)
ans =
	pi
>> int(4*x/t,t,2,sin(x))
ans =
	4*x*(log(sin(x)) - log(2))

7.3 级数

级数求和:

  • symsum(s,v,n,m):求无穷级数的和。其中,s 表示一个级数的通项,是一个符号表达式。v 是求和变量,v 省略时使用系统的默认变量。n 和 m 是求和变量 v 的初值和末值。

例:求下列级数之和
S 1 = 1 + 4 + 9 + 16 + ⋯ + 10000 S 2 = 1 − 1 2 + 1 3 − 1 4 + ⋯ + ( − 1 ) n + 1 1 n + … S 3 = 1 − 1 3 + 1 5 − 1 7 + ⋯ + ( − 1 ) n + 1 1 2 n − 1 + … S_1=1+4+9+16+\dots+10000 \\ S_2=1-\frac{1}{2}+\frac{1}{3}-\frac{1}{4}+\dots+(-1)^{n+1}\frac{1}{n}+\dots \\ S_3=1-\frac{1}{3}+\frac{1}{5}-\frac{1}{7}+\dots+(-1)^{n+1}\frac{1}{2n-1}+\dots S1=1+4+9+16++10000S2=121+3141++(1)n+1n1+S3=131+5171++(1)n+12n11+

>> syms n;
>> S1=symsum(n^2,1,100) 
S1 =
	338350 
>> S2=symsum((-1)^(n-1)/n,1,inf) 
S2 = 
	log(2) 
>> S3=symsum((-1)^(n-1)/(2*n-1),n,1,inf) 
S3 =
	hypergeom([-1/2, 1], 1/2, -1) - 1          % 超几何函数

泰勒级数:

  • taylor(f,v,a,Name,Value):将函数展开为幂级数。该函数将函数 f 按变量 v 在 a 点展开为泰勒级数,v 的默认值与 diff 函数相同,a 的默认值是 0。 Name 和Value 为选项设置,经常成对使用,前者为选项名,后者为该选项的值。

Name有3个可取字符串:

1、‘ExpansionPoint’:指定展开点,对应值可以是标量或向量。未设置时,展开点为0。

2、‘Order’:指定截断参数,对应值为一个正整数。未设置时,截断参数为6,即展开式的最高阶为5。

3、‘OrderMode’:指定展开式采用绝对阶或相对阶,对应值为 ‘Absolute’ 或’Relative’。 未设置时取’Absolute’。

例:求函数 f 在 x=1 处的5阶泰勒级数展开式。
f ( x ) = 1 + x + x 2 1 − x + x 2 f(x)=\frac{1+x+x^2}{1-x+x^2} f(x)=1x+x21+x+x2

>> syms x;
>> f=(1+x+x^2)/(1-x+x^2);
>>taylor(f,x,1,'Order',6)
ans =
	2*(x - 1)^3 - 2*(x - 1)^2 - 2*(x - 1)^5 + 3
>> expand(ans) 
ans = 
	- 2*x^5 + 10*x^4 - 18*x^3 + 12*x^2 + 1

例:利用泰勒展开式计算三角函数的值。

>> syms x;
>> f=taylor(cos(x),x,pi)
f =
	(x - pi)^2/2 - (x - pi)^4/24 - 1
>> x=3;
>> eval(f)
ans =
   -0.9900
>> cos(3)
ans =
   -0.9900

7.4 符号方程求解

代数方程符号求解:

  • solve(s):求解符号表达式s的代数方程,求解变量为 默认变量。

  • solve(s,v):求解符号表达式s的代数方程,求解变量 为v。

  • solve(s1,s2,…,sn,v1,v2,…,vn):求解符号表达式 s1,s2,…,sn组成的代数方程组,求解变量分别为v1, v2,…,vn。

例:解方程 a x 2 + b x + c = 0 ax^2+bx+c=0 ax2+bx+c=0

>> syms x y a b c; 
>> solve(a*x^2+b*x+c==0)
ans =
	-(b + (b^2 - 4*a*c)^(1/2))/(2*a)
	-(b - (b^2 - 4*a*c)^(1/2))/(2*a)

常微分方程的符号求解:

  • dsolve(e,c,v):用于求解常微分方程 e 在初值条件 c 下的特解。参数 v 是方程中的自变量,省略时按默认原则处理,若没有给出初值条件 c,则求方程的通解。
  • dsolve(e1,e2,…,en,c1,c2,…,cn,v):用于求解常微分方程组 e1, e2, …, en 在初值条件 c1, c2, …, cn 下的特解,若不给出初值条件,则求方程组的通解。v 给出求解变量,如果没有指定自变量, 则采用默认自变量t。

注意:在MATLAB中,用大写字母D表示导数。例如,Dy表示y’,D2y表示y’‘, Dy(0)=5表示y’(0)=5。D3y+D2y+Dy-x+5=0表示微分方程y’‘’+y’‘+y’-x+5=0。

例:求下列微分方程或方程组的解。
d y d x = x 2 + y 2 2 x 2 { d x d t = 4 x − 2 y d y d t = 2 x − y \frac{dy}{dx}=\frac{x^2+y^2}{2x^2} \quad\quad\quad\quad\quad\quad\quad\quad\quad\quad \begin{cases} \frac{dx}{dt}=4x-2y \\ \frac{dy}{dt}=2x-y \end{cases} dxdy=2x2x2+y2{dtdx=4x2ydtdy=2xy

>> syms x y t;
>> y=dsolve('Dy-(x^2+y^2)/x^2/2',x)
y =
							x
	-x*(1/(C5 + log(x)/2) - 1)
>> [x,y]=dsolve('Dx=4*x-2*y','Dy=2*x-y',t)
x =
	C8/2 + 2*C7*exp(3*t)
y =
	C8 + C7*exp(3*t)

有关MATLAB教程七:MATLAB符号计算的更多相关文章

  1. ruby-on-rails - 使用一系列等级计算字母等级 - 2

    这里是Ruby新手。完成一些练习后碰壁了。练习:计算一系列成绩的字母等级创建一个方法get_grade来接受测试分数数组。数组中的每个分数应介于0和100之间,其中100是最大分数。计算平均分并将字母等级作为字符串返回,即“A”、“B”、“C”、“D”、“E”或“F”。我一直返回错误:avg.rb:1:syntaxerror,unexpectedtLBRACK,expecting')'defget_grade([100,90,80])^avg.rb:1:syntaxerror,unexpected')',expecting$end这是我目前所拥有的。我想坚持使用下面的方法或.join,

  2. Matlab imread()读到了什么 (浅显 当复习文档了) - 2

    matlab打开matlab,用最简单的imread方法读取一个图像clcclearimg_h=imread('hua.jpg');返回一个数组(矩阵),往往是a*b*cunit8类型解释一下这个三维数组的意思,行数、数和层数,unit8:指数据类型,无符号八位整形,可理解为0~2^8的数三个层数分别代表RGB三个通道图像rgb最常用的是24-位实现方法,即RGB每个通道有256色阶(2^8)。基于这样的24-位RGB模型的色彩空间可以表现256×256×256≈1670万色当imshow传入了一个二维数组,它将以灰度方式绘制;可以把图像拆分为rgb三层,可以以灰度的方式观察它figure(1

  3. postman接口测试工具-基础使用教程 - 2

    1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,

  4. ruby-on-rails - 创建 ruby​​ 数据库时惰性符号绑定(bind)失败 - 2

    我正在尝试在Rails上安装ruby​​,到目前为止一切都已安装,但是当我尝试使用rakedb:create创建数据库时,我收到一个奇怪的错误:dyld:lazysymbolbindingfailed:Symbolnotfound:_mysql_get_client_infoReferencedfrom:/Library/Ruby/Gems/1.8/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundleExpectedin:flatnamespacedyld:Symbolnotfound:_mysql_get_client_infoReferencedf

  5. MIMO-OFDM无线通信技术及MATLAB实现(1)无线信道:传播和衰落 - 2

     MIMO技术的优缺点优点通过下面三个增益来总体概括:阵列增益。阵列增益是指由于接收机通过对接收信号的相干合并而活得的平均SNR的提高。在发射机不知道信道信息的情况下,MIMO系统可以获得的阵列增益与接收天线数成正比复用增益。在采用空间复用方案的MIMO系统中,可以获得复用增益,即信道容量成倍增加。信道容量的增加与min(Nt,Nr)成正比分集增益。在采用空间分集方案的MIMO系统中,可以获得分集增益,即可靠性性能的改善。分集增益用独立衰落支路数来描述,即分集指数。在使用了空时编码的MIMO系统中,由于接收天线或发射天线之间的间距较远,可认为它们各自的大尺度衰落是相互独立的,因此分布式MIMO

  6. 在VMware16虚拟机安装Ubuntu详细教程 - 2

    在VMware16.2.4安装Ubuntu一、安装VMware1.打开VMwareWorkstationPro官网,点击即可进入。2.进入后向下滑动找到Workstation16ProforWindows,点击立即下载。3.下载完成,文件大小615MB,如下图:4.鼠标右击,以管理员身份运行。5.点击下一步6.勾选条款,点击下一步7.先勾选,再点击下一步8.去掉勾选,点击下一步9.点击下一步10.点击安装11.点击许可证12.在百度上搜索VM16许可证,复制填入,然后点击输入即可,亲测有效。13.点击完成14.重启系统,点击是15.双击VMwareWorkstationPro图标,进入虚拟机主

  7. 计算机毕业设计ssm+vue基本微信小程序的小学生兴趣延时班预约小程序 - 2

    项目介绍随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱小学生兴趣延时班预约小程序的设计与开发被用户普遍使用,为方便用户能够可以随时进行小学生兴趣延时班预约小程序的设计与开发的数据信息管理,特开发了小程序的设计与开发的管理系统。小学生兴趣延时班预约小程序的设计与开发的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与小学生兴趣延时班预约小程序的设计与开发的实际需求相结合,讨论了小学生兴趣延时班预约小程序的设计与开发的使用。开发环境开发说明:前端使用微信微信小程序开发工具:后端使用ssm:VU

  8. hadoop安装之保姆级教程(二)之YARN的配置 - 2

    1.1.1 YARN的介绍 为克服Hadoop1.0中HDFS和MapReduce存在的各种问题⽽提出的,针对Hadoop1.0中的MapReduce在扩展性和多框架⽀持⽅⾯的不⾜,提出了全新的资源管理框架YARN. ApacheYARN(YetanotherResourceNegotiator的缩写)是Hadoop集群的资源管理系统,负责为计算程序提供服务器计算资源,相当于⼀个分布式的操作系统平台,⽽MapReduce等计算程序则相当于运⾏于操作系统之上的应⽤程序。 YARN被引⼊Hadoop2,最初是为了改善MapReduce的实现,但是因为具有⾜够的通⽤性,同样可以⽀持其他的分布式计算模

  9. ruby - 如何计算 Liquid 中的变量 +1 - 2

    我对如何计算通过{%assignvar=0%}赋值的变量加一完全感到困惑。这应该是最简单的任务。到目前为止,这是我尝试过的:{%assignamount=0%}{%forvariantinproduct.variants%}{%assignamount=amount+1%}{%endfor%}Amount:{{amount}}结果总是0。也许我忽略了一些明显的东西。也许有更好的方法。我想要存档的只是获取运行的迭代次数。 最佳答案 因为{{incrementamount}}将输出您的变量值并且不会影响{%assign%}定义的变量,我

  10. ruby - 鸭子输入字符串、符号和数组的优雅方式? - 2

    这是针对我无法破坏的现有公共(public)API,但我确实希望对其进行扩展。目前,该方法采用字符串或符号或任何其他在作为第一个参数传递给send时有意义的内容我想添加发送字符串、符号等列表的功能。我可以只使用is_a吗?数组,但还有其他发送列表的方法,这不是很像ruby​​。我将调用列表中的map,所以第一个倾向是使用respond_to?:map。但是字符串也会响应:map,所以这行不通。 最佳答案 如何将它们全部视为数组?String的行为与仅包含String的Array相同:deffoo(obj,arg)[*arg].eac

随机推荐