如何将符号表达式从 Symbolic Package 转换为 Octave 函数?
使用 pkg install -forge symbolic
在 Octave 音阶上安装符号包后。在 Octave 上使用符号包我可以这样写:
octave> pkg load symbolic;
octave> a = sym( "a" );
octave> int ( a^2 + csc(a) )
这将导致:
ans = (sym)
3
a log(cos(a) - 1) log(cos(a) + 1)
-- + --------------- - ---------------
3 2 2
但是如何将上面的这个 Integral (int(1)) 符号结果变成下面这样的有值(value)的函数呢?
function x = f( x )
x = x^3/3 + log( cos(x) - 1 )/2 - log( cos(x) + 1 )/2
end
f(3)
# Which evaluates to: 11.6463 + 1.5708i
我想从
int ( a^2 + csc(a) )
获取符号结果,并调用 result(3),在 3 处计算它,即从符号表达式积分 a^2 + csc(a)
返回数值 11.6463 + 1.5708i。基本上,如何使用符号表达式作为数值可评估的表达式?它是 Matlab 的 as this other question。引用:
最佳答案
您可以使用 pretty
。
syms x;
x = x^3/3 + log( cos(x) - 1 )/2 - log( cos(x) + 1 )/2;
pretty(x)
这给出了:
3
log(cos(x) - 1) log(cos(x) + 1) x
--------------- - --------------- + --
2 2 3
更新(由于问题已编辑):
使这个功能:
function x = f(y)
syms a;
f(a) = int ( a^2 + csc(a) );
x = double(f(y));
end
现在,当您使用
f(3)
调用它时,它会给出:ans =
11.6463 + 1.5708i
关于matlab - 如何将符号表达式从 Symbolic Package 转换为 Octave 函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40876211/