我正在尝试数字地找到X^2+X+C=0
的解决方案,其中C是矩阵C=[-6,-5;0,-6]
和0=[0,0;0,0]
,这是一个二次方程,其中变量是2x2矩阵。
所以我编写了以下matlab命令
C=[-6,-5;0,-6]
[X1,F,e_flag]=fsolve('X^2+X+C',[1,1;1,1])
其中[1,1;1,1]
是我们的初始估算值,或X0
。
我收到以下错误
“使用inlineeval时出错(第15行) 内联表达式错误==> X ^ 2 + X + C 未定义的函数或变量'X'。
内联/ feval错误(第34行) INLINE_OUT_ = inlineeval(INLINE_INPUTS_,INLINE_OBJ_.inputExpr, INLINE_OBJ_.expr);
fsolve出错(第218行) fuser = feval(funfcn {3},x,varargin {:});
引起: 初始用户提供的目标函数评估失败。 FSOLVE 不能继续。“
如何使用fsolve解决这些问题?
答案 0 :(得分:2)
我不认为fsolve
可以与你方程的字符串表示一起使用。
您应该将函数句柄传递给求解器,如下所示:
C = [-6,-5;0,-6];
[X1,F,e_flag] = fsolve(@(X) X^2+X+C,[1,1;1,1]);
这也取决于你的意思:X^2
。在Matlab中,这意味着矩阵乘积X*X
。如果你想要进入平方,你应该使用X.^2
,在这种情况下你将有四个独立的二次方程,你可以独立解决。