MATLAB的符号计算

简介: MATLAB的符号计算

所谓符号计算是指在运算时,无须事先对变量赋值,而将所得到结果以标准的符号形式来表示。
例如,在符号变量运算过程中pi就用pi表示,而不是具体的近似数值3.14或3.14159。使用符号变量进行运算能最大限度减少运算过程中因舍入造成的误差。符号变量也便于进行运算过程的演示。

一、符号计算基础

(一) 定义符号变量
参与符号运算的对象可以是符号变量、符号表达式或符号矩阵。符号变量要先定义,后引用。可以用sym函数、syms函数将运算量定义为符号型数据。引用符号运算函数时,用户可以指定函数执行过程中的变量参数;若用户没有指定变量参数,则使用默认的变量作为函数的变量参数。

1、sym函数
sym函数的主要功能是创建符号变量,以便进行符号运算,也可以用于创建符号表达式或符号矩阵。用sym函数创建符号变量的一般格式为:

            x = sym(‘x’)

其目的是将’x’创建为符号变量,以x作为输出变量名。每次调用该函数,可以定义一个符号变量。

1
2
3
4
5
6
7
8
9
a=sym(‘a’); %定义‘a’为符号运算量,输出变量名为a
b=sym(‘b’);
x=sym(‘x’);
y=sym(‘y”);
[x,y]=solve(‘ax-by=1’, ‘ax+by=5’, ‘x’, ‘y’)

                            %以a,b为符号常数,x,y为符号变量

即可得到方程组的解:
x =3/a
y =2/b
(一) 定义符号变量

【例2】已知一复数表达式 z=x+i*y, 试求其共轭复数,并求该表达式与其共轭复数乘积的多项式。
为了使乘积表达式x^2+y^2非负,这里,把变量x和y定义为实数。
x=sym(‘x’,’real’);
y=sym(‘y’,’real’);

z=x+i*y; %定义复数表达式
conj(z); %求共轭复数
expand(z*conj(z)) %求表达式与其共轭复数乘积的

                          多项式

ans =
x^2+y^2
若要去掉’x’的属性,可以使用下面语句

 x = sym(‘x’,’unreal’) 

将’x’创建为纯格式的符号变量。

2、syms函数
syms函数的功能与sym函数类似。syms函数可以在一个语句中同时定义多个符号变量,其一般格式为:

      syms arg1 arg2 …argN 

用于将rg1, arg2,…,argN等符号创建为符号型数据。

(二)默认符号变量
在数学表达式中,一般习惯于使用排在字母表中前面的字母作为变量的系数,而用排在后面的字母表示变量。例如:

     f=ax2+bx+c

表达式中的a,b,c通常被认为是常数,用作变量的系数;而将x看作自变量。

例如,数学表达式

     f=xn
     g=sin(at+b)

根据数学式中表示自变量的习惯,默认a,b,c为符号常数,x为符号变量。
若在MATLAB中表示上述表达式,首先用syms 函数定义a,b,n,t,x为符号对象。在进行导数运算时,由于没有指定符号变量,则系统采用数学习惯来确定表达式中的自变量,默认a,b,c为符号常数,x,t为符号变量。
即 : 对函数f求导为:df/dx

        对函数g求导为:dg/dt


(四) 生成符号函数
将表达式中的自变量定义为符号变量后,赋值给符号函数名,即可生成符号函数。例如有一数学表达式:

其用符号表达式生成符号函数fxy的过程为:

 syms a b c x y              %定义符号运算量
 fxy=(a*x^2+b*y^2)/c^2      %生成符号函数

生成符号函数fxy后,即可用于微积分等符号计算。

1
2
3
4
5
6
7
8
9
【例4】定义一个符号函数 fxy=(ax2+by2)/c2 ,分别求该函数对x、y的导数和对x的积分。
syms a b c x y %定义符号变量
fxy=(ax^2+by^2)/c^2; %生成符号函数
diff(fxy,x) %符号函数fxy对x求导数
ans =2ax/c^2
diff(fxy, y) %符号函数fxy对y求导数
ans =2by/c^2
int(fxy, x) %符号函数fxy对x求积分
ans =1/c^2(1/3ax^3+by^2*x)
(五)标准代数运算

