- 积分
- 64
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2019-3-1
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
进行lagrange插值时,想用1KM上的3个数据点 插值出0到1KM的数据 ,程序如下:
function y=lagrange(x0,y0,x)
%拉格朗日插值函数
%n 个节点数据以数组 x0, y0 输入(注意 Matlat 的数组下标从1开始),
%m 个插值点以数组 x 输入,输出数组 y 为 m 个插值
n=length(x0);o=length(x);
for i=1:o
z=x(i);
s=0.0;
for k=1:n
p=1.0;
for j=1:n
if j~=k
p=p*(z-x0(j))/(x0(k)-x0(j));
end
end
s=p*y0(k)+s;
end
y(i)=s;
end
[A,B,C,D,E,F,G] =textread('C:\Users\LENOVO\Desktop\qdata3.txt','%d %f %d %f %f %f %f','headerlines',1);
s=0;
l=0;
H=load('C:\Users\LENOVO\Desktop\qdata4.txt');
[m,a]=size(H);
v=0;
for i=1:H(1)
if D(i)>=1
v=v+1;
if v<=3
Q(v)=D(i);
K(v)=E(i);
end
end
end
x=0:0.1:1
z=lagrange(Q,K,x);
file1=fopen('C:\Users\LENOVO\Desktop\lagrange.txt','a+');
for x = 0:0.1:1;
z=lagrange(Q,K,x);
fprintf(file1,'%f\t %f10.6 \t %f15.10\t %f15.10\t\r\n',x,z,F(1),G(1));
end
fclose(file1);
s=s+H(1) ;
for i=2:m
s=s+H(i);
l=l+H(i-1);
w=0;
for j=l+1:s
if D(j)>=1
w=w+1;
if w<=3
Q(w)=D(i);
K(w)=E(i);
end
end
end
x=0:0.1:1
z=lagrange(Q,K,x);
file2=fopen('C:\Users\LENOVO\Desktop\lagrange.txt','a+');
for x = 0:0.1:1;
z=lagrange(Q,K,x);
fprintf(file2,'%f\t %f10.6 \t %f15.10\t %f15.10\t\r\n',x,z,F(l+1),G(l+1));
end
fclose(file2);
end
然后报错 lagrange(x0, y0, x) 未定义函数或变量 'x0'。这是为什么呀?开始的不就是一个函数嘛怎么会报错呢
|
|