我必须在我的matlab代码中解决系统方程式。
首先,我尝试通过将未知变量定义为
来使用符号演算来解决它syms x1 x2 x3 'real'
并使用函数solve
[sx1 sx2 sx3] = solve(f1 == 0, f2 == 0, f3 == 0);
其中f1, f2, f3
是x1, x2, x3
的函数。
我知道有时可以找到解决方案,但有些情况下解决方案不存在而且我得到了
Warning: Explicit solution could not be found.
在这种情况下,我想以某种方式“捕捉”这个警告(屏幕上没有任何打印!)并运行其他代码。
如何实现这一目标?
提前致谢
答案 0 :(得分:1)
如果要检查是否找不到解决方案,可以检查sx1, sx2, sx3
是否为空 - 如果找不到解决方案,则不会分配它们,因此将为空
[sx1 sx2 sx3] = solve(f1 == 0, f2 == 0, f3 == 0);
if isempty(sx1)
% DO OTHER STUFF
end
如果您想阻止显示警告,可以使用以下命令将其关闭:
warning off symbolic:solve:warnmsg3
理想情况下,您应该在完成后立即再次打开它,以防止可能出现混乱。