牛顿差值多项式c语言版

#include <iostream>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
const int n=4;//插值节点的最大数为四

using namespace std;

double x1[n+1]= {0.4,0.55,0.65,0.8,0.9};
double y1[n+1]= {0.4175,0.57815,0.69657,0.88811,1.02652};

/*
www.quzhuanpan.com
转载请务必告知
*/
void DiffCoefficient(double x1[n+1],double y1[n+1],double F[n+1][n+1])//F[n+1][n+1],记录差商
{
int i,j;
for(i=0; i<=n; i++)
{
F[i][0]=y1[i];//插值为F[0][0]的点
}

for(j=1; j<=n; j++)
for(i=j; i<=n; i++)
{
F[i][j]=(F[i][j-1]-F[i-1][j-1])/(x1[i]-x1[i-j]);//求各阶差商
//printf("%f\n",F[i][j]);
}
printf("%12s%12s","Xi","F(Xi)");
for(j=1; j<=n; j++)
{
printf("%9d%s",j,"step");
}
printf("\n");
for(j=1; j<=38; j++)
{
printf("--");
}
printf("\n");
for(i=0; i<=n; i++)
{
printf("%12f",x1[i]);
for(j=0; j<=i; j++)
{
printf("%13f",F[i][j]);
}
printf("\n");
}
for(i=0; i<=38; i++)
{
printf("--");
}
printf("\n");
}
/*
www.tengxunyun.me
转载请务必告知
*/
int main()
{
int i,m,k;
double P,F[n+1][n+1];
float X;
DiffCoefficient(x1,y1,F);
printf("The number of the interpolation points are m=");
scanf("%d",&m);
for(i=1;i<=m;i++)
{
printf("\ninput X%d=",i);
scanf("%f",&X);
P=F[n][n];
for(k=n-1;k>=0;k--)
{
P=P*(X-x1[k])+F[k][k];
}
printf("P(%f)=%f\n",X,P);
}
getch();
return 0;
}

时间: 2024-09-30 15:01:10

牛顿差值多项式c语言版的相关文章

关于时间的操作(Java版)——获取给定时间与当前系统时间的差值(以毫秒为单位)

import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; public class Test { /** * 获取给定时间与当前系统时间的差值(以毫秒为单位) * * @author GaoHuanjie */ public long getTimeDifferenceBetweenSystemTimeAndParamTime(String paramTime) { DateFor

(转)如何编写有多个返回值的C语言函数

1引言    笔者从事C语言教学多年,在教学中学生们常常会问到如何编写具有多个返回值的C语言函数.编写有多个返回值的函数是所有C语言教材里均没有提到的知识点,但在实际教学与应用的过程中我们都有可能会遇到这样的问题.有学生也尝试了不少方法:如把多个需要返回的值作相应的处理后变成一个可以用return语句返回的数据,再在主调函数中拆开返回的数据使之变成几个值:或者把需要返回多个值的一个函数分开几个函数去实现多个值的返回.这些方法虽然最终都能实现返回要求的多个值,但从程序算法的合理性与最优化方面去考虑

排序算法总结(C语言版)

1.    插入排序 1.1     直接插入排序 1.2     Shell排序 2.    交换排序 2.1     冒泡排序 2.2     快速排序 3.    选择排序 3.1     直接选择排序 3.2     堆排序 4.    归并排序 4.1     二路归并排序 4.2     自然合并排序 5.    分布排序 5.1     基数排序 1.插入排序 1.1      直接插入排序 将已排好序的部分num[0]~num[i]后的一个元素num[i+1]插入到之前已排好序的

基于BP神经网络的简单字符识别算法自小结(C语言版)

本文均属自己阅读源码的点滴总结,转账请注明出处谢谢. 欢迎和大家交流.qq:1037701636 email:[email protected] 写在前面的闲话: 自我感觉自己应该不是一个很擅长学习算法的人,过去的一个月时间里因为需要去接触了BP神经网络.在此之前一直都认为算法界的神经网络.蚁群算法.鲁棒控制什么的都是特别高大上的东西,自己也就听听好了,未曾去触碰与了解过.这次和BP神经网络的邂逅,让我初步掌握到,理解透彻算法的基本原理与公式,转为计算机所能识别的代码流,这应该就是所谓的数学和计

双向链表(c语言版)

为了得到一个简洁的C语言实现的双向链表,本篇参照数据结构书籍对双向链表的做了一些修改,内容有: 1.合并分离的头文件和实现文件,认识更为直观: 2.修改函数名和变量名,更贴近自身的理解: 3.删除了返回首节点.尾节点等功能更为单一的函数,留下其主干. 实现思路: 1.定义一个双向链表 2.进行初始化工作:调用initList(),构造一个空的双向链表 3.执行增删改查等操作(节点操作) *插入时注意:封装成节点 1 /*双向链表实现代码*/ 2 #include<malloc.h> 3 #in

差值的再议-Hermite差值

1. 插值法 插值法又称"内插法",是利用函数f (x)在某区间中已知的若干点的函数值,作出适当的特定函数,在区间的其他点上用这特定函数的值作为函数f (x)的近似值,这种方法称为插值法. 如果这特定函数是多项式,就称它为插值多项式. 2. 经典的Hermite差值 Hermite插值是利用未知函数f(x)在插值节点上的函数值及导数值来构造插值多项式的.因此,Hermite插值满足在节点上等于给定函数值,而且在节点上的导数值也等于给定的导数值. 对于高阶导数的情况,Hermite插值多

图像直方图均衡化增强opencv与C语言版

本文实现彩色图像的全局直方图均衡.分别对R/G/B三通道均衡,读写图片采用OpenCV.代码如下: #include <opencv2/opencv.hpp> //#include <cv.h> //#include <cxcore.h> //#include <highgui.h> #include <time.h> #include <stdio.h> #include <math.h> #include "

黄金分割点(第五周 c语言版)

在上一周,学习其他课程的同时,用C语言编写了黄金分割点小游戏.因为要做界面需要mfc,当时学的时候还做了个简单的计算器.目前c++的知识忘的差不多了,所以就先用C语言来实现算法.打算接下来的一周复习c++,做界面.以下是代码: #include<stdio.h>#include<math.h>#include"windows.h" double getG(int* a,int n);void getdif(double* a,double * b,int n);

HDU5620 KK&#39;s Steel(C++语言版)

问题链接:HDU5620 刚读到题,有点难解,没有头绪. 看了暗示才明白点,有点像菲波拉契数列,不过每一项求的是数列到该项之和.另外略有不同的是,第1项是1,第2项是2.也许是为了三个钢管围起来不能成为三角形的原因. 既然知道以上这些,那就先打表备查,这是为了节省计算时间,尽管有时候是多余的,但是多数程序都需要打表,那就打表吧. 这个C++版的采用顺序查找,逻辑就要简单一些.参见:HDU5620 KK's Steel(C语言版). 需要说明的一点是,菲波拉契序列的各项值增长是极快的,其和的增长就