| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 422 人关注过本帖
标题:[求助]求高手帮忙````````````
取消只看楼主 加入收藏
小白家的TT
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2005-9-17
收藏
 问题点数:0 回复次数:0 
[求助]求高手帮忙````````````
那位高手帮帮忙啊,小弟在这跪求了`` 帮我把这个Basic程序改写成C语言格式 算法,思想,原代码都已经给出...

Lagrange 插值

一.功能

给出n个节点及相应的函数值x1,x2,,xn;y1,y2,,yn,

对m个插值节点xj,j=1,2,,m,用Lagrange插值多项式进行成

组插值.

二.算法简介

设已知n个节点,x1,x2,,xn及相应的函数值yj=f(xj)

j=1,2,,n,由此构造n-1阶插值多项式Φn-1(x)

当n=3时,有

Φ2(x)=∑YjLj(x),j=1,2,3 (6-10)

其中 L1(x)=[(x-x2)(x-x3)]/[(x1-x2)(x1-x3)]

L2(x)=[(x-x1)(x-x3)]/[(x2-x1)(x2-x3)]

L3(x)=[(x-x1)(x-x2)]/[(x3-x1)(x3-x2)]

L1(x),L2(x),L3(x)分别称为x1,x2,x3的二次插值基函数,将

它们入(6-10)式,即得Lagrange二次插值多项式:

Φ2(x)=∑[∏(x-xj)/(xk-xj)]Yk,

j,k=1,2,3,j≠k (6-11)

推广,当n>3时,可构造n-1次插值基函数,得到n-1次Lagrange

插值多项式:

Φn-1(x)=∑[∏(x-xi)/(xk-xi)]

k=1,2,,n, I=2,3,,n (6-12)

三. 程序使用说明

1. 输入参数

n 节点个数

m 插值点个数

X(N),Y(N),一维实数组,分别存放节点及节点处的函数值

C(M) 一维实数组,存放插值点的值

数据排列顺序:x(n),y(n),c(m),分别存放在主程序250-270中

2. 输出参数

n,m分别为节点个数,插值点个数

X(N),Y(N),一维实数组,分别存放节点及节点处的函数值

C(M),D(M),一维实数组,分别存放插值点及值

五.程序例题运行结果说明:

当运行程序后,输入:

6 7

1.0000 2.0000 3.0000 4.0000 5.0000 6.0000

8.0000 27.0000 64.0000 125.0000 216.0000 343.0000

0 1.5 2.5 3.5 4.5 5.5 7

则运行结果为:

x=0.0000000000e+00 y=1.0000000000e+00

x=1.5000000000e+00 y=1.5625000000e+01

x=2.5000000000e+00 y=4.2875000000e+01

x=3.5000000000e+00 y=9.1125000000e+01

x=4.5000000000e+00 y=1.6637500000e+02

x=5.5000000000e+00 y=2.7462500000e+02

x=7.0000000000e+00 y=5.1200000000e+02

basic源程序:

10 '***************

20 '604 Lagrange *

30 '***************

40 INPUT "N,M=";N,M

50 PRINT;TAB(3);"N=";N,"M=";M

60 DIM X(60),Y(60),C(M),D(M)

70 PRINT TAB(3);

80 FOR I=1 TO N

90 READ X(I):PRINT USING" ###.####";X(I);

100 NEXT I

110 PRINT

120 FOR I=1 TO N

130 READ Y(I):PRINT USING" ###.####";Y(I);

140 NEXT I

150 PRINT

160 FOR J=1 TO M

170 READ C(J)

180 NEXT J

190 PRINT

200 GOSUB 400

210 PRINT TAB(3);

220 FOR J=1 TO M

230 PRINT "X=";C(J),"Y=";D(J)

240 NEXT J

250 DATA 1,2,3,4,5,6

260 DATA 8,27,64,125,216,343

270 DATA 0,1.5,2.5,3.5,4.5,5.5,7

280 END

400'子程序

410 FOR J=1 TO M

420 FOR K=1 TO N

430 S=1

440 FOR I=1 TO N

450 IF I=K THEN 470

460 S=S*(C(J)-X(I))/(X(K)-X(I))

470 NEXT I

480 D(J)=D(J)+S*Y(K)

490 NEXT K

500 NEXT J

510 RETURN

搜索更多相关主题的帖子: 多项式 
2005-09-17 13:26
快速回复:[求助]求高手帮忙````````````
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023645 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved