在学数值分析,试着用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();
?>
分享到:
相关推荐
Lagrange插值是一种在离散数据点上构造连续函数的方法,它在数值分析和计算数学中具有广泛应用。本文将详细介绍如何使用C++编程语言,结合Microsoft Foundation Classes (MFC) 框架,在Visual Studio 2008环境下实现...
【Lagrange插值多项式】是数值分析中的一个核心概念,主要用于近似未知函数的值。该方法基于多项式函数,通过选取一系列离散点(称为插值节点),构造一个多项式,使得该多项式在每个节点上的值与原函数相同。La...
Lagrange插值PPT课件.pptx 本资源是一个关于Lagrange插值的PPT课件,总共30页,涵盖了插值问题、代数插值、Lagrange插值...* 优点:Lagrange插值可以避免复杂的计算和病态方程组,可以快速地估计出其它深度处的水温。
Lagrange插值是一种数值分析方法,用于通过已知的一组离散数据点构造一个多项式函数,使得这个多项式在每个数据点处都能准确匹配。在MFC应用中,我们可以通过定义一系列控制点,然后利用Lagrange插值公式计算出各个...
在数值分析领域,拉格朗日插值(Lagrange Interpolation)是一种基本的插值方法,用于通过已知的离散数据点构建一个连续的多项式函数,使得该函数在每个数据点上精确匹配给定的值。在MATLAB中,我们可以利用编程来...
拉格朗日Lagrange插值法的matlab实现。给出一批离样点,做出一条通过这些点的光滑曲线,构造一个简单函数来近似。 本篇为Lagrange插值法,构造插值多项式。
在计算机科学和数值分析领域,插值是一种基本的数学技术,用于构建一个多项式函数,该函数通过一组给定的数据点。在这个主题中,我们主要关注两种常见的插值方法:Lagrange插值和Newton插值。这两种方法都是在...
lagrange插值的数值震荡分析程序。演示效果良好
在MATLAB中,插值是一种常见的数值分析方法,用于通过有限的数据点构建一个函数,使得该函数在这些数据点上的值与实际数据相匹配。Lagrange插值法和分段线性插值法是两种常用的插值方法,各有其特点和适用场景。 **...
拉格朗日插值是一种在数值分析中广泛使用的数学方法,用于通过一组已知的数据点构建一个多项式函数,使得这个函数在每个已知数据点上都与实际的y值相匹配。这种方法对于预测和估算未知数据点的值非常有用,尤其是在...
实验用例: 已知函数y=f(x)的一张表,要求利用Lagrange插值多项式 求被插值函数f(x)在点x=65处的近似值
拉格朗日插值法(Lagrange Interpolation)是一种在离散数据点上构建多项式函数的方法,常用于数值分析领域。它基于数学中的代数几何思想,通过构造一系列拉格朗日基多项式来形成一个插值多项式,使得这个多项式在每...
Lagrange插值算法属于缺失值补全算法,觉得很有意思,分享给大家,如果觉得我写的不太好可以看这位大佬写的,非常喜欢https://www.jianshu.com/p/2238ef6f3a59
Lagrange 插值多项式是数值分析中的一种重要方法,用于近似地计算函数值。该实验报告使用 MATLAB 编程语言实现了 Lagrange 插值多项式的编程实验,并对实验结果进行了分析和讨论。 问题描述 在实验中,我们需要...
数值计算是计算机科学和工程领域中的重要组成部分,它涉及到如何用有限的数据来估算或近似...理解和掌握拉格朗日插值法和牛顿插值法对于任何IT专业人士,尤其是从事数值计算和数据分析工作的人员来说,都是至关重要的。
在MATLAB中实现Lagrange插值法的程序中,可以通过定义一个函数Lagrange(X, Y, xi),其中X是插值节点向量,Y是在这些节点上的函数值,而xi是需要进行插值的点。程序首先计算出插值点的数量和插值基函数的值,然后利用...
1. **Lagrange插值多项式**:Lagrange插值是一种常用的方法,它构造一个多項式函数,该函数在给定的n个不同点上与目标函数的值一致。Lagrange插值多项式可以通过Lagrange基函数表示,这些基函数以插值点为参数,每个...
Lagrange插值是数值分析中的一个重要概念,用于通过一组已知的数据点构造一个多项式函数,使得该函数在这些数据点上精确取到相应的值。本文旨在探讨Lagrange插值多项式的一种新的线性组合方法,以期在实际应用中提供...
在本实验中,我们将探讨三种主要的插值方法:Lagrange插值、Hermite插值以及样条插值,并通过MATLAB这一强大的数学工具进行实现。 首先,Lagrange插值是基于多项式的一种插值方法。它通过构造一组Lagrange基多项式...
1.掌握利用Lagrange插值法及Newton插值法求函数值并编程实现。 2.程序具有一定的通用性,程序运行时先输入节点的个数n,然后输入各节点的值( ),最后输入要求的自变量x的值,输出对应的函数值。 二、实验设备和...