⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 新建 文本文档.txt

📁 里米兹算法的MATLAB源程序
💻 TXT
字号:
里米兹算法
求函数f(x)=e^x在[-1,1]上的二次多项式逼近。最佳逼近多项式具有如下形式:p(x)=a+bx+cx^2, 取初值-1,-0.5 ,0.5 ,1
Ⅰ里米兹算法matlab M文件:
a=1;
b=-1;
X=[-1 -0.5 0.5 1];
Y(4,1)=10;
while Y(4,1)>0.045                                       /*设定迭代终止条件*/
    for J=1:4
        A(J,1)=1;
        A(J,2)=X(1,J);                               /*方程组矩阵赋初值*/
        A(J,3)=X(1,J)^2;
        A(J,4)=(-1)^(J-1);
        B(J,1)=exp(X(1,J));
    end
    Y=A\B;                                       /*线性方程组求解*/
    for I=1:3
        XL=X(1,I)-(exp(X(1,I))-Y(2,1)-2*Y(3,1)*X(1,I))/(exp(X(1,I))-2*Y(3,1))    /*寻找交错点组*/;
        if XL>=a&XL<X(1,1)          /*以下为交错点组的构造过程,采用同时交换法*/
            P=-2;
    elseif XL>=X(1,1)&XL<X(1,2)
        P=-1;
elseif XL>X(1,2)&XL<X(1,3)
    P=0;
elseif XL>X(1,3)&XL<X(1,4)
    P=1;
else p=2;
end
B1=exp(XL)-Y(1,1)-Y(2,1)*XL-Y(3,1)*XL^2;
switch P
    case -2
        A1=exp(X(1,1)-Y(1,1)-Y(2,1)*X(1,1)-Y(3,1)*X(1,1).^2);
        if A1*B1>0
            X(1,1)=XL;
        else a=XL;
        end
    case -1
        A1=exp(X(1,1)-Y(1,1)-Y(2,1)*X(1,1)-Y(3,1)*X(1,1)^2);
        if A1*B1>0
            X(1,1)=XL;
        else X(1,2)=XL;
        end
    case 0
        A1=exp(X(1,2)-Y(1,1)-Y(2,1)*X(1,2)-Y(3,1)*X(1,2)^2);
        if A1*B1>0
            X(1,2)=XL;
        else X(1,3)=XL;
        end
    case 1
        A1=exp(X(1,3)-Y(1,1)-Y(2,1)*X(1,3)-Y(3,1)*X(1,3)^2);
        if A1*B1>0
            X(1,3)=XL;
        else X(1,4)=XL;
        end
    case 2
        A1=exp(X(1,4)-Y(1,1)-Y(2,1)*X(1,4)-Y(3,1)*X(1,4)^2);
         if A1*B1>0
             X(1,4)=XL;
         else b=XL;
         end
 end
end
end
disp(Y);
Ⅱ 运行结果:
lmz
    0.9891
    1.1309
    0.5539
   -0.0443
前三项为系数a、b、c, 最后一项为最佳逼近.

Ⅲ 说明:
程序采用里米兹算法求函数的二次逼近多项式,其中交错点组的筛选运用了牛顿迭代法(同时交换法)。

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -