2016-03-01 109 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