C语言实现newton多项式插值法

博主原创,未经允许,不得转载!

#define _CRT_SECURE_NO_DEPRECATE
#include<stdio.h>
#include<stdlib.h>
#include<math.h>;
#define n 6
void ark(float A[][6], float x1[], float y1[],int n1) {
for (int r = 0; r <= n1 - 1; r++) {
A[r][0] = y1[r];
}
for (int k = 1; k <= n1; k++) {
for (int r = k; r <= n1; r++) {
A[r][k] = (A[r][k - 1] - A[r - 1][k - 1]) / (x1[r] - x1[r - k]);
}
}
for (int i = 0; i <= n1; i++) {
printf("%f ", A[i][i]);
}

}

//此算法运用递归可以算出组合数

float C(int r, int k, float x[], int n1) {
float s = 0;
if (k == 0)
return 1;
else if (k == 1) {
for (int i = 0; i < r; i++)
s = s + x[i];
return s;
}
else {
for (int j = k - 1; j<r; j++)
s = s + x[j] * C(j, k - 1, x, n1);
return s;
}
}

void main() {
/*
printf("请输入个数n", "\n");
scanf("%d", &n);
printf("请输入相应的坐标", "\n");
for (int i = 0; i <= n - 1; i++) {
printf("x[%d]", i);
scanf("%f", &x[i]);
printf("y[%d]", i);
scanf("%f", &y[i]);
printf("\n");
}
*/
float A[n][n], B[n];
float x[n] = { 0.40,0.55,0.65,0.80,0.90,1.05 };
float y[n] = { 0.41075,0.57815,0.69675,0.88811,1.02652,1.25382 };
ark(A,x,y,6);
for (int k = n-1; k >=0; k--) {
B[k] = 0;
for (int i = 0; i <n - k; i++) {
B[k] = B[k] + pow(-1, i)*(A[k+i][k+i])*C(k + i, i, x, n);
}
}
for (int i = 0; i <n; i++) {
printf("%f ", B[i]);
}

system("pause");

}

时间: 2024-10-19 18:22:21

C语言实现newton多项式插值法的相关文章

两个多项式相加 ( C++ )

实现两个多项式进行相加 不开辟空间 ( 这要求实现进行相加,代价为两个原链表将被修改) 分析: this>other 就把other当前结点放置在this之前 this<other 就this当前结点前移一位,并且后继也前移一位 this==other 求和为0就删除,并全部前移一位,不等就删除other中的当前结点并前移 注意: 必须注意 n 作为始终指向 mHead, n->next 始终指向other链表的下一个结点,所以修改了other链表时候必须注意 n->next的指向

Line Search and Quasi-Newton Methods 线性搜索与拟牛顿法

Gradient Descent 机器学习中很多模型的参数估计都要用到优化算法,梯度下降是其中最简单也用得最多的优化算法之一.梯度下降(Gradient Descent)[3]也被称之为最快梯度(Steepest Descent),可用于寻找函数的局部最小值.梯度下降的思路为,函数值在梯度反方向下降是最快的,只要沿着函数的梯度反方向移动足够小的距离到一个新的点,那么函数值必定是非递增的,如图1所示. 梯度下降思想的数学表述如下: b=a−α∇F(a)⇒f(a)≥f(b)(1)(1)b=a−α∇F

ArcGIS空间分析工具

1. 3D分析 1.1. 3D Features toolset 工具 工具 描述 3D Features toolset (3D 要素工具集) Add Z Information 添加 Z 信息 添加关于具有 Z 值的要素类中的要素的高程属性的信息. Buffer 3D 3D 缓冲 围绕点或线创建三维缓冲区以生成球形或圆柱形的多面体要素. Difference 3D 3D 差异 消除目标要素类中部分与减法要素类中闭合的多面体要素体积重叠的多面体要素. Enclose Multipatch 封闭

猪猪机器学习笔记(六)梯度下降和拟牛顿

梯度下降和拟牛顿 作者:樱花猪   摘要:     本文为七月算法(julyedu.com)12月机器学习第六次次课在线笔记.本节课主要介绍了一种在机器学习需要经常使用到的计算方法——梯度下降法并在最后提出了另一种下降法的思路——拟牛顿法.梯度下降法是一个连接理论和计算机计算的桥梁,这种方法通过迭代来逐步完成对于目标函数的演化,将离散和连续有机的结合起来.实际上梯度下降法在许多有关偏微分方程算法中也有所用到,例如水平集.主动轮廓模型等.通过本次课程的学习,我们能够更加具体和感性的理解梯度下降,从

浅谈优化程序性能(上)

前言 我们知道,多项式定义为: 在几何学中,多项式是最简单的平滑曲线.简单是指它仅由乘法及加法构成,平滑是因为它类同口语中的平滑,以数学术语来说,它是无限可微,即它的所有高次微分都存在.事实上,多项式的微分也是多项式.简单及平滑的特点,使多项式在数值分析.图论,以及电脑绘图等,都发挥极大的作用.多项式求值是解决许多问题的核心技术.以数值分析为例,多项式函数常常用作对数学库中的三角函数求近似值. 现在,让我们来用 C 语言写一个对多项式求值的函数吧. 直接的算法 直接按照多项式的定义使用循环求值:

ArcGIS教程:绘制数据

任何分析的第一步都是绘制和检查数据.这可以提供数据集的空间组成部分的第一印象,而且可能给出异常值和错误数据值.全球趋势和其他系数间的空间自相关的主导方向的指示,所有这些在开发正确反映感兴趣的现象的插值模型的过程中都非常重要. ArcGIS 提供很多方法来可视化数据:ArcMap 可以访问用于高亮显示数据不同方面的很多分类方案和色带,而ArcScene 可以在 3D 空间渲染数据,这在查找局部异常值和全球趋势时非常有用.尽管没有正确的方法来显示数据,下图显示了相同数据的不同渲染,从中可以看出不同方

数学专业英语词汇

1 概率论与数理统计词汇英汉对照表 Aabsolute value 绝对值 accept 接受 acceptable region 接受域 additivity 可加性 adjusted 调整的 alternative hypothesis 对立假设 analysis 分析 analysis of covariance 协方差分析 analysis of variance 方差分析 arithmetic mean 算术平均值 association 相关性 assumption 假设 assum

oo的教训

今天是我开始Java编程的第三周,虽然勉强编出能跑的程序,但是感觉自己对Java的理解还是不够深入.尽管如此,我还是总结了一些关于Java的一些体会. 首先,我们都知道,Java是面向对象的编程语言,而c是面向过程的.在c语言中,但凡我遇到一些类似Java的相似对象时,我一般会首选结构体.利用结构体来大致模仿Java的类.但是这样也有非常大的弊端,例如:如果有两个相似但不完全相同的结构时,结构体往往会需要重新定义:对于Java中的多态数组,我目前还没有想到什么好办法在c语言里面再现它. 其实,我

密钥共享

密钥共享 编写人:岑鹏.吴易佳.秦红梅 1密钥共享背景 密钥管理是为了防止通信双方在信息交换时密钥泄露或者被篡改和替换的系列过程,保证通信双方在通信时密钥的安全性与可靠性,当一个密钥对多份信息进行加密时,该密钥一旦丢失.损坏或者被非法获得时,多个加密的机密文件就可能会被非法解密,从而造成巨大的损失.为了解决这个问题,将密钥进行多个备份,并让不同的人把密钥保存在不同的地方,而这个方案也出现了一个问题,那就是越多的人知道该密钥则密钥泄漏的可能性就越大,越少的人知道了该密钥,密钥全部丢失后还原出源文件