我正在求解矩阵方程fsolve方程/未知数(N
)。我提供了N=2,3
的问题示例,但在每个示例的最后一行中,我必须将每个方程“硬编码”为fsolve。如果N
是一个变量,这将不起作用。我的问题:如何在可变数量的方程上调用fsolve(在这种情况下,一般为N)?唯一的问题是调用fsolve。使用fsolve(Matlab)求解变量数的方程组
clear all
N = 2;
M(:,:,1) = rand(N);
M(:,:,2) = rand(N);
eqn = @(E,n) det(eye(N)-M(:,:,n)*diag(E));
%how do I write this line if I don't know what N is??
[E_values, Fval, Fflag] = fsolve(@(E) [eqn(E,1);eqn(E,2)],[1,1])
或为N=3
将是:
clear all
N = 3;
M(:,:,1) = rand(N);
M(:,:,2) = rand(N);
M(:,:,3) = rand(N);
eqn = @(E,n) det(eye(N)-M(:,:,n)*diag(E));
%how do I write this line if I don't know what N is??
[E_values, Fval, Fflag] = fsolve(@(E) [eqn(E,1);eqn(E,2);eqn(E,3)],[1,1,1])
(请注意,这可能会或可能不会有一个解决方案取决于M,这是确定)。谢谢。