插值方法实现(拉格朗日插值和牛顿插值)
来源:互联网 发布:qq三国js技能必学 编辑:程序博客网 时间:2024/05/16 10:24
#include<cstdio>#include<cstring>#include<iostream>#include<queue>#include<stack>#include<string>#include<cmath>#include<algorithm>using namespace std;#define maxn 100double Langrange(double x[],double y[],int n,double xx){double ans=0;for(int i=0;i<=n;i++){double tmp=1;for(int j=0;j<=n;j++){if(i==j)continue;tmp*=(xx-x[j])/(x[i]-x[j]);}ans+=tmp*y[i];}return ans;}double Newton(double x[],double y[],int n,double xx){double ma[maxn][maxn];memset(ma,0,sizeof(ma));for(int i=0;i<=n;i++)ma[i][0]=y[i];for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)ma[i][j]=(ma[i][j-1]-ma[i-1][j-1])/(x[i]-x[i-j]);double ans=0,tmp=1;for(int i=0;i<=n;i++){ans+=tmp*ma[i][i];tmp*=(xx-x[i]);}return ans;}double x[maxn],y[maxn];int main(){int n;while(true){scanf("%d",&n);if(n==0)break;for(int i=0;i<=n;i++)scanf("%lf",&x[i]);for(int i=0;i<=n;i++)scanf("%lf",&y[i]);double xx;scanf("%lf",&xx);double ans1=Langrange(x,y,n,xx);double ans2=Newton(x,y,n,xx);printf("%lf %lf\n",ans1,ans2);}return 0;}
今天在马原课上写的。。。。。
代码里面的n代表的是x0,x1,x2,x3……xn的n
刚开始以为牛顿插值前提必须是x0,x1,x2……xn,按照一定的顺序排列,错了~
实测数据不多。估计会有错误。
0 0
- 插值方法实现(拉格朗日插值和牛顿插值)
- 插值法(拉格朗日插值和牛顿插值)
- 插值方法-牛顿插值
- 牛顿插值 C++ 和 Matlab实现
- 牛顿插值(牛顿差商法)的Matlab实现
- 插值法:拉格朗日插值、牛顿插值
- 牛顿插值
- 牛顿插值
- 牛顿插值
- 牛顿插值
- bzoj3453 牛顿插值
- 牛顿插值
- 牛顿插值
- 牛顿插值公式
- 牛顿插值算法与实现
- 实现牛顿插值的matlab代码
- MATLAB实现牛顿插值的源程序
- 计算方法_牛顿插值_C++实现
- ComboBox自定义实现(Realization of the DataGridView-plugin in ComboBox)
- [MongoDB] 安装MongoDB配置Replica Set
- 【SCOI2005】繁忙的都市
- cocos2d-x 斗地主牌组排序
- Struts2中的路径问题总结
- 插值方法实现(拉格朗日插值和牛顿插值)
- Servlet的事件监听器
- linux cd 命令的几个小技巧
- 门面模式
- 上班到现在的状态
- 股票F10关键字过滤工具操作介绍
- 天嵌TQ210宿主机ubuntu挂载NFS文件系统详细步骤
- 如何搭建本地WordPress
- sql server mdf 数据库文件导入 mysql