2014-11-15 81 views
0

我正在嘗試做一些二等分方法程序,顯示如何通過繪製一切來得到最終答案。 你知道爲什麼在我的文件中,我不能從另一個m文件中的函數中繪製數據嗎? 有這個錯誤:從其他函數繪製數據

mainhazia 27 end Cannot find an exact (case-sensitive) match for 'Roots'

The closest match is: roots in C:\Program Files\MATLAB\R2012b\toolbox\matlab\polyfun\roots.m

Error in mainhazia (line 23) plot(Roots,f(Roots),'.');

我的代碼:

主營:

[email protected](x)x.^2-1; 
XR=2; 
xL=-2; 
XL=xL ; 
eps=0.001; 
ezplot(f); 
hold on ; 
plot(XR,f(XR),'r*'); 
plot(xL,f(xL),'r*'); 
for df=xL:0.15:XR 
if f(xL)*f(df)<= 0 
    xR=df; 
    BisectionM(f,xR,xL,eps); 
    plot(Roots,f(Roots),'.'); 
    xL=df; 
    xR=XR; 
end 
end 

BisectionM:

function Roots = BisectionM(f,xR,xL,eps)  
while abs(xR - xL) > eps 
      xM = (xR + xL)/2; 
      if (f(xL))*(f(xM)) > 0 
       xL = xM; 
       plot(xL,f(xL),'*'); 
      else 
       xR = xM; 
       plot(xR,f(xR),'*'); 
      end 
      Roots = xM; 

     end 
    end 

對不起我的英語水平,它不是我的母語。

回答

1

檢查是否這是你在找什麼(的BisectionM結果沒有分配到任何變量):

BisectionM(f,xR,xL,eps); 

到:

Roots = BisectionM(f,xR,xL,eps); 

主文件更改

它產生如下圖: enter image description here

[email protected](x)x.^2-1; 
XR=2; 
xL=-2; 
XL=xL ; 
eps=0.001; 
ezplot(f); 
hold on ; 
plot(XR,f(XR),'r*'); 
plot(xL,f(xL),'r*'); 
for df=xL:0.15:XR 
    if f(xL)*f(df)<= 0 
     xR=df; 
     Roots = BisectionM(f,xR,xL,eps); 
     plot(Roots,f(Roots),'.'); 
     xL=df; 
     xR=XR; 
    end 
end 
+0

我做了你說的,我只得到這個:[URL = http://www.siz.co.il/my.php?i = gtmomxqmznzv.jpg] [IMG] http://up413.siz .co.il/img3/gtmomxqmznzv.jpg [/ IMG] [/ URL] 請複製我你有什麼改變... – user3316789