gpt4 book ai didi

arrays - Matlab:创建一个 symfun 数组

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

我试图创建一个 symfun 数组,以便我以后可以访问这些函数并对特定变量执行 diff 操作,我已经搜索并发现代码为:

syms x
f = symfun([x1^2+x2-x3; x2+x3^2; x1*x2], x);

但这不是我要找的东西,这个片段是从数组中创建一个 symfun,但我需要创建一个 symfun 数组。因此,如果我将 n symfun 存储在一个数组中,并将 n 变量存储在一个数组中,那么我想创建一个具有以下内容的矩阵规则:

[[diff(func_1, x1)    diff(func_1, x2) ...... diff(func_1, xn)]
[diff(func_2, x1) diff(func_2, x2) ...... diff(func_2, xn)]
.
.
.
.
[diff(func_n, x1) .......................... diff(func_n, xn)]]

这是我的代码:

function[K] = bigPopaPump()
x1 = sym('x1')
x2 = sym('x2')
f1 = symfun(3*x1+2, x1)
f2 = symfun(8*x2+5, x2)
funcs = [f1, f2]
xess = [x1, x2]
dummy_array = zeros(2, 2)
for i = 1:size(funcs)
for j = 1:size(funcs)
dummy_array(i, j) = diff(funcs(i), xess(j));
end
end
display dummy_array
end

最佳答案

我想你的意思是

syms x1 x2 x3
f = symfun([x1^2+x2-x3; x2+x3^2; x1*x2], [x1 x2 x3])

返回

f(x1, x2, x3) =

x1^2 + x2 - x3
x3^2 + x2
x1*x2

同样,这会返回相同的输出:

syms x1 x2 x3
f = [symfun(x1^2+x2-x3, [x1 x2 x3]);
symfun(x2+x3^2, [x1 x2 x3]);
symfun(x1*x2, [x1 x2 x3])]

如果你想要一个 symfun 的数组然后你需要使用 cell array .这样做的原因是 symfun 实际上是一个函数句柄。一绝use cell arrays rather than arrays to group function handles也是。

以你的例子为例:

syms x1 x2 x3
f = {symfun(x1^2+x2-x3, [x1 x2 x3]);
symfun(x2+x3^2, [x1 x2 x3]);
symfun(x1*x2, [x1 x2 x3])}

syms x1 x2 x3
f = arrayfun(@(fx)symfun(fx,[x1 x2 x3]),[x1^2+x2-x3; x2+x3^2; x1*x2],'UniformOutput',false)

返回

f =

[1x1 symfun]
[1x1 symfun]
[1x1 symfun]

然后您可以计算第一个函数,例如,通过 f{1}(2,3,4)

另见 this related question .

关于arrays - Matlab:创建一个 symfun 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30691322/

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