📄 新建 文本文档.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 + -