2016-03-01 92 views
2

我有以下代码:矢量化解决MATLAB

syms y 
x=linspace(0,1000,100); 
b=solve((1/(x-y))-(1/y)=2,y) 

,它不工作。我想要矢量化解决方案,但不知何故,我失去了一些东西。我不想用for来单独解决每个值。

非常感谢帮助。

回答

2

想想如何使用笔和纸来解决它。你不会用x取代100次,然后解决100次。相反,解决它曾经为Y,再放入x值:

syms x y 
%use solve once 
b=solve((1/(x-y))-(1/y)==2,y) 
%generate anonymous function from the solution 
c=matlabFunction(b) 
%evaluate anonymous function 100 times 
result=c(linspace(0,1000,100)) 
%to get only the highest solution 
max(result) 

它返回一个2×100矩阵,因为solve发现了两个解决方案。

+0

非常感谢。当仅将c定义为最大值时,它将返回“输入参数必须可转换为浮点数字”。感谢您滥用您的帮助。 –

+0

当你遇到错误时,你使用了什么代码?你不能在符号输入中使用'max',你只对正解有兴趣吗? – Daniel

+0

我想现在我明白你的问题了。最后应用'max'来获得最大的解决方案:'max(c(linspace(0,1000,100)))' – Daniel