0

我正在尝试做某种二分法程序,通过绘制所有内容来展示我如何得到最终答案。你知道为什么在我的文件中我不能在另一个 m 文件中绘制函数的数据吗?有那个错误:

mainhazia 27 end 找不到“Roots”的精确(区分大小写)匹配项

最接近的匹配是:C:\Program Files\MATLAB\R2012b\toolbox\matlab\polyfun\roots.m 中的根

mainhazia (line 23) plot(Roots,f(Roots),'.') 中的错误;

我的代码:

主要的 :

f=@(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

二等分M:

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

对不起我的英语,它不是我的母语。

4

1 回答 1

1

检查这是否是您要查找的内容(BisectionM未分配给任何变量的结果):

在主文件更改中:

BisectionM(f,xR,xL,eps);

至:

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

它产生以下情节: 在此处输入图像描述

f=@(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
于 2014-11-15T13:48:46.943 回答