我一直在努力解决一个更复杂的上下文中的方程。但是,我想通过以下简单示例来说明我的问题。如何用Matlab中的分段定义函数求解方程?
考虑以下两个功能:
function y=f1(x)
y=1-x;
end
function y=f2(x)
if x<0
y=0;
else
y=x;
end
end
我要解决下面的等式:F1(x)= F2(x)的。我使用的代码是:
syms x;
x=solve(f1(x)-f2(x));
而且我得到了以下错误:
??? Error using ==> sym.sym>notimplemented at 2621
Function 'lt' is not implemented for MuPAD symbolic objects.
Error in ==> sym.sym>sym.lt at 812
notimplemented('lt');
Error in ==> f2 at 3
if x<0
我知道错误是因为x
是一个象征性的变量,因此我无法在分段与0
比较x
功能f2(x)
。
有没有办法解决这个问题并解决方程?
您使用的是什么'版本'的Matlab? – horchler 2014-10-31 19:58:35
在版本R2012a中引入了使用“<”创建符号关系的功能。 – Alex 2014-10-31 20:07:22
解决方法有很多,但符号工具箱的变化非常大,以至于解决方案可能会严重依赖于版本。 – horchler 2014-10-31 20:12:18