专题七MATLAB符号计算-1

简介: 专题七MATLAB符号计算

一、符号对象


1、符号对象的建立

(1)sym函数:用于建立单个符号对象,调用格式:

符号对象名=sym(A)

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

对比一下程序:


由以上例子可以看出:


  • 符号计算的结果是一个精确的数学表达式。
  • 数值计算的结果是一个数值。

(2)syms命令

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

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

例如,要同时定义四个符号变量a、b、c、d,则命令如下:

.>>syms a b c d


2、符号对象的运算

(1)四则运算

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

844a6ea9ea1b11754d5781e861f78e69_20210428151540493.png

(2)关系运算


  • 6种关系运算符:<、<=、>、>=、==、~=
  • 对应的6个函数:lt()、le()、gt()、ge()、eq()、ne()

若参与运算的是符号表达式,其结果是一个符号表达式;若参与运算的是符号矩阵,其结果是由符号关系表达式组成的矩阵。

在进行符号对象的运算前,可用assume函数对符号对象设置值域,调用格式为:

assume(condition)

asume(expr,set)

第一种格式指定变量满足条件condition,第二种格式指定表达式expr属于集合set

98140a9815c4ec5735b71385fa1c281d_20210428153050428.png

(3)逻辑运算


  • 3种逻辑运算符:&(与)、|(或)、~(非)
  • 4个逻辑运算函数:and(a,b)、or(a,b)、not(a,b)、xor(a,b)

a9127db33ce0b2266df911d34b6e8c21_20210428153311441.png

(4)因式分解与展开运算


  • factor(s):对符号表达式s分解因式。
  • expand(s):对符号表达式s进行展开。
  • collect(s):对符号表达式s合并同类项。
  • collect(s,v):对符号表达式s按变量v合并同类项

59c6a98826073fb7ad80442f30aeb124_20210428153909251.png

例子:梅森素数的验证问题

梅森数是指形如2p-1的一类整数,其中p是素数。将梅森数记为Mp。如果梅森数是素数,就称为梅森素数。

验证M19、M23、M29、M31是否为梅森素数。


(5)其他运算


  • 提取有理分式的分子分母:[n,d]=numden(s)
  • 提取符号表达式的系数:c=coeffs(s,x)
  • 符号表达式化简:simplify(s)
  • 符号多项式与多项式系数向量之间的转化:

– 符号多项式转换为多项式系数向量:p=sym2poly(s)

– 多项式系数向量转换为符号多项式:s=poly2sym( p)

例子:求方程image.png的根

69cd87f8d06ee0b8c67e435d4060a831_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1JpY2FyZG8y,size_16,color_FFFFFF,t_70.png

注意此处不能调用sym2poly函数

596472cd4732f8f4cfe7a728aaba8897_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1JpY2FyZG8y,size_16,color_FFFFFF,t_70.png

(6)符号运算中变量的确定


  • 如果没有明确指定自变量,MATLAB将按以下原则确定主变量并对其进行相应运算:

– 寻找除i、j之外,在字母顺序上最接近x的小写字母。

– 若表达式中有两个符号变量与x的距离相等,则ASCII码大的优先。

  • symvar()函数可以用于查找一个符号表达式中的符号变量:symvar(s,n)

函数返回符号表达式s中的n个符号变量。因此,可以用symvar(s,1)查找表达式s的主变量。


3、符号矩阵

符号矩阵也是一种符号表达式,所以符号表达式运算都可以在矩阵意义下进行。注意这些函数作用于符号矩阵时,是分别作用于矩阵的每一个元素。

例如:建立符号矩阵并化简

image.png

37f33fe0da8d6f989c6298fd8c81b739_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1JpY2FyZG8y,size_16,color_FFFFFF,t_70.png


例子:当λ取何值时,以下齐次线性方程组有非零解

image.png


分析:对于齐次线性方程组,若有非零解的充要条件是其系数矩阵的行列式等于0或者其秩小于n。

