【发布时间】:2013-01-28 21:34:33
【问题描述】:
我的问题与 Matlab 的符号数学工具箱有关。我有以下代码:
syms x x_0 u delta sigma_1
mu = sym ('mu(x)');
sigma_u = sym ('sigma(u)');
sigma = sym ('sigma(x)');
f = int (1/sigma_u, u, x_0, x);
df = subs(diff(f,x))
df_2 = subs(diff (f,x,2))
L = subs(mu*df+1/2*sigma^2*df_2)
L的结果是正确的
L =
mu(x)/sigma(x) - diff(sigma(x), x)/2
但是,为了进一步推导和简单起见,我想定义
sigma_1 = sym('diff(sigma,x)');
或以类似的方式获得结果
L =
mu(x)/sigma(x) - sigma_1(x)/2
基本上,我想将符号表达式 diff(sigma(x),x) 存储在一个名称下,这样 Matlab 就知道当它在表达式中得到这个结果时,发布名称 sigma_1 (x) 而不是 diff (sigma(x),x)
【问题讨论】:
-
f是通过 Matlab 无法评估的积分来定义的;可以吗? -
你好。不,这不是问题,Matlab 无论如何都不能评估积分,因为函数 sigma(u) 没有明确定义。 Matlab 在应用莱布尼茨规则计算 L 方面做得很好(通过 df 和 df_2)。但是,我只想这样而不是在答案中
-
diff(sigma(x), x) 为第一个衍生词命名,例如 sigma_1,它应该代表 sigma wrt x 的一阶导数,而且我主要希望 sigma_1 始终出现在程序而不是 diff(sigma(x), x)。随后,我想类似地定义函数 sigma 的更高阶导数。谢谢
-
如果你有输出,在任何地方替换它应该不会太难,为什么不事后简化呢?我认为你问的可能是不可能的,因为你也可以用同样的方式定义 sigma_2 并且 matlab 会丢失。
标签: matlab symbolic-math