【数值分析】插值算法-拉格朗日插值法
2017-05-05 21:16
826 查看
开篇明志
之前学过《数值分析》这门课,现对部分内容做代码上的实现。今天讲拉格朗日插值法,那么什么是拉格朗日插值法呢?大概用大白话总结一下:利用函数f (x)在某区间中插入若干点的函数值,作出适当的特定函数,在这些点上取已知值,在区间的其他点上用这特定函数的值作为函数f (x)的近似值,这种方法称为插值法。
目的: 便就是估算出其他点上的函数值。
概念
定理
满足插值条件的、次数不超过n的多项式是存在而且是唯一的。一般形式运用方法
以上截图解释摘自百度百科
进入百度百科搜【拉格朗日插值法】即可找到。
实现代码
import java.util.Scanner; public class Lagrange { private static double[] Lag(double x[],double y[],double x0[]){ int m=x.length; int n=x0.length; double y0[]=new double ; for(int ia=0;ia<n;ia++) { double j=0; for(int ib=0;ib<m;ib++) { double k=1; for(int ic=0;ic<m;ic++) { if(ib!=ic){ k=k*(x0[ia]-x[ic])/(x[ib]-x[ic]); } } k=k*y[ib]; j=j+k; } y0[ia]=j; } return y0; } public static void main(String[] args) { System.out.println("请输入给定的插值点数量:"); Scanner input=new Scanner(System.in); int m=input.nextInt(); System.out.println("请输入需求解的插值点数量:"); int n=input.nextInt(); double x[]=new double[m]; double y[]=new double[m]; double x0[]=new double ; System.out.println("依次输入给定的插值点:"); for(int i=0;i<m;i++){ x[i]=input.nextDouble(); } System.out.println("依次输入给定的插值点对应的函数值:"); for(int i=0;i<m;i++){ y[i]=input.nextDouble(); } System.out.println("依次输入需求解的插值点"); for(int i=0;i<n;i++){ x0[i]=input.nextDouble(); } double y0[]=Lag(x, y, x0); System.out.println("运用拉格朗日插值法求解得:"); for(int i=0;i<n;i++){ System.out.println(y0[i]+" "); } System.out.println(); input.close(); } }
相关文章推荐
- C++与matlab混合编程基于主成份分析算法的数值分析(一)
- MATLAB数值分析之牛顿插值
- 数值分析(一)拉格朗日插值法c++实现
- 常用数值分析算法(c++)
- 数值分析MATLAB算法程序附录
- 数值分析—牛顿插值
- 基础算法学习(03)-插值计算(拉格朗日插值法和牛顿插值法)
- 【数值分析】拉格朗日插值与牛顿插值
- 【数值分析】拉格朗日插值与牛顿插值
- 数值分析:数据插值方法
- 常用图像插值算法分析与比较
- 数值分析多种算法C语言代码
- 【数值分析】插值法:拉格朗日插值、牛顿插值
- 常用图像插值算法分析与比较
- 数值分析-迭代算法
- C++与matlab混合编程基于主成份分析算法的数值分析(二)
- C++与matlab混合编程基于主成份分析算法的数值分析
- 相关数值分析多种算法代码
- 数值分析 第五章 插值与逼近
- 数模算法-数值分析算法