Demo entry 6363176

数值计算方法

   

Submitted by suzui961228 on May 12, 2017 at 13:16
Language: Matlab. Code size: 880 Bytes.

clc;clear;
a=0.5;b=1.5;                    %将a、b作为区间两端的参数
fa=exp(a)-2-cos(exp(a)-2);      %将fa、fb作为两端函数值的储存参数
fb=exp(b)-2-cos(exp(b)-2);
c=(a+b)/2;                      %将c作为区间中点的参数
fc=exp(c)-2-cos(exp(c)-2);      %fc作为中点函数值的储存参数
d=0.5;                          %将d作为上一次的中点结果的参数
while abs((c-d)/2)>10^(-5);     %将绝对误差小于10^(-5)作为循环终止的结果
    d=c;                        %将上一次的c储存的中点值赋值给d
    if fa*fb>0                  %若是在区间内不存在根,则返回error,并且终止循环
        disp('error');
        break;
    end
    if fc==0                    %若是中值恰好为根则跳出循环
        break;
    else if fb*fc>0             %若是fb与fc同号则将c赋值给b 同时将c取为新区间的中点
    b=c;
    fb=fc;
        c=(a+b)/2;
    fc=exp(c)-2-cos(exp(c)-2);
else 
    a=c;                        %否则则将c赋值给a 同时将c取为新区间的中点
    fa=fc;
        c=(a+b)/2;
    fc=exp(c)-2-cos(exp(c)-2);
        end
end 
end
format long ;
x=c;

This snippet took 0.01 seconds to highlight.

Back to the Entry List or Home.

Delete this entry (admin only).