| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4412 人关注过本帖
标题:Newton插值多项式计算函数的近似值
只看楼主 加入收藏
梦网小龙
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-2-28
收藏
 问题点数:0 回复次数:14 
Newton插值多项式计算函数的近似值

#include"stdio.h"
#define N 5
int i,j,k;
float m,s,n;
float xx[]={0.4,0.55,0.65,0.80,0.95,1.05};
float yy[]={0.41075,0.57815,0.69675,0.90,1.00,1.25382};
float New()
{
m=0;
for(j=0;j<=N;j++)
m+=yy[j]/(xx[j]-xx[i]);
return m;
}
float Newton(float x)
{
s=0,n=1;
for(i=0;i<=N;i++)
if(j!=i)
{
n*=(x-xx[i]);
s=n*New();
}
return s;
}
main()
{
clrscr();
printf("%f\n",Newton(0.596));
}


题目是用Newton插值多项式计算函数的近似值
不胜感谢!

搜索更多相关主题的帖子: Newton 多项式 近似值 插值 函数 
2006-03-12 12:59
cordier
Rank: 2
等 级:论坛游民
威 望:1
帖 子:449
专家分:14
注 册:2006-2-9
收藏
得分:0 

具体算法不太了解,
我粗看过去,觉得Newton函数中的j好像没有初值


2006-03-12 13:56
梦网小龙
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-2-28
收藏
得分:0 

那你能就此说说你的看法嘛,应该是怎么样子才对发呢???

2006-03-12 20:39
mwjpiero
Rank: 1
等 级:新手上路
帖 子:68
专家分:0
注 册:2006-3-4
收藏
得分:0 

写的好乱阿,全局变量这样用,程序没法正常工作。
你是学数值计算的吧,牛顿插值法碰巧我这里删掉了,不过我这里还有
定步长辛普森公式计算
二分法
列主高斯消去法
龙贝格
牛顿迭代法
弦截法
逐次超松弛迭代法
你碰到问题再来找我吧,你把代码重新写一下,注意把i和j都变成局部变量。
今天我不帮你写了,要去看球了,明天还不会的话,我在帮你看看。
还有,学校图书馆应该有数值计算的C语言实现这本书的,你去看看,我以前就是用这本书的。

2006-03-13 00:32
黑衣圣堂
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2006-3-13
收藏
得分:0 
你是想把New()中的变量j和Newton()中的i来比较,他们两个是不同的函数,不能这样比较吧。

我不是一支恣意逃窜的箭,而是一个威灵的射手,我的直感,会引领着,把自我射向,更遥远的,流浪。
2006-03-13 10:30
梦网小龙
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-2-28
收藏
得分:0 
老兄,谢谢你的回复哦
对,我是学数值分析的
看你列举了那么多的计算方法,我想你的数学和C一定学的很好了
好的,我就再看看吧
2006-03-13 18:15
梦网小龙
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-2-28
收藏
得分:0 

大家还是说个例子吧,我实在做不出来呀

2006-03-13 22:36
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 
Newton(0.596)=0.631917   

叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-03-13 22:52
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 

错啦~你这个数字变了点


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-03-14 04:34
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 

#include "stdio.h"
#include "conio.h"
#define X 0.596
void main()
{
int i,j;
float s=0.0;
float xx[]={0.4,0.55,0.65,0.80,0.95,1.05};
float yy[]={0.41075,0.57815,0.69675,0.90,1.00,1.25382};
float xy[6];

xy[0]=yy[0];
for(j=1;j<6;j++) /*j阶均差,但依次保留每阶的第一个值*/
for(i=j;i<6;i++)
if(j==1)
xy[i]=(yy[i-1]-yy[i])/(xx[i-j]-xx[i]);
else
xy[i]=(xy[i-1]-xy[i])/(xx[i-j]-xx[i]);

for(i=0;i<6;i++)
for(j=0;j<i;j++)
xy[i]=xy[i]*(X-xx[j]);
for(i=0;i<5;i++) /*我看计算方法里加了4项,我有点奇怪,我这照着做*/
s+=xy[i];

printf("%f\n",s);

getch();
}

大致这样~(我没学计算方法),可能不对。参考了牛顿插值公式
计算方法里有个类似的题~我用它的数据算了一阶均差~部分数据相同,有几个不一样
所以我想它最后的结果可能也有问题


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-03-14 05:12
快速回复:Newton插值多项式计算函数的近似值
数据加载中...
 
   



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

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