9a41723ae0ba2f347162e650e8f64e99_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1JpY2FyZG8y,size_16,color_FFFFFF,t_70.png

因此,当lamda=0、2或者3时,系数矩阵行列式等于0。此时方程组有非零解。


二、符号微积分

1、符号函数的极限

(1)求符号函数极限的命令为limit,其调用格式为:

limit(f,x,a)

即求函数f关于变量x在a点的极限

(2)limit函数的另一种功能是求单边极限:

limit(f,x,a,‘right’)

limit(f,x,a,‘left’)

(3)例子:求下列极限


  • image.png

4f185408b9c08992165c3a180d5d955b_20210428165247444.png

  • image.png

3c341b87a9bec1df36f0ff1554fe5833_20210428165416272.png


2、符号函数的导数

(1)diff(f,x,n)

即求函数f关于变量x的n阶导数

(2)例子:求下列函数的导数


  • y2c5017ef8a2c7d8c80675867fa0e0939_20210428172151450.png

2c5017ef8a2c7d8c80675867fa0e0939_20210428172151450.png


  • zimage.png

71c3faf59f160c4fbe46362b57cdbb36_2021042817220523.png

3、符号函数的积分

(1)不定积分

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

例子:

image.png

6434db523949e6123137422f49901998_20210429165254309.png

image.png

5f62ef7b664d37e1b112d070b1ba1680_20210429165333158.png

(2)定积分

int(f,x,a,b),其中a、b分别表示定积分的下限和上限。


  • 当函数f关于变量x在闭区间[a,b]可积,函数返回一个定积分结果。
  • 当a、b中有一个是inf时,函数返回一个广义积分。
  • 当a、b中有一个符号表达式,函数返回一个符号函数。

例子

image.png

906074a83b29e8205102445e19a35d70_20210429170322552.png


4、例子

f3a6558c9ec2a5c9384162191ae34b5b_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1JpY2FyZG8y,size_16,color_FFFFFF,t_70.png

(1)第一问


xi=0:50:600;
yi=[4.4,4.5,4.6,4.8,4.9,5.1,5.4,5.2,5.5,5.2,4.9,4.8,4.7];
p=polyfit(xi,yi,3);
plot(xi,yi,'o',xi,polyval(p,xi));
syms x y;
y=poly2sym(p,x);
s=int(y,x,0,600);
v=s*0.6;
eval(v)

703e9051aaafbe21eee314ca28490884_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1JpY2FyZG8y,size_16,color_FFFFFF,t_70.png

求得流量v = image.png

(2)第二问


xi=0:50:600;
yi=[4.4,4.5,4.6,4.8,4.9,5.1,5.4,5.2,5.5,5.2,4.9,4.8,4.7];
p=polyfit(xi,yi,3);
syms y x;
y=poly2sym(p,x);
yii=diff(y,x); 
x=50:60;                                    
k=eval(yii);                                
all(abs(k)<1/1.5)

结果为1

