拉格朗日(Lagrange)插值算法
拉格朗日插值(Lagrange interpolation)是一种多项式插值方法,指插值条件中不出现被插函数导数值,过n+1个样点,满足如下图的插值条件的多项式。也叫做拉格朗日公式。
这里以拉格朗日3次插值为例,利用C++进行实现:
1 //利用lagrange插值公式 2 #include<iostream> 3 using namespace std; 4 5 double Lx(int i,double x,double* Arr) 6 { 7 double fenzi=1,fenmu=1; 8 for (int k=0;k<4;k++) 9 { 10 if (k==i) 11 continue; 12 fenzi*=x-Arr[k]; 13 fenmu*=Arr[i]-Arr[k]; 14 } 15 return fenzi/fenmu; 16 } 17 18 int main() 19 { 20 double xArr[4]={}; 21 double yArr[4]={}; 22 //输入4个节点坐标 23 cout<<"请依次输入4个节点的坐标:"<<endl; 24 for (int i=0;i<4;i++) 25 cin>>xArr[i]>>yArr[i]; 26 27 //输入要求解的节点的横坐标 28 cout<<"请输入要求解的节点的横坐标:"; 29 double x; 30 cin>>x; 31 double y=0; 32 for (int i=0;i<4;i++) 33 y+=Lx(i,x,xArr)*yArr[i]; 34 printf("x=%lf时,y=%lf\n",x,y); 35 36 //分界,下面为已知y求x 37 cout<<"请输入要求解的节点的纵坐标:"; 38 cin>>y; 39 x=0; 40 for (int i=0;i<4;i++) 41 x+=Lx(i,y,yArr)*xArr[i]; 42 printf("y=%lf时,x=%lf\n",y,x); 43 44 system("pause"); 45 return 0; 46 }
作者:耑新新,发布于 博客园
转载请注明出处,欢迎邮件交流:zhuanxinxin@aliyun.com
本文来自博客园,作者:Arthurian,转载请注明原文链接:https://www.cnblogs.com/Arthurian/p/7744637.html
欢迎邮件交流:zhuanxinxin@aliyun.com
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
2016-10-28 C#访问修饰符
2016-10-28 VS2010中将当前选定项目做为启动项