24小时热门版块排行榜    

查看: 671  |  回复: 1

哈格不受伤

金虫 (小有名气)

[求助] 将计算值不断输入一个矩阵当中,求最新的输入矩阵的负值应该怎么表示?已有1人参与

求教大家一个问题,我在编一个很简单的小程序,其实就是二分法求解。现在生成一个矩阵p,将计算的p值输到矩阵p中,现在我将最新输入到矩阵p中的正值(或负值)取出,请问该怎么办?谢谢大家。
另外附上我的二分法部分的程序麻烦大家看一下:
cn(i)=A-B
if (((cn(i)>=0 & cn(i-1)>=0))
        p=(p+pmax)/2
    elseif (cn(i)<=0 & cn(i-1)<=0)
        p=(0+p)/2
    else
        p=(pn(i)+pn(i-1))/2
    end
其实已经知道这个程序哪里不太对,应该改成:
if ((cn(i)>=0 & cn(i-1)>=0))
        p=(p+上一个取正值的cn(i)时对于的p)/2
    elseif (cn(i)<=0 & cn(i-1)<=0)
        p=(0+上一个取负值的cn(i)时对于的p)/2
    else
        p=(pn(i)+pn(i-1))/2
    end
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

pdl9527

专家顾问 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
哈格不受伤: 金币+20, ★★★★★最佳答案 2016-12-16 16:34:11
function [k,x,wuca,yx]=erfen(a,b,abtol)
a(1)=a; b(1)=b;
ya=fun(a(1)); yb=fun(b(1)); %程序中调用的fun.m 为函数
if ya* yb>0,
disp('注意:ya*yb>0,请重新调整区间端点a和b.'), return
end
max1=-1+ceil((log(b-a)- log(abtol))/ log(2)); % ceil是向+ 方向取整
for k=1: max1+1
a;ya=fun(a); b;yb=fun(b); x=(a+b)/2;
yx=fun(x); wuca=abs(b-a)/2; k=k-1;
[k,a,b,x,wuca,ya,yb,yx]
if yx==0
a=x; b=x;
elseif yb*yx>0
b=x;yb=yx;
else
a=x; ya=yx;
end
if b-a< abtol , return, end
end
k=max1; x; wuca; yx=fun(x);
2楼2016-12-02 04:01:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 哈格不受伤 的主题更新
信息提示
请填处理意见