• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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

#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");

}


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#Newtonsoft.JsonJObject操作发布时间:2022-07-14
下一篇:
C语言-04-函数发布时间:2022-07-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap