Как преобразовать символическое выражение в функцию Octave из символического пакета?
После установки символьного пакета на октаву с pkg install -forge symbolic
. Используя символический пакет на октаве, я могу написать это:
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)) чуть выше, чтобы он стал полезной функцией, как показано ниже?
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) )
и вызвать результат(3), чтобы вычислить его в 3, т. е. вернуть числовое значение 11,6463 + 1,5708i из интеграла символического выражения a^2 + csc(a)
. В принципе, как использовать символьное выражение в качестве числового выражения? Это как этот другой вопрос для Matlab.
Использованная литература:
f(3)
довольно бессмысленно, так как вы не можете контролировать константу интегрирования. Вы также можете получить в результате наиболее реальное выражениеx^3/3 + log( 1 - cos(x) )/2 - log( 1 + cos(x) )/2
. Только определенные интегралы, такие как разностьf(3)-f(0)
, имеют результаты, не зависящие от капризов алгоритма интегрирования. - person Lutz Lehmann   schedule 30.11.2016