求两个matlab的程序,分别利用复化梯形公式和辛普森公式求解误差函数erf(x)。

 我来答
jimtien
推荐于2017-12-16 · TA获得超过7652个赞
知道大有可为答主
回答量:2146
采纳率:88%
帮助的人:1090万
展开全部

main.m

    g=@(t)exp(-t.^2);

    x=linspace(0,5,100);

    y1=zeros(1,100);

    y2=zeros(1,100);

    for i = 1:100

        y1(i)=2/sqrt(pi)*Simpson(g,0,x(i),1000);  %幸普森公式

        y2(i)=2/sqrt(pi)*trapezoidal(g,0,x(i),1000); %复合梯形公式

    end

    plot(x,y1,'r-',x,y2,'b.');

    legend('辛普森公式','复合梯形公式');

Simpson.m

    function y = Simpson(f,a,b,M)

        % f被积函数;a积分下限;b积分上限;M子区间个数(将x分为多少个区间)

        h=(b-a)/(2*M);

        s1=0;

        s2=0;

        for i=1:M

            x=a+(2*i-1)*h;

            s1=s1+f(x);

        end

        for j=1:(M-1)

            x=a+2*j*h;

            s2=s2+f(x);

        end

        y=h/3*(f(a)+2*s2+4*s1+f(b));    

    end


trapezoidal.m

    function y = trapezoidal(f,a,b,n)

        h=(b-a)/n;

        x=zeros(1,n+1);

        F=zeros(1,n+1);

        for k=0:n

            x(k+1)=a+k*h;

            if x(k+1)==0

                x(k+1)=10^(-10);

            end

        end

        T_1=h/2*(f(x(1))+f(x(n+1)));

        for i=2:n

            F(i)=h*f(x(i));

        end

        T_2 = sum(F);

        y =T_1+T_2;

    end


追问
多谢了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式