1. 问题描述
研究工作中,往往需要利用MATLAB的符号计算功能辅助推导公式。完成公式推导之后,往往需要利用推导出的公式做数值计算。
2. 技术背景
一个典型的MATLAB符号计算示例如下:
syms x
y = sin(2*x); % 原函数
y1 = diff(y,x,1); % 一阶导数
y1
运行结构如下:
y1 =
2*cos(2*x)
欲求解导数y1,在x1 = [1 2 3 4 5]处的数值。
此处,虽然求出了导数,但无法直接用于数值计算。因为所有变量均为符号变量,不同于数值变量。
3. 解决方案
- 将数值(向量、矩阵)代入符号函数
采用subs
变量替换函数:
x1 = [1 2 3 4 5]
temp = subs(y1,x,x1)
得到:
temp =
[ 2*cos(2), 2*cos(4), 2*cos(6), 2*cos(8), 2*cos(10)]
- 将temp的符号变量转换为double数值
temp2 = double(temp)
得到数值:
temp2 =
-0.8323 -1.3073 1.9203 -0.2910 -1.6781
4. 实施示例
略
5. 常见问题
略