如何使用fsolve()与det()

时间:2015-07-09 05:12:29

标签: matlab

我想解决det(A)=0一个大矩阵A,每个元素都是w的函数。

解决这些(简单)问题的一种方法是使用符号方法,例如:

A = sym('[w, 1; 2, 4*w^2 + 2]');
answer = solve(det(A),'w');

但是,我想解决一个更大的问题,其中每个元素的等式被定义为函数句柄(例如A4 = @(w) 4*w^2 + 2;),并且可能需要用fsolve()以数字方式求解。

问题是我无法直接将函数句柄放在矩阵A中 - 它们需要放在单元格数组中,但是solve(det(A))与单元格数组不兼容并返回{{1} }

如何解决问题?

1 个答案:

答案 0 :(得分:2)

我尝试使用最小的例子来跟踪方法。

% Defining all functions as cells:
f{1,1} = @(w)w;
f{1,2} = @(w)1;
f{2,1} = @(w)2;
f{2,2} = @(w)4*w.^2+2;

% Function to solve
fsol = @(w)det(cellfun(@(x)x(w),f));

% Using fsolve
fsolve(fsol,0)

结果是

0.5898

等于使用符号数学的(实际)解决方案。