很多标准的代数运算可以在符号表达式上执行,函数symadd、symsub、symmul和symdiv为加、减、乘、除两个表达式,sympow将一个表达式上升为另一个表达式的幂次。

f= ' 2x^2+3x-5 ' % define the symbolic expression

f=
2 x^2+3x-5
g= ' x^2-x+7 '
g=
x^2-x+7

symadd(f,g) % find an expression for f+g
ans= 3x^2+2x+2
symsub(f,g) % find an expression for f-g
ans= x^2+4*x-12
symmul(f,g) % find an expression for f*g
ans= (2x^2+3x-5)*(x^2-x+7)
symdiv(f,g) % find an expression for f/g
ans= (2x^2+3x-5)/(x^2-x+7)
sympow(f, ' 3*x ' ) % the same as sym(A)^sym(B)
ans= (2x^2+3x-5)^3*x

目录
相关文章
|
1月前
|
边缘计算 资源调度 监控
无人机边缘计算中的计算卸载——Stackelberg博弈方法研究(Matlab代码实现)
无人机边缘计算中的计算卸载——Stackelberg博弈方法研究(Matlab代码实现)
119 3
|
1月前
|
Python
使用毕奥-萨伐尔定律计算圆形电流环的磁场,通过毕奥-萨伐尔定律,计算了圆形电流环的磁场(Matlab代码实现)
使用毕奥-萨伐尔定律计算圆形电流环的磁场,通过毕奥-萨伐尔定律,计算了圆形电流环的磁场(Matlab代码实现)
|
2月前
|
数据采集 数据可视化 前端开发
基于ARIMA电价预测,并计算置信区间研究(Matlab代码实现)
基于ARIMA电价预测,并计算置信区间研究(Matlab代码实现)
110 5
|
27天前
|
算法 机器人
基于SOA海鸥优化算法的PID控制器最优控制参数计算matlab仿真
本课题研究基于海鸥优化算法(SOA)优化PID控制器参数的方法,通过MATLAB仿真对比传统PID控制效果。利用SOA算法优化PID的kp、ki、kd参数,以积分绝对误差(IAE)为适应度函数,提升系统响应速度与稳定性。仿真结果表明,SOA优化的PID控制器在阶跃响应和误差控制方面均优于传统方法,具有更快的收敛速度和更强的全局寻优能力,适用于复杂系统的参数整定。
|
2月前
|
传感器 编解码 监控
【三维成像】45公里距离下的单光子计算三维成像研究(Matlab代码实现)
【三维成像】45公里距离下的单光子计算三维成像研究(Matlab代码实现)
|
25天前
|
数据采集 算法 前端开发
MATLAB|基于3D FDTD的微带线馈矩形天线分析[用于模拟超宽带脉冲通过线馈矩形天线的传播,以计算微带结构的回波损耗参数]
MATLAB|基于3D FDTD的微带线馈矩形天线分析[用于模拟超宽带脉冲通过线馈矩形天线的传播,以计算微带结构的回波损耗参数]
106 2
|
27天前
|
算法
【电力系统潮流】5节点系统潮流计算-牛拉法和PQ分解法(Matlab代代码实现)
【电力系统潮流】5节点系统潮流计算-牛拉法和PQ分解法(Matlab代代码实现)
178 3
|
27天前
|
传感器 算法 数据可视化
MATLAB来计算和仿真无人机飞行过程
使用MATLAB来计算和仿真无人机飞行过程中的运动参数是一个极其常见且强大的方法。这通常被称为无人机建模与仿真,是无人机飞控算法开发中不可或缺的一环。
43 1
|
27天前
|
Serverless Python
【三变量联合分布函数copula】利用AIC BIC确定单变量最优拟合函数、利用AIC确定三变量联合最优copula函数、计算联合概率(Matlab代码实现)
【三变量联合分布函数copula】利用AIC BIC确定单变量最优拟合函数、利用AIC确定三变量联合最优copula函数、计算联合概率(Matlab代码实现)
127 4
|
1月前
|
存储 编解码 并行计算
【快速傅里叶变换FFT、窗函数法、希尔伯特-黄变换、小波变换】电力系统同步相量计算研究(Matlab代码实现)
【快速傅里叶变换FFT、窗函数法、希尔伯特-黄变换、小波变换】电力系统同步相量计算研究(Matlab代码实现)
101 6

热门文章

最新文章