m文件
function yy=lagrange(x1,y1,xx)
%本程序为Lagrange1插值,其中x1,y1
%xx可以是向量。
syms x
n=length(x1);
for i=1:n
t=x1;t(i)=[];L(i)=prod((x-t)/(x1(i)-t));% L向量用来存放插值基函数
end
u=sum(Ly1);
p=simplify(u) % p是简化后的Lagrange插值函数(字符串)
yy=subs(p,x,xx);
clf
plot(x1,y1,'ro',xx,yy,'')
====================================
x=[ 04 05 06 07 08];
y=[-0916291;-0693147;-0510826;-0356675;-0223144]';
yy=lagrange(x,y,054)
p =
- (14363668061545223x^4)/6755399441055744 + (229230406283396627x^3)/33776997205278720 - (6086876668119665137x^2)/675539944105574400 + (23595121244981107513x)/3377699720527872000 - 186390055565518223/70368744177664000
yy =
-06161
分段线性插值就是满足shape-preserving的。Matlab里有这样的命令,直接调用,非常简单,自己去查。
而所有高于二次的多项式插值方法,都会产生虚假的波动,不具备保形效果。
在要求shape-preserving的同时,如果对插值精度没有要求,那么分段线性插值就非常好了,其缺陷仅在于插值曲线连续但不光滑(即导数不连续)。
Matlab中的一维插值函数为yi=(x,y,xi,method),其中method选取"nearest"(临近点插值)或"linear"(线性插值)都是保形的。
不知道你是否清楚所做实验对象的模型,大概是几次多项式。建议在读入角度、力的数据后,用polyfit进行相应模型次数的插值,确立两者之间的函数关系,然后再用polyval计算相应插值点函数值。这样,在polyfit后,可以输出拟合函数图形,看拟合函数是否满足需要,不行的话可以再次提高多项式的次数。
我看看我有没有,好像我有一个拉格朗日插值法的程序
function h = hlagr2(L,x)
% HLAGR2
% MATLAB m-file for fractional delay approximation
%拉格朗日插值法的实现函数
% by LAGRANGE INTERPOLATION method
% h = hlagr2(L,x) returns a length L (real) FIR
% filter which approximates the fractional delay
% of x samples
% Input: L = filter length (filter order N = L-1)
% x = fractional delay (0 < x <= 1)
% Output: Filter coefficient vector h(1)h(L)
% Subroutines: standard MATLAB functions
N = L-1; % filter order
M = N/2; % middle value
if (M-round(M))==0 D=x+M; % integer part closest to middle
else D=x+M-05; end;
%
h=ones(1,(N+1));
%
for n=0:N
n1=n+1;
for k=0:N
if (k~=n)
h(n1) = h(n1)(D-k)/(n-k);
end % if
end; % for k
end; % for n
这个是用于分数延迟滤波器中拉格朗日插值法的,你可以试试看。或者仿照一下。
以上就是关于怎么用matlab利用拉格朗日插值计算法的原理编写并计算函数所在节点的近似值。 谢谢。全部的内容,包括:怎么用matlab利用拉格朗日插值计算法的原理编写并计算函数所在节点的近似值。 谢谢。、分段插值方法有分段线性插值、Hermit插值民及保形插值,请问其中的保形插值的Matlab程序怎样编写呢、MATLAB 分段插值法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)