gpt4 book ai didi

matlab - 如何将符号包中的符号表达式转换为 Octave 函数?

转载 作者:行者123 更新时间:2023-12-02 13:25:12 30 4
gpt4 key购买 nike

如何将符号包中的符号表达式转换为 Octave 函数?

在 Octave 上安装符号包 pkg install -forge symbolic 后。使用 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 。基本上,如何将符号表达式用作可数值表达式?这是this other question对于 Matlab。

引用文献:

  1. http://octave.sourceforge.net/symbolic/index.html
  2. How do I declare a symbolic matrix in Octave?
  3. Octave symbolic expression
  4. Julia: how do I convert a symbolic expression to a function?
  5. What is symbolic computation?

最佳答案

您可以使用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 - 如何将符号包中的符号表达式转换为 Octave 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40876211/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com