2014-09-11 95 views
0

MatLab全新的,我需要它來回答我的課程這個作業問題。我試圖看到這個方程(畝)將等於某個值(sae30mu),同時減少x,以便我可以找到x的正確值。但是,當它打印x時,我得到一個負數。我無法說出爲什麼這段代碼不起作用,因爲它對我來說似乎應該只是吐出答案。這個Matlab代碼有什麼問題?簡單while循環

x = 1.0; 
    mu = ((sae10mu)^x)*((sae50mu)^(1-x)); 

    while (mu ~= sae30mu & x >= 0) 
     x = x - 0.01; 
     mu = ((sae10mu)^x)*((sae50mu)^(1-x)); 
    end 

    x 

回答

4

這裏有兩個問題。

首先,你沒有得到正確的答案,因爲mu永遠不會等於sae10mu,因此mu~=sae10mu將始終爲真。數值精度的限制意味着你不能像這樣做浮點比較。相反,您需要定義一些容差,tol,並進行比較,如abs(mu-sae10mu)>tol。然後,一旦musae10mutol內,條件將爲真。

其次,直到x小於0的第一個值,你會得到是x小於0的最大價值,這是-0.01 x>=0將是真實的。要在x=0處停止,請執行x>0

while循環應該是這樣的:while(abs(mu-sae10mu)>tol & x>0)

+0

技術上講,它也應該使用''&&,而不是隻是'&'以及 – Dan 2014-09-11 08:26:24