MATLAB符号变量的创建和简单运算

声明:本文章中数据来自清风老师数学建模课程

MATLAB符号变量的创建和简单运算

1、符号变量

1. 1 符号变量的创建

使用syms创建符号变量

syms x  		%  创建一个符号变量,sym是symbolic的缩写
syms a b c		%  创建多个符号变量

在这里插入图片描述

1.2 符号方程的创建

方法一:先创建符号变量后创建符号方程

syms a x		% 创建符号变量
y = a*x+x^2		% 创建符号方程

方法二:str2sym命令创建,在MATLAB 2017b后可以使用

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

创建符号方程后,y的类型在工作区中观察到为1x1sym

3 符号矩阵的创建

%% 符号矩阵的创建
syms alpha
M = [cos(alpha)  -sin(alpha);
       sin(alpha)  cos(alpha)]

在这里插入图片描述

2、符号运算

了解如何符号变量后,我们可以使用符号变量进行一些简单的运算、多项式运算、分式运算等等

2.1 简单运算

%% 简单运算
syms a b c d e
y = a + b
% a + b
x = c - d
% c - d
y1 = x*y
% (a + b)*(c - d)
y2 = y1/y
% c - d
y3 = y1^3
% (a + b)^3*(c - d)^3
y4 = sqrt(y3)   
% ((a + b)^3*(c - d)^3)^(1/2)
y5 = exp(y4)
% exp(((a + b)^3*(c - d)^3)^(1/2))

2.2 表达式的整理

有时候我们的表达式是可以继续通分化简的,这时我们可以使用simplify命令来进行通分化简。如:

%% 符号表达式的整理
clear;clc

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

2.3 因式分解

使用MATLAB中的factor命令可以对整数或者多项式进行因式分解

%% 因式分解
factor(12) % 对常数进行因式分解 
%      2     2     3
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]		% 立方差公式的因式分解 
y2 = m^2-n^2
factor(y2)
% [ m - n, m + n]				% 平方差公式的因式分解

2.4 多项式展开

使用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

2.5 合并

使用collect命令可以进行类似合并同类项的操作

%% 合并
syms x y
z = (x+y)^2*y+5*y*x-2*x^3
% expand(z)   - 2*x^3 + x^2*y + 2*x*y^2 + 5*x*y + y^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

2.6 计算分子与分母

使用numden来计算分式的分子和分母
返回值为两个[z1,z2],其中z1为分子,z2为分母

%% 计算分子与分母
% [z1,z2] = numden(2.5)  % 会报错,因为numden的输入变量不能是数值,只能是符号变量
% ans = sym(2.5);  % sym函数可以将数值2.5转换为符号
[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)

2.7 让结果显示的更加自然

看下面命令

syms x y
M = (1/x*y+x/(x^2-2*y)-x^2/(3+y)^2)^2;
expand(M)  

通过expand命令对M进行展开,结果为:

y^2/x^2 + x^4/(y^4 + 12*y^3 + 54*y^2 + 108*y + 81) + (2*x^3)/(- x^2*y^2 - 6*x^2*y - 9*x^2 + 2*y^3 + 12*y^2 + 18*y) - (2*y)/(- x^2 + 2*y) + x^2/(x^4 - 4*x^2*y + 4*y^2) - (2*x*y)/(y^2 + 6*y + 9)

看到这样的结果你是不是非常绝望呢??????????????????
如果我们要把这样的结果转化为人们习惯的书写方式放到论文中,是不是会崩溃呢??????
其实我们可以利用MATLAB提供的mupad工具箱(一个商用计算机代数系统,“Multi Processing Algebra Data Tool”的缩写)来帮助我们
方法:在MATLAB中的命令行中输入mupad,回车打开工具箱,然后将上面M的展开结果复制到里面,回车就OK了
在这里插入图片描述
在这里插入图片描述

当然你可能会遇到这样的情况:
在这里插入图片描述
这是说明在后序的发行版本中可能会将该工具箱移除,建议我们使用通过新建实时脚本来解决。

创建实时脚本
在这里插入图片描述
将M的展开结果粘贴过去,运行
在这里插入图片描述

MATLAB中的符号运算是为了得到更高精度的数值解。符号运算可以用于数学、物理学、力学等学科和工程应用中的问题。通过使用符号表达式,可以进行各种符号运算,如代数运算、微积分、方程求解等。符号表达式可以包含各种符号变量运算符号,可以进行各种运算操作,如加减乘除、幂运算、函数调用等。在特定情况下,可以选择使用符号表达式进行运算,以获得更精确的结果。\[1\] 在MATLAB中,可以使用sym函数创建符号矩阵。通过这种方法,可以创建一个矩阵,其中的元素可以是任何不带等号的符号表达式。矩阵的元素之间可以用逗号或空格分隔,各行之间用分号分隔。创建符号矩阵后,可以对其进行各种运算操作,如矩阵乘法、矩阵加法等。\[2\] 在符号运算中,还可以使用equationsToMatrix函数将一组方程转化为系数矩阵和常数项矩阵。这个函数可以将一组方程和变量作为输入,返回系数矩阵和常数项矩阵。这样可以方便地进行方程求解和线性代数运算。\[3\] 此外,MATLAB还提供了ccode函数,可以将符号表达式转化为C语言代码。这个函数可以返回用于计算符号表达式的C语句段落,方便将符号运算的结果应用于其他编程环境。\[4\] 总之,MATLAB中的符号运算提供了一种处理符号表达式的方法,可以进行各种数学运算和方程求解。通过使用符号运算,可以获得更高精度的数值解,并且可以方便地进行符号表达式的转化和处理。 #### 引用[.reference_title] - *1* *2* [MATLAB符号运算](https://blog.csdn.net/qq_63189739/article/details/124416950)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [MATLAB - 符号运算(持续更新)](https://blog.csdn.net/weixin_43455581/article/details/103572109)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值