我想解决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} }
如何解决问题?
答案 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
等于使用符号数学的(实际)解决方案。