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代码。只需要把公式放入实时脚本后点击运行即可
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现