因为有课程设计要计算多元一次方程组,所以想编个程序实现,多元一次方程组的计算最系统的方法就是利用克拉默法则求解方程组,所以只需要编写一个类或者方法求出多元一次方程组系数行列式的值和和其他几个行列式,如果系数行列式不等于零则方程组有唯一解,直接做除法运算即可,方法如下:

 function Hanglieshi($arr,$num){
$num--;
for ($k=0; $k < $num; $k++) {
for ($i=$k; $i < $num; $i++) {
$temp=$arr[$i+1][$k];
$arr[$i+1][$k]=0;
for ($j=$k+1; $j <= $num; $j++) {
if($arr[$k][$k]!=0){
$arr[$i+1][$j]=$arr[$i+1][$j]-($temp/$arr[$k][$k])*$arr[$k][$j];
}else{
$arr[$k][$k]=0.00000000000001; //分母为0时控制精度
$arr[$i+1][$j]=$arr[$i+1][$j]-($temp/$arr[$k][$k])*$arr[$k][$j];
}
}
}
}
//计算返回值
$result=1.0;
for ($n=0; $n <= $num; $n++) {
$result*=$arr[$n][$n];
}
return $result;
}

  需要注意的地方是分母为0时因为行列式交换行较为复杂,所以在这里直接赋一个很小的值,接近于0这样求出的结果和真实值几乎没有区别,另外也没想到好的方法,希望那天有大神指出,这个方法有2个参数,就是行列式组成的二维数组和行列式阶数,关于里面的算法部分用了3次循环,可能还会有更优的方法

  另外我总结了一个很简单的方法写循环有个技巧对于像矩阵行列式这样的有规律的变换,如果一下子写不出来可以找个阶数比较低的,比如4阶的将算法按顺序结构直接摆下来,然后根据规律和执行次数依次转化为for循环,把表达式里面的常数经过对比替换成for循环里面的变量,转化多次不要怕麻烦,最后形成一个嵌套的循环这样就是符合一般规律的算法了,这个方法非常简单,对于搞不清楚的变换,最后可以轻易把代码写出来,写出来之后就不要考虑太多了,关键是要有耐心,肯定可以写出来的

  直接调用这个方法,就可以计算多元一次方程了,不过带常数项的数组要和原系数行列式数组变换一下,这个也很简单。

  测试网址:http://www.xingkong001.com/gongju/fangchengzu/

用php计算行列式的更多相关文章

  1. 降阶法计算行列式方法有个地方有Bug(原文也已更正,此为更正后部分)

    今天用此函数做方程求解时发现有误,特此更正: /// <summary> /// 降阶法计算行列式 /// </summary> /// <param name=&quo ...

  2. Java实现 蓝桥杯 算法提高 计算行列式

    试题 算法提高 计算行列式 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 //据说很多人的题目会有一大堆废话,本傻×就不在这里废话了. 给定一个N×N的矩阵A,求|A|. 输入格式 ...

  3. c++算法:计算行列式的值(详细讲解)

    参考了:https://blog.csdn.net/u011885865/article/details/42032229 需要的基础:学过<线性代数>,知道行列式值的求法 基本公式:对于 ...

  4. ADV-292 计算行列式 java

    问题描述 //据说很多人的题目会有一大堆废话,本傻×就不在这里废话了. 给定一个N×N的矩阵A,求|A|. 输入格式 第一行一个正整数N. 接下来N行,每行N个整数,第i行第j个数字表示A[i][j] ...

  5. 【原创】开源Math.NET基础数学类库使用(15)C#计算矩阵行列式

                   本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新  开源Math.NET基础数学类库使用总目录:[目录]开源Math.NET基础数学类库使用总目录 上个月 ...

  6. 行列式计算(C#)

    最近几天学习高等代数老师说要写个程序算行列式的结果,闲来无事就简单写了一下. 不多说了,上代码 using System; using System.Collections.Generic; usin ...

  7. n阶行列式计算----c语言实现(完结)

    花了半天时间,写了这个n阶行列式计算的程序,应该算是比较优美吧,有很多地方多次做了优化,程序占用内存不是很大,要是说小吧,也不合适,因为里边有一个递归,而且递归的深度还比较深.时间复杂度具体没有细看, ...

  8. 开源Math.NET基础数学类库使用(15)C#计算矩阵行列式

    原文:[原创]开源Math.NET基础数学类库使用(15)C#计算矩阵行列式                本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p ...

  9. 方阵行列式并行化计算(OpenMP,MPI),并计算加速比

    00][100].在创建方阵时,方阵的阶数N(N<100)由外部输入.然后用两层"for循环"来给方阵 p左上角 N×N个位置赋值.具体实现如下: /* * 定义矩阵阶数N ...

随机推荐

  1. scanf的一些技巧

    一.scanf和gets 1.不同点: char string[50]; scanf("%s",string); //当遇到回车,空格和tab键会自动在字符串后面添加'\0',但是 ...

  2. BZOJ-1008 越狱 数论快速幂

    1008: [HNOI2008]越狱 Time Limit: 1 Sec Memory Limit: 162 MB Submit: 6192 Solved: 2636 [Submit][Status] ...

  3. 最小圆覆盖(Smallest Enclosing Discs)

    随机增量算法(a randomized incremental algorithm) #define sqr(x) ((x)*(x)) #define EPS 1e-4 struct P{ doubl ...

  4. poj1631Bridging signals(最长单调递增子序列 nlgn)

    Bridging signals Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 12251   Accepted: 6687 ...

  5. 初试visual studio2012的新型数据库LocalDB

    http://www.cnblogs.com/zhangran/archive/2012/08/21/2649200.html 今天在vs2012里面打开以前的mvc3项目,结果弹出警告说在vs201 ...

  6. redis.conf

    redis示例配置文件 分类: redis2013-10-22 16:39 427人阅读 评论(0) 收藏 举报 转载自https://raw.github.com/antirez/redis/2.6 ...

  7. udf提权方法和出现问题汇总

    一.适用条件 1.目标系统是Windows(Win2000,XP,Win2003): 2.你已经拥有MYSQL的某个用户账号,此账号必须有对mysql的insert和delete权限以创建和抛弃函数( ...

  8. QueryHelp

    //辅助查询 Author:高兵兵 public class QueryHelp { #region IList<T> ToList<T>(string cmdText,str ...

  9. JAVA 利用JNI加密class文件/自定义ClassLoader 类

    利用 JNI 对bytecode 加密.不影响java程序员的正常开发.09年的时候写的,现在拿出来晒晒————————————————————————————混淆才是王道,如果混淆再加密就更酷了.. ...

  10. ASP.NET MVC 随想录——开始使用ASP.NET Identity,初级篇(转)

    ASP.NET MVC 随想录——开始使用ASP.NET Identity,初级篇   阅读目录 ASP.NET Identity 前世今生 建立 ASP.NET Identity 使用ASP.NET ...