实验二:Lagrange拉格朗日插值法之C语言代码
来源:互联网 发布:淘宝童装促销文案 编辑:程序博客网 时间:2024/06/01 16:29
拉格朗日插值多项式的算法就比前面的简单些,30行代码左右可以搞定,不过为了通俗易懂,这里我写了比较多的注释.题目:已知下列函数表:
x | 0.56160 | 0.56280 | 0.56401 | 0.56521 |
y | 0.82741 | 0.82659 | 0.82577 | 0.82495 |
具体思路:依据书上的解题步骤,首先我们输入插值点的个数n,然后我们输入插值点的信息,x值是多少,y值是多少,我们用一个结构体定义,最后依据拉格朗日插值公式转化成相应的代码即可.
下面上代码:
/************************************************************************* > File Name: Lagrange.c > Author:chendiyang > School:WUST_CST_1501班 > Myblog:www.chendsir.com > Mail:1441353519@qq.com > Created Time: 2017年04月19日 星期三 8时06分35秒 ************************************************************************/#include <stdio.h>#define MAX 20//输入点的结构typedef struct stPoint{ double x; double y;} Point;int main(){ int n; int i,j; Point points[MAX]; double x,tmp,lagrange=0;//这个x是你将要计算的f(x)插值点,tmp是拉格朗日基函数,larange是根据拉格朗日函数得出f(x)的值 printf("请输入被插值点的个数:(它是从0开始的,所以输入3代表4个点)"); scanf("%d",&n); if(n>MAX) { printf("您输入的个数过多."); return 1; } if(n<=0) { printf("您输入的点数太少."); return 1; } //输入插值点的x值和y值 printf("请输入插值点的x值和y值:\n"); for(i=0;i<=n;i++) scanf("%lf%lf",&points[i].x,&points[i].y); //输入计算拉格朗日插值多项式的x值 printf("\n请输入计算拉格朗日插值多项式的x值:"); scanf("%lf",&x); //利用拉格朗日插值公式计算函数x值的对应f(x) for(i=0;i<=n;i++) { for(j=0,tmp=1;j<=n;j++) { if(j==i) //去掉xi与xj相等的情况 continue; //范德蒙行列式下标就是j!=k,相等分母为0就没意义了 tmp=tmp*(x-points[j].x)/(points[i].x-points[j].x);//这个就是套公式,没什么难度 //tmp是拉格朗日基函数 } lagrange=lagrange+tmp*points[i].y; //最后计算基函数*y,全部加起来,就是该x项的拉格朗日函数了 } //拉格朗日函数计算完毕,代入所求函数x的值,求解就ok了 printf("\n拉格朗日函数f(%lf)=%lf\n",x,lagrange); return 0;}
运行结果如图:
程序运行的结果:当x的值是0.5635时的插值函数值是:0.826116,不知道是对是错,有心人可以手算帮忙验证一下..结果不对的话可以给我留言,方便及时改正.
2 0
- 实验二:Lagrange拉格朗日插值法之C语言代码
- 实验二:Newton牛顿插值法之C语言代码
- 实验一:Guass列选主元消去法之C语言代码
- 实验一:Doolittle三角分解法之C语言代码
- C语言函数连接实验二
- C语言编程之代码优化(二)(转)
- 拉格朗日插值法(Lagrange)
- C语言知识结构之二
- C语言函数之二
- C语言基础知识之二
- c语言学习之代码
- C语言学习代码〈二〉
- 实验二代码
- Crack C语言之-指针之二
- c语言实验
- C语言 枚举实验
- c语言实验
- C语言递归实验
- JSP三大指令元素
- amq的queue同步和异步接收消息
- cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element
- HTTP 协议漫谈
- python time、datetime模块学习使用
- 实验二:Lagrange拉格朗日插值法之C语言代码
- cuda设置指定的GPU可见
- 解决Microsoft Visual Studio正忙办法(VS2015时经常出现此问题)
- 数据结构之中缀表达式转前缀和后缀
- 【华为oj】求解立方根
- 基于PBlaze4 PCIe SSD 的OracleRAC Hammerdb 测试
- how to download document from SCRIBD for free?
- Spring--IoC--Bean的装配--Bean的作用域
- 【ReactNative/JS】uint8array转string convert uint8array to string