function [coff,err]= lmz(func,m,a,b,eps)
if(nargin == 4)
eps=1.0e-6;
end
syms v;
maxv = 0.0;
max_x = a; %记录abs(f(x)-p(x))取最大值的x
for k=0:m
px(k+1)=power(v,k);
end %p(x)多项式
for i=1:m+2
x(i)=0.5*(a+b+(b-a)*cos(3.14159265*(m+2-i)/(m+1)));
fx(i)=subs(sym(func), findsym(sym(func)),x(i));
end %初始的x和f(x)
A = zeros(m+2,m+2);
for i=1:m+2
for j=1:m+1
A(i,j)=power(x(i),j-1);
end
A(i,m+2)=(-1)^i;
end
c =A\transpose(fx); %p(x)的初始系数
u = c(m+2); %算法中的u
tol = 1; %精度
while(tol>eps)
t = a;
while(t<b) %此循环找出abs(f(x)-p(x))取最大值的x
t = t + 0.05*(b-a)/m;
px1 = subs(px,'v',t);
pt = px1*c(1:m+1);
ft = subs(sym(func), findsym(sym(func)),t);
if abs(ft-pt)>maxv
maxv = abs(ft-pt);
max_x = t;
end
end
if max_x>b
max_x = b;
end
%以下可参考算法的三个确定新点集的情况
if (a<=max_x)&&(max_x<=x(2)) %第一种情况
f0 = subs(sym(func), findsym(sym(func)),x(2));
px1 = subs(px,'v',x(2));
pt = px1*c(1:m+1);
d1 = f0 - pt;
fm = subs(sym(func), findsym(sym(func)),max_x);
pm1 = subs(px,'v',max_x);
pm = pm1*c(1:m+1);
d2 = fm - pm;
if d1*d2>0
x(2) = max_x;
end
else
if (x(m+1)<=max_x)&&(max_x<=b) %第二种情况
f0 = subs(sym(func), findsym(sym(func)),x(m+1));
px1 = subs(px,'v',x(m+1));
pt = px1*c(1:m+1);
d1 = f0 - pt;
fm = subs(sym(func), findsym(sym(func)),max_x);
pm1 = subs(px,'v',max_x);
pm = pm1*c(1:m+1);
d2 = fm - pm;
if d1*d2>0
x(m+1) = max_x;
end
else %第三种情况
for i=2:m
if(x(i)<=max_x)&& (x(i+1)>=max_x)
index_x = i;
break;
end
end %找到max_x所在区间
f0 = subs(sym(func), findsym(sym(func)),x(index_x));
px1 = subs(px,'v',x(index_x));
pt = px1*c(1:m+1);
d1 = f0 - pt;
fm = subs(sym(func), findsym(sym(func)),max_x);
pm1 = subs(px,'v',max_x);
pm = pm1*c(1:m+1);
d2 = fm - pm;
if d1*d2>0
x(index_x) = max_x;
end
end
end
for i=1:m+2 %重新计算f(x)
fx(i)=subs(sym(func), findsym(sym(func)),x(i));
end
for i=1:m+2
for j=1:m+1
A(i,j)=power(x(i),j-1);
end
A(i,m+2)=(-1)^i;
end
c =A\transpose(fx); %重新计算p(x)的系数
tol = abs(c(m+2)-u);
u = c(m+2);
end
coff = c(1:m+1);
err = u;
第5章 函数逼近.rar_函数近似误差_函数逼近_逼近理论
版权申诉
169 浏览量
2022-07-14
23:17:15
上传
评论
收藏 6KB RAR 举报
御道御小黑
- 粉丝: 58
- 资源: 1万+
最新资源
- pta题库答案c语言之排序4统计工龄.zip
- pta题库答案c语言之树结构7堆中的路径.zip
- pta题库答案c语言之树结构3TreeTraversalsAgain.zip
- pta题库答案c语言之树结构2ListLeaves.zip
- pta题库答案c语言之树结构1树的同构.zip
- 基于C++实现民航飞行与地图简易管理系统可执行程序+说明+详细注释.zip
- pta题库答案c语言之复杂度1最大子列和问题.zip
- 三维装箱问题(Three-Dimensional Bin Packing Problem,3D-BPP)是一个经典的组合优化问题
- 以下是一些关于Linux线程同步的基本概念和方法.txt
- 以下是一个简化的示例,它使用pygame库来模拟烟花动画的框架.txt
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0