matlab的符号计算基础

在之前使用matlab时,我们都是通过创造一个数值或是一个数值向量去进行计算,但实际上还有需要用符号进行表达的场景,今天我们来介绍一下matlab的符号计算

一、符号变量的创建和运算

1.syms 函数

syms x可以将x设定为一个符号变量,在创造了符号变量的基础上,我们可以进行符号运算,创造符号方程,创建符号矩阵

(1)符号运算

符号运算与数值运算一样,在创建了符号变量之后,直接进行运算即可
y = a + b;x = c - d;y1 = x*y;y2 = y1/y;y3 = y1^3;y4 = sqrt(y3);y5 = exp(y4)

(2)创造符号方程

syms a x
y = a*x+x^2
% y = str2sym('a*x+x^2')

(3)创建符号矩阵

syms alpha
M = [cos(alpha)  -sin(alpha);
       sin(alpha)  cos(alpha)]

二、符号表达式的整理

1.化简--simplify函数

syms a
y=(cot(a/2)-tan(a/2))*(1+tan(a)*tan(a/2))
simplify(y)
% ans=2/sin(a)

2.因式分解--factor函数

(1)对常数进行因式分解

factor(12)
%      2     2     3

(2)对符号进行因式分解

syms m n x
y = -24*m^2*x-16*n^2*x
factor(y)
% [ -8, x, 3*m^2 + 2*n^2]
y1=m^3-n^3
factor(y1)
% [ m - n, m^2 + m*n + n^2]

3.多项式展开--expand函数

syms a x
y = a*(x^2-a)^2+(x-2)
expand(y)
% a^3 - 2*a^2*x^2 + a*x^4 + x - 2

4.合并--collect函数

collect函数需要输入两个参数,第一个参数为需要进行分解的函数,第二个参数为分解的符号,如下方代码所示,如果对x进行分解,那么返回的是一个关于x的多项式

syms x y
z = (x+y)^2*y+5*y*x-2*x^3
collect(z,x)
% y*x^2 - 2*x^3 + (2*y^2 + 5*y)*x + y^3
collect(z,y)
% y^3 + 2*x*y^2 + (x^2 + 5*x)*y - 2*x^3

5.计算分子与分母--numden函数

numden函数可以返回两个值,分别为符号变量的分子分母,当然,numden函数只能作用与符号变量,因此在计算数值变量时,需要用sym函数将数值变量转化成符号变量

[z1,z2] = numden(sym(2.5))
% z1 = 5
% z2 = 2
syms x y
z = 1/x*y+x/(x^2-2*y)
[z1,z2] = numden(z)  %z1分子,z2分母
% z1 = - x^2*y - x^2 + 2*y^2
% z2 = x*(- x^2 + 2*y)

6.让结果显示的更加自然

直接用Matlab符号计算得到的结果非常的混乱,如果我们想要在论文中体现这个式子的话,需要用公式编辑器重新给他编辑好,但是matlab的实时脚本功能可以直接实现这一步骤,而且可以复制为latex代码。只需要把公式放入实时脚本后点击运行即可

posted @ 2024-08-15 16:26  卢宇博  阅读(65)  评论(0编辑  收藏  举报