`
王斌_code
  • 浏览: 32867 次
  • 性别: Icon_minigender_1
  • 来自: 长春
社区版块
存档分类
最新评论

数值分析(php实现)一:Lagrange插值

    博客分类:
  • php
阅读更多
在学数值分析,试着用php实现下,有兴趣的朋友可以粘下来试试
Lagrange插值就是给出n个已知的点,用多项式函数拟合,求出拟合的函数,进而估算未知点函数值的一种插值过程
插值函数是f(x) = xigma(求和) lk*yk
本类实现了插值后显示函数图像的功能
<?php
/*
 * Lagrange插值
 * @wangbin
 * */
class Lagrange{
	private $dot = array();
	public function __construct($array){
        $this->dot = $array;
    }

    /*
     * 计算lk
     * */
	private function get_lk($x,$k){
        $num = count($this->dot['x']);
		$omiga_xk = 1;
		$omiga_x = 1;
		for($i = 0;$i < $num;$i++){
			if($i != $k){
				$omiga_xk *= ($this->dot['x'][$k]-$this->dot['x'][$i]);
				$omiga_x *= ($x - $this->dot['x'][$i]);
			}
		}
		$lk = $omiga_x/$omiga_xk;
		return $lk;
	}
	public function get_y($x){
        $num = count($this->dot['x']);
		$L = 0;
		for($k = 0;$k < $num;$k++){
			$lk = $this->get_lk($x,$k);
            $L += ($this->dot['y'][$k]*$lk);

		}
		return $L;
    }
    public function draw(){
        $img = imagecreate(500,500);
        imagecolorallocate($img,255,255,2);
        $num = count($this->dot['x']);
        $max = 0;
        for($i = 0;$i < $num;$i++) $max = $max < $this->dot['x'][$i] ? $this->dot['x'][$i]:$max;
        $r = 7;//点的半径
        $step = 0.1;//步长
        for($i = 0;$i < $num;$i++){
            imagefilledellipse($img,$this->dot['x'][$i],$this->dot['y'][$i],$r,$r,1);
        }
        for($i = $this->dot['x'][0]-10;$i < $max + 10;$i += $step){
            $current_x = $i;
            $current_y = $this->get_y($current_x);
            $next_x = $i + $step;
            $next_y = $this->get_y($next_x);
            imageline($img,$current_x,$current_y,$next_x,$next_y,1);
        }
        header("Content-type: image/png");
        imagepng($img);
        imagedestroy($img);
    }
}

$x = new Lagrange(array('x'=>array(10,30,100,120,220),'y'=>array(20,40,240,220,340)));
$x->draw();
?>
1
2
分享到:
评论
1 楼 luozhong915127 2011-11-17  
全是代码,没有解释呀

相关推荐

    MFC示例:Lagrange插值算法的实现

    Lagrange插值是一种在离散数据点上构造连续函数的方法,它在数值分析和计算数学中具有广泛应用。本文将详细介绍如何使用C++编程语言,结合Microsoft Foundation Classes (MFC) 框架,在Visual Studio 2008环境下实现...

    10172911梁天一数值分析实验1:Lagrange 插值多项式.doc

    【Lagrange插值多项式】是数值分析中的一个核心概念,主要用于近似未知函数的值。该方法基于多项式函数,通过选取一系列离散点(称为插值节点),构造一个多项式,使得该多项式在每个节点上的值与原函数相同。La...

    Lagrange插值PPT课件.pptx

    Lagrange插值PPT课件.pptx 本资源是一个关于Lagrange插值的PPT课件,总共30页,涵盖了插值问题、代数插值、Lagrange插值...* 优点:Lagrange插值可以避免复杂的计算和病态方程组,可以快速地估计出其它深度处的水温。

    基于MFC绘制Lagrange插值曲线、Bezier曲线

    Lagrange插值是一种数值分析方法,用于通过已知的一组离散数据点构造一个多项式函数,使得这个多项式在每个数据点处都能准确匹配。在MFC应用中,我们可以通过定义一系列控制点,然后利用Lagrange插值公式计算出各个...

    matlab实现的lagrange插值

    在数值分析领域,拉格朗日插值(Lagrange Interpolation)是一种基本的插值方法,用于通过已知的离散数据点构建一个连续的多项式函数,使得该函数在每个数据点上精确匹配给定的值。在MATLAB中,我们可以利用编程来...

    拉格朗日Lagrange插值法的matlab实现

    拉格朗日Lagrange插值法的matlab实现。给出一批离样点,做出一条通过这些点的光滑曲线,构造一个简单函数来近似。 本篇为Lagrange插值法,构造插值多项式。

    CodeBlock :插值(Lagrange插值和Newton插值)

    在计算机科学和数值分析领域,插值是一种基本的数学技术,用于构建一个多项式函数,该函数通过一组给定的数据点。在这个主题中,我们主要关注两种常见的插值方法:Lagrange插值和Newton插值。这两种方法都是在...

    lagrange插值的数值震荡分析程序

    lagrange插值的数值震荡分析程序。演示效果良好

    matlab中的Lagrange插值法、分段线性插值法,以及利用Matlab进行插值的方法。

    在MATLAB中,插值是一种常见的数值分析方法,用于通过有限的数据点构建一个函数,使得该函数在这些数据点上的值与实际数据相匹配。Lagrange插值法和分段线性插值法是两种常用的插值方法,各有其特点和适用场景。 **...

    数值计算使用Lagrange插值的示例

    拉格朗日插值是一种在数值分析中广泛使用的数学方法,用于通过一组已知的数据点构建一个多项式函数,使得这个函数在每个已知数据点上都与实际的y值相匹配。这种方法对于预测和估算未知数据点的值非常有用,尤其是在...

    Lagrange插值多项式

    实验用例: 已知函数y=f(x)的一张表,要求利用Lagrange插值多项式 求被插值函数f(x)在点x=65处的近似值

    lagrange插值法matlab实现

    拉格朗日插值法(Lagrange Interpolation)是一种在离散数据点上构建多项式函数的方法,常用于数值分析领域。它基于数学中的代数几何思想,通过构造一系列拉格朗日基多项式来形成一个插值多项式,使得这个多项式在每...

    Lagrange插值算法

    Lagrange插值算法属于缺失值补全算法,觉得很有意思,分享给大家,如果觉得我写的不太好可以看这位大佬写的,非常喜欢https://www.jianshu.com/p/2238ef6f3a59

    Lagrange插值多项式MATLAB编程实验报告.pdf

    Lagrange 插值多项式是数值分析中的一种重要方法,用于近似地计算函数值。该实验报告使用 MATLAB 编程语言实现了 Lagrange 插值多项式的编程实验,并对实验结果进行了分析和讨论。 问题描述 在实验中,我们需要...

    数值计算实验插值法(lagrange插值,newton插值)

    数值计算是计算机科学和工程领域中的重要组成部分,它涉及到如何用有限的数据来估算或近似...理解和掌握拉格朗日插值法和牛顿插值法对于任何IT专业人士,尤其是从事数值计算和数据分析工作的人员来说,都是至关重要的。

    Lagrange、Newton、Hermite插值法MATLAB算法比较研究及应用.pdf

    在MATLAB中实现Lagrange插值法的程序中,可以通过定义一个函数Lagrange(X, Y, xi),其中X是插值节点向量,Y是在这些节点上的函数值,而xi是需要进行插值的点。程序首先计算出插值点的数量和插值基函数的值,然后利用...

    《计算方法》课件:Ch4_1 Lagrange插值多项式.ppt

    1. **Lagrange插值多项式**:Lagrange插值是一种常用的方法,它构造一个多項式函数,该函数在给定的n个不同点上与目标函数的值一致。Lagrange插值多项式可以通过Lagrange基函数表示,这些基函数以插值点为参数,每个...

    一种Lagrange插值多项式的线性组合.pdf

    Lagrange插值是数值分析中的一个重要概念,用于通过一组已知的数据点构造一个多项式函数,使得该函数在这些数据点上精确取到相应的值。本文旨在探讨Lagrange插值多项式的一种新的线性组合方法,以期在实际应用中提供...

    插值实验_hermite_hermite插值_lagrange插值_matlab_样条插值_

    在本实验中,我们将探讨三种主要的插值方法:Lagrange插值、Hermite插值以及样条插值,并通过MATLAB这一强大的数学工具进行实现。 首先,Lagrange插值是基于多项式的一种插值方法。它通过构造一组Lagrange基多项式...

    数值分析实验(误差分析,Lagrange插值,高斯消去法解方程组

    1.掌握利用Lagrange插值法及Newton插值法求函数值并编程实现。 2.程序具有一定的通用性,程序运行时先输入节点的个数n,然后输入各节点的值( ),最后输入要求的自变量x的值,输出对应的函数值。 二、实验设备和...

Global site tag (gtag.js) - Google Analytics