Lagrange插值法的实现——C\Java\Python

2021-06-04 12:05

阅读:509

标签:mamicode   read   order   play   turn   public   ring   image   family   

Lagrange 插值法

 

一、问题

对于给定的一元函数  的 个节点值 。试用Lagrange公式求其插值多项式或分段三次Lagrange插值多项式。 数据如下:

(1)

 xi

0.4

0.55

0.65

0.80

0.95

1.05

 yi

0.41075

0.57815

0.69675

0.90

1.00

1.25382

 

求五次Lagrange多项式L5(x) ,和分段线性插值多项式,计算f(0.96),f(0.99)

技术图片

 

 

 

        

L5(x)=y0l0(x)+y1l1(x)+y2l2(x)+y3l3(x)+y4l4(x)+y5l5(x)

 

                         其中:y0=0.41075,y1=0.57815,y2=0.69675,y3=0.90,y4=1.00,y5=1.25382

 

技术图片

 

 

 

f(0.96)=1.010051 ,f(0.99)=1.054230

(2)

 xi

1

2

3

4

5

6

7

 yi

0.368

0.135

0.050

0.018

0.007

0.002

0.001

 试构造Language多项式L6(x),计算f(1.8)的值.(提示:f(1.8≈0.164762)

技术图片

 

 

技术图片

 

其余与Language多项式L5(x)类似,不多重复

 

二、方法简介

                1、 利用Lagrange插值公式

技术图片

 

 

编写出插值多项式程序. 上式中 为插值基函数,

 

 

技术图片

 

 它满足:

        技术图片

 

 

   2、 给出插值多项式或分段线性插值多项式的表达式;

 3、 结合解线性方程组的高斯消法,解下面的线性方程组确定多项式的系数,并对比插值所得结果的异同

技术图片

 

C代码:

//==================================================
#include
#include
#define N 6
double xi[] = {0.4, 0.55, 0.65, 0.80, 0.95, 1.05};    
            //全局变量
double yi[] = {0.41075, 0.57815, 0.69675, 0.90, 1.00, 1.25382};

void main()
{
	double lagrange(double x);
	double x, y;
	FILE *file;
	file = fopen("d:\\data.txt", "w");
	for (x=0.4; x

 Java:

import java.util.Scanner;

public class abc {
    public static void main(String args[]){
        Scanner reader =new Scanner(System.in);
        System.out.println("请输待处理的数据长度:");
        int N = reader.nextInt();
        double xi[] = new double[N];
        double yi[] = new double[N];
        System.out.println("请依次输入给定的插值点xi:");
        for(int i = 0;i 

 

 待续...

Lagrange插值法的实现——C\Java\Python

标签:mamicode   read   order   play   turn   public   ring   image   family   

原文地址:https://www.cnblogs.com/qyyswr/p/14652771.html


评论


亲,登录后才可以留言!