循环和逻辑运算符

时间:2014-04-15 04:13:36

标签: matlab while-loop logical-operators

我想在while循环中使用OR语句,这样只要两个条件中的任何一个都不满足,循环就会终止。

条件:(1)i必须小于或等于nmax,(2)R(i,i)-R(i-1,i-1)的绝对值小于指定的delta

这里是我的代码(一切似乎工作正常,除了函数执行时的while条件,直到每次都达到nmax):

    function [R] = romberg(f,a,b,delta,nmax)
    R=zeros(nmax,nmax);
    R(1,1)=(f(a)+f(b))*(b-a)/2;
    i=2;
    while i<nmax || abs(R(i,i)-R(i-1,i-1))<delta
        m=2^(i-1);
        R(i,1)=trapez(f,a,b,m);
        for j=2:i
            R(i,j)=R(i,j-1)+(R(i,j-1)-R(i-1,j-1))/(4^j-1);
        end
        i=i+1;
    end
    R

1 个答案:

答案 0 :(得分:1)

试试这个。 abs(R(i,i)-R(i-1,i-1))循环的while条件存在一些问题。

function [R] = romberg(f,a,b,delta,nmax)
    R=zeros(nmax,nmax);
    R(1,1)=(f(a)+f(b))*(b-a)/2;
    i=2;
    E=2*delta;
    while i<nmax && E>delta
        m=2^(i-1);
        R(i,1)=trapez(f,a,b,m);
        for j=2:i
            R(i,j)=R(i,j-1)+(R(i,j-1)-R(i-1,j-1))/(4^j-1);
        end        
        E=abs(R(i,i)-R(i-1,i-1));
        i=i+1;
    end