matlab符号函数

简介: matlab符号函数

一、符号函数简介

符号函数是matlab的一个重要功能,可以用来表示数学上的函数,同时也可以用来进行数值计算。

创建符号函数的方法:

  • 利用syms定义符号变量生成符号函数
  • 利用sym和@生成符号函数
  • 利用函数文件生成符号函数

1.1 syms方法

首先利用syms命令定义自变量,然后再生成符号函数

syms sigamn m ft sigam3;
sigamn = (12*m*ft + (12*m+5)*sigam3) / (24*m -1); % sigamn 就是一个符号函数

1.2 利用sym和@方法

首先使用@声明变量,在其后写符号函数表达式,之后使用sym转换成符号函数,就可以进行其他符号运算。

y = @(t) sin(t) - cos(t) + exp(t);
ys = sym(y);
y1 = @(a,b) cos(a) + cos(b);
ys1 = sym(y1);

1.3 函数文件法

利用函数文件来生成符号函数。(实际上,也是用1.1或者1.2的方法实现)

function output = xpower(n)
    syms x
    output = x^n;
end

二、符号函数操作

2.1 符号函数的数值运算

对于符号函数,可以计算符号函数在某些点处的函数值,此时需要使用matlabFunction命令做一次转换。

syms x;
y = sin(x) - cos(x) + exp(x);
y_f = matlabFunction(y1);
x0 = [0, pi];
y_v = y_f(x0); % 计算符号函数y_f在x0处的函数值,x0可以是单个值,也可以是数组

2.2 符号函数化简

  • 合并同类项
    使用collect(f)函数来合并多项式中相同的项。
syms x t;
f=(1+x)*t+x*t;
collect(f)
  • 因式分解
    使用factor(f)对多项式进行因式分解,如果无法在有理数的范围内作分解, 那么返回的结果还是输入值。
syms f;
f=x^3-6*x^2+11*x-6;
factor(f);
  • 多项式展开
    使用expand(f)实现多项式展开。
syms x
f=x*(x*(x-1)+3)+2;
expand(f);
  • 符号函数化简
    使用simplify(f)函数和simple(f)函数对符号函数进行化简
syms a b c;   %定义为符号变量
r = 2;
ss = a^r/((a-b)*(a-c))+b^r/((b-c)*(b-a))+c^r/((c-a)*(c-b)); %多项式公式
simplify(ss); %%简化多项式
simple(ss);
% simple是通过对表达式尝试多种不同的方法(包括simplify)进行化简
% 以寻求符号表达式的最简形式。

2.3 方程求解

solve()函数可以求解代数方程(多项式方程)的符号解析解。

syms x;
y = x*sin(x)-x; 
solve(y, x);  % 只有一个自变量,可以省略自变量,同solve(y)
solve(y==0);

2.4 符号函数求导

2.4.1 一元符号函数求导

可以使用命令diff对符号函数进行求导,并且当diff作用到向量或者矩阵使可以求差分。

syms x;
y = x^4 - 5*x^2 +6;
diff(y,1); % 求1阶导,同diff(y)
diff(y,2); % 求2阶导

当diff作用于符号函数上时,可以对符号函数进行求导。

  • 第一个参数传入符号函数
  • 第二个参数传入要求几阶导,默认求1阶导。

2.4.2 多元符号函数求导

  • 第一个参数为待求导符号函数
  • 第二个参数为要对哪个自变量求偏导
  • 第三个参数为要求几阶导数
    当连续对自变量求偏导时,放在前面的自变量先求偏导,后面的自变量后求偏导。
syms x1 x2 x3;
y = x1^5*x2 + x2*x3 - x1^2*x3;
py1 = diff(y,x1,1); % 对x1求一阶偏导
py2 = diff(y,x1,2); % 对x1求二阶偏导
py3 = diff(y,x1,x2); % 先对x1求偏导,再对x2求偏导
py4 = diff(y,x2,x1); % 先对x2求偏导,再对x1求偏导

如果diff函数作用的对象不是符号函数,而是矩阵,那么对应的功能就是求差分。

2.5 符号函数定积分

使用int()函数,可以对符号函数进行定积分计算。

% 使用形式: 
int(被积函数,积分变量,积分下限,积分上限); 
% 如果只有一个参量,可以省略第2项
syms x b;
f = b + 2*x;
int_f = int(f,x,-6,6);
相关文章
|
6月前
|
索引
matlab--------矩阵重构,重新排列的相关函数说明
matlab--------矩阵重构,重新排列的相关函数说明
178 0
matlab--------矩阵重构,重新排列的相关函数说明
matlab定点化_(fi函数)
matlab定点化_(fi函数)
|
30天前
|
算法
MATLAB符号计算
【10月更文挑战第9天】MATLAB不仅擅长数值计算,还具备强大的符号计算功能,支持代数运算、方程求解、微积分等。本文介绍如何使用MATLAB的符号工具箱进行符号变量定义、方程求解、微分积分及矩阵运算,并通过多个实际应用案例展示了其在机械系统、电路分析、经济优化和物理运动学等领域的应用。此外,文章还提供了符号计算的最佳实践和未来展望。
39 2
|
1月前
|
算法 数据可视化 数据处理
MATLAB内置函数
【10月更文挑战第6天】本文详细介绍了MATLAB的内置函数和自定义函数,涵盖数学计算、矩阵操作、图形绘制等方面。通过具体代码示例,展示了如何使用内置函数和创建自定义函数,以及它们在性能、灵活性和可读性上的优劣。同时,文章还讨论了函数文件与脚本文件的区别,匿名函数和函数句柄的高级应用,帮助读者更好地利用MATLAB解决复杂问题。
31 1
|
1月前
|
存储 机器学习/深度学习 数据可视化
MATLAB脚本与函数
【10月更文挑战第4天】本文介绍了MATLAB脚本与函数的基本概念及编写方法,涵盖脚本和函数的创建、运行及优缺点,通过示例帮助初学者快速上手。同时,文章还涉及数据类型、控制结构、数据可视化、文件操作、错误处理等内容,提供了丰富的示例和学习资源,助力初学者逐步掌握MATLAB编程。
82 3
|
3月前
|
Python
【Python】实现MATLAB中计算两个矩形相交面积的rectint函数
Python中实现MATLAB中rectint函数的方法,该函数用于计算两个矩形相交区域的面积,并通过定义Rectangle类和calc_area函数展示了如何计算两个矩形的交集面积。
48 1
|
4月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于负相关误差函数的4集成BP神经网络matlab建模与仿真
**算法预览:** 图像显示无水印的2022a版MATLAB运行结果 **软件版本:** MATLAB 2022a **核心代码片段:** 省略展示 **理论概述:** NCL集成BP网络利用负相关提升泛化,结合多个弱模型减少错误关联。通过λ参数控制模型间负相关程度,λ>0增强集成效果,提高预测准确性和系统稳健性。
|
5月前
|
算法 数据可视化 数据挖掘
MATLAB中常用的数学函数及其应用示例
MATLAB中常用的数学函数及其应用示例
|
6月前
|
Serverless
基于Logistic函数的负荷需求响应(matlab代码)
基于Logistic函数的负荷需求响应(matlab代码)
|
6月前
|
数据安全/隐私保护
地震波功率谱密度函数、功率谱密度曲线,反应谱转功率谱,matlab代码
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度