function H = hermite(x,y,ydx,u) %插值点u
n=length(x);H=0;
lu=ones(n);%生成全1矩阵
L=zeros(n); p=zeros(n);%生成全0矩阵
for i=1:n
for j=1:n
if j~=i
l(j)=(u-x(j))/(x(i)-x(j)); %#ok<*AGROW> %l(i)=[x-x(i-1)]/[x(i)-x(i-1)]
lu(i)=lu(i)*l(j);%储存 l(i)的值
p(i)=1/(x(j)-x(i));
L(i)=L(i)+p(i);%储存p(j)的值
end
end
hu(i)=(1+2*(u-x(i))*L(i))*lu(i)^2;%hu=1+2∑{[x-x(i)]/[x(j)-x(i)] }*l(i)^2
Hu(i)=(u-x(i))*lu(i)^2;%Hu=[x-x(i)]*l(i)^2
H=H+hu(i)*y(i)+Hu(i)*ydx(i); %H=∑[y(i)hi(x)+y'(i)Hi(x)]
end
H=vpa(H,8);%规定精度为8位
end
这个程序是精准的 但是如果我将其中储存数据的部分改为下图所示
l(j)=(u-x(j))/(x(i)-x(j)); %#ok<*AGROW> %l(i)=[x-x(i-1)]/[x(i)-x(i-1)]
lu(i)=l(j);%储存 l(i)的值
p(i)=1/(x(j)-x(i));
L(i)=p(i);%储存p(j)的值
数据就会出现极大误差
请问,为什么不能这样改呢