目录
相关文章
|
14天前
|
算法
MATLAB符号计算
【10月更文挑战第9天】MATLAB不仅擅长数值计算,还具备强大的符号计算功能,支持代数运算、方程求解、微积分等。本文介绍如何使用MATLAB的符号工具箱进行符号变量定义、方程求解、微分积分及矩阵运算,并通过多个实际应用案例展示了其在机械系统、电路分析、经济优化和物理运动学等领域的应用。此外,文章还提供了符号计算的最佳实践和未来展望。
30 2
|
27天前
|
安全 调度
电力系统的负荷损失和潮流计算matlab仿真,对比最高度数,最高介数以及最高关键度等节点攻击
本课题研究节点攻击对电力系统稳定性的影响,通过模拟最高度数、最高介数和最高关键度攻击,对比不同攻击方式下的停电规模。采用MATLAB 2022a 进行系统仿真,核心程序实现线路断开、潮流计算及优化。研究表明,节点攻击会导致负荷损失和系统瘫痪,对电力系统的安全构成严重威胁。通过分析负荷损失率和潮流计算,提出减少负荷损失的方法,以提升电力系统的稳定性和安全性。
二阶锥松弛在配电网最优潮流计算中的应用matlab
二阶锥松弛在配电网最优潮流计算中的应用matlab
|
2月前
|
算法 数据可视化 数据安全/隐私保护
基于LK光流提取算法的图像序列晃动程度计算matlab仿真
该算法基于Lucas-Kanade光流方法,用于计算图像序列的晃动程度。通过计算相邻帧间的光流场并定义晃动程度指标(如RMS),可量化图像晃动。此版本适用于Matlab 2022a,提供详细中文注释与操作视频。完整代码无水印。
|
3月前
|
Python
【Python】实现MATLAB中计算两个矩形相交面积的rectint函数
Python中实现MATLAB中rectint函数的方法,该函数用于计算两个矩形相交区域的面积,并通过定义Rectangle类和calc_area函数展示了如何计算两个矩形的交集面积。
44 1
|
4月前
|
安全 C++
基于MATLAB的电力线路参数计算仿真
*1. 课题概述** - 电力线路分为输电与配电,计算关键参数至关重要 - 本项目开发基于MATLAB的软件,用于计算电力线路的重要参数 *2. 系统仿真结果** - 实现了工频电场、电力系统潮流等参数的计算。 - 包括MATLAB界面设计与计算功能实现。 *3. 系统原理简介** - **额定电压**: 设备最佳工作电压,保障性能稳定及延长使用寿命。 - **输变电设施**: 运行时产生工频电场和磁场,需符合国家标准限值。 - **线径计算**: 依据电流密度和趋肤效应确定导线截面积。 - **电力系统潮流计算**: 基于牛顿-拉夫逊法求解电力系统稳态运行状态,用于检查系统过负荷及电压质量。
|
4月前
|
监控
基于偏微分方程离散化计算的地下换热器建模与温度检测matlab仿真
**摘要:** 探索地下换热器的建模与温度检测,使用MATLAB2022a进行系统仿真,关注传热过程的热传导、对流和辐射。通过离散化偏微分方程建立数值模型,模拟温度场,考虑地质特性和水流影响。建模以网格单元描述温度变化,采用热电偶、红外和光纤测温技术验证模型并监控温度,各具优缺点。光纤测温法提供高精度和抗干扰的分布式监测。
|
5月前
|
存储 算法 计算机视觉
m基于FPGA的FIR低通滤波器实现和FPGA频谱分析,包含testbench和滤波器系数MATLAB计算程序
在Vivado 2019.2平台上开发的系统,展示了数字低通滤波器和频谱分析的FPGA实现。仿真结果显示滤波效果良好,与MATLAB仿真结果一致。设计基于FPGA的FIR滤波器,利用并行处理和流水线技术提高效率。频谱分析通过离散傅里叶变换实现。提供了Verilog核心程序以示例模块工作原理。
47 4
|
5月前
|
算法
m基于PSO粒子群优化的LDPC码NMS译码算法最优归一化参数计算和误码率matlab仿真
MATLAB2022a仿真实现了基于遗传优化的NMS LDPC译码算法,优化归一化参数以提升纠错性能。NMS算法通过迭代处理低密度校验码,而PSO算法用于寻找最佳归一化因子。程序包含粒子群优化的迭代过程,根据误码率评估性能并更新解码参数。最终,展示了迭代次数与优化过程的关系,并绘制了SNR与误码率曲线。
49 2
|
6月前
|
资源调度 算法 块存储
m基于遗传优化的LDPC码OMS译码算法最优偏移参数计算和误码率matlab仿真
MATLAB2022a仿真实现了遗传优化的LDPC码OSD译码算法,通过自动搜索最佳偏移参数ΔΔ以提升纠错性能。该算法结合了低密度奇偶校验码和有序统计译码理论,利用遗传算法进行全局优化,避免手动调整,提高译码效率。核心程序包括编码、调制、AWGN信道模拟及软输入软输出译码等步骤,通过仿真曲线展示了不同SNR下的误码率性能。
64 1