拉格朗日插值C语言

拉格朗日插值C语言

用了结构体数组表示点(x,y),但是没涉及到指针应用,,继续学习

#include<stdio.h>
#include<stdlib.h>
typedef struct Node {
	double x;
	double y;
}LNode;

double lagrange(LNode array[], double test, int length);

int main() {
	printf("请输入有几组已知点:\n");
	int length;
	scanf_s("%d", &length);
	LNode* array = (LNode*)malloc(sizeof(LNode)*length);
	printf("请输入已知点的信息(x,y):\n");
	int i;
	for (i = 0; i < length; i++) {
		scanf_s("%lf", &array[i].x);
		scanf_s("%lf", &array[i].y);
	}
	printf("数据已保存\n");
	for (i = 0; i < length; i++) {
		printf("(%lf,", array[i].x);
		printf("%lf) ", array[i].y);
	}
	printf("\n请输入待测值:\n");
	double test,result;
	scanf_s("%lf", &test);
	result=lagrange(array, test, length);
	printf("结果为:%lf\n", result);
	return 0;
}

double lagrange(LNode array[], double test,int length) {
	int k ,j= 0;
	double t = 1,sum = 0;
	for (k = 0; k < length; k++) {
		for (j = 0; j < length; j++) {
			if (j != k) {
				t = (test - array[j].x) / (array[k].x - array[j].x)*t;
			}
		}
		sum += t*array[k].y;
		t = 1;
	}
	return sum;
}

流程图

参考书上的流程图在这里插入图片描述

运行截图

在这里插入图片描述
这次没做循环输入,可以自己改动,ending!qwq

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值