其实这个程序是早就写好的,只不过一直没有时间写上来.
这两个程序都是通过迭代的方法得到线性方程组的解的方法,一个是高斯-塞德尔迭代法,一个是雅可比迭代法
<?php
class Gs{
private $matrix;
public function __construct($array){
$this->matrix = $array;
}
public function solve(){
$preX = array();
$nowX = array();
$cishu = 17;
$delta = 0.0001;
$matN = count($this->matrix);
for($i = 0;$i<$matN;$i++){
$preX[$i] = 1;
}
$min = 100000000;
for($n = 0;$n<$cishu;$n++){
for($i = 0;$i<$matN;$i++){//xi
$sum1 = 0;
$sum2 = 0;
for($j = 0;$j < $matN;$j++){
if($j < $i) $sum1 += ($this->matrix[$i][$j] * $nowX[$j]);
if($j > $i) $sum2 += ($this->matrix[$i][$j] * $preX[$j]);
}
$nowX[$i] = ($this->matrix[$i][$matN] - $sum1 - $sum2)/$this->matrix[$i][$i];
$tempMin = $nowX[$i] > $preX[$i] ? $nowX[$i]-$preX[$i]:$preX[$i]-$nowX[$i];
if($min > $tempMin) $min = $tempMin;
}
$preX = $nowX;
$str = implode(",",$nowX);
echo ($n+1).":($str)"."<br>";
if($min < $delta) break;
}
}
}
$a = array(
array(5,2,1,-12),
array(-1,4,2,20),
array(12,-3,10,3)
);
$x = new Gs($a);
$x->solve();
?>
接下来的是雅可比方法,
<?php
class Yacobi{
private $matrix;
public function __construct($array){
$this->matrix = $array;
}
public function solve(){
$preX = array();
$nowX = array();
$cishu = 17;
$matN = count($this->matrix);
for($i = 0;$i<$matN;$i++){
$preX[$i] = 1;
}
for($n = 0;$n<$cishu;$n++){
for($i = 0;$i<$matN;$i++){//xi
$sum = 0;
for($j = 0;$j < $matN;$j++){
if($j != $i) $sum += ($this->matrix[$i][$j] * $preX[$j]);
}
$nowX[$i] = ($this->matrix[$i][$matN] - $sum)/$this->matrix[$i][$i];
}
$preX = $nowX;
$str = implode(",",$nowX);
echo ($n+1).":($str)"."<br>";
}
}
}
$a = array(
array(5,2,1,-12),
array(-1,4,2,20),
array(12,-3,10,3)
);
$x = new Yacobi($a);
$x->solve();
?>
分享到:
相关推荐
《数值分析实验报告——解线性方程组的直接方法》 线性方程组是数学中的基础问题,广泛应用于工程、物理、经济等领域。...这对于深化理解数值分析中的线性方程组解法具有重要意义,也为实际问题的求解提供了有力工具。
二、非线性方程组数值解法应用实训 实验 7:非线性方程(组)数值解法的应用实训 实验目的:理解非线性方程求根的过程和算法,学习用计算机求根的一些科学计算方法和简单的编程技术。 实验内容: 1. 程序设计...
数值计算方法是信息与计算科学领域的重要分支,主要研究如何...通过大量的练习和实际案例分析,方能对这些数值方法的优缺点有更加深刻的认识,进而在面对具体的非线性方程问题时,能够灵活选择和应用合适的数值解法。
在数值分析领域,非线性方程组是一个重要的研究对象,它广泛存在于各种科学和工程问题中,如物理、化学、经济学、工程计算等。非线性方程组的求解是解决这些问题的关键步骤,而Java作为一种通用的编程语言,为实现...
数值计算实验报告之线性方程组直接解法 数值计算实验报告的主要目的是学习线性方程组的直接解法,并了解科学计算的方法和简单的编程技术。在本实验中,我们将学习三种不同的方法来解线性方程组:Doolittle 分解法、...
解线性方程组可以通过解两个下三角方程组实现。 4. **改进平方根法** 适用于对称矩阵,通过L-D-L^T分解,其中D是对角矩阵,L是单位下三角矩阵。这种方法能有效计算L和D,进而求解线性方程组。 5. **追赶法** 是...
数值分析mathematic 实现 实验1 非线性方程和方程组解法
总结来说,这个数值计算实验通过具体实例让学生深入理解线性方程组的直接解法,培养了他们的编程能力和科学计算思维。同时,通过使用Mathematica这样的工具,学生能够直观地看到算法的执行过程,有助于深化理论知识...
本次实验的主题是“数值分析实验之求解线性方程组实现”,主要关注如何使用编程语言(这里是Java)来解决这类问题。线性方程组通常表示为Ax = b的形式,其中A是一个系数矩阵,x是未知数向量,而b是常数项向量。解决...
本篇文章将深入探讨线性方程组的解法及其在MATLAB中的实现。 线性方程组通常表示为AX=b的形式,其中A是一个矩阵,X是未知数向量,b是常数向量。解决这类问题的关键在于理解方程组的解的存在性和唯一性。对于非齐次...
在数值分析中,由于某些线性方程组的规模过大,直接使用高斯消元法或其他直接解法可能非常耗时,这时迭代解法成为了一种有效选择。 迭代法的基本思想是利用方程组的结构,构造一个迭代公式,从一个初始猜测值开始,...
这是数值分析的一些作业实验,文件中有详细的文档对理论,实验和算法的说明,用于病态方程组求解的源代码
实验目的主要是通过MATLAB实现线性方程组的数值解法,理解直接法和迭代法的基本思想和步骤,同时通过编程实践提高对数值计算的理解和应用能力。实验中提供的各种函数示例,有助于学生深入理解高斯消去法的不同变体...
### 数值计算实验10:非线性方程组的解法 #### 实验背景与目标 本实验属于数值计算领域中的一个重要组成部分,主要聚焦于非线性方程组的求解方法。实验旨在帮助学生深入理解并掌握两种基本的数值求解技术:二分法...
### 数值分析求解线性方程组的迭代法实验报告知识点详解 #### 实验名称与目的概述 本次实验名为“求解线性方程组的迭代法”,旨在通过编程实现三种不同的迭代方法来求解线性方程组,并通过实际操作比较这三种方法...
"数值分析线性方程组迭代解法" 数值分析线性方程组迭代解法是数值分析中的一种重要方法,用于解决线性方程组的问题。在这篇文章中,我们将讨论线性方程组的迭代解法,包括 Jacobi 迭代法、Gauss-Seidel 迭代法、...
在数值分析领域,解线性方程组是基础且重要的任务。线性方程组的一般形式为 \( \sum_{j=1}^{n} a_{ij}x_j = b_i \),其中 \( A \) 是一个 \( n \times n \) 矩阵,\( x \) 和 \( b \) 分别是 \( n \) 维列向量。如果...
非线性方程与方程组的数值解法是计算方法中一个非常重要的章节,本章节主要介绍非线性方程和方程组的数值解法,包括非线性方程的概念、非线性方程的分类、求根步骤、非线性方程的数值解法、牛顿法、弦截法与抛物线法...
在现代科学研究与工程实践中,数值分析扮演着不可或缺的角色,而线性方程组的求解方法则是数值分析中的核心内容之一。线性方程组指的是由若干个线性方程构成的集合,这些方程的未知数之间的关系遵循线性原则。此类...
华北电力大学数值分析资料和实践,文件里面有数值计算实践代码和python3相应实现 1. 实践1:数值计算的基本概念 2. 实践2:非线性方程求根 3. 实践3:插值与拟合 4. 实践4:数值积分 5. 实践5:常微分方程...