化上三角解行列式
时间:2007-01-11
来源:互联网
代码仍需要修改,修改好后这一行去掉
突然想起来有个程序要编,就这个
这几天忙着考试,连我的资源管理器也放了
现在把这个简单的程序编写流程写下
首先分析
找到了哈?
第07行
$a[$j][$k]=($a[$j][$k]*$a[$i-1][$i-1]-$a[$i-1][$k]*$a[$j][$i-1])/$a[$i-1][$i-1];
红色部分是不对的,它应该是for($k=$i-1;$k<3;$k++)未开始循环$a[$j][$i-1]的值,所以改了过后的程序如下
[ 本帖最后由 muqiao 于 2007-1-10 21:18 编辑 ]
突然想起来有个程序要编,就这个
这几天忙着考试,连我的资源管理器也放了
现在把这个简单的程序编写流程写下
首先分析
复制PHP内容到剪贴板
$a[1][0] = 1;$a[1][1] = 2;$a[1][2] = 4;
$a[2][0] = 1;$a[2][1] = 3;$a[2][2] = 9;
$i=1;
$j=1,k=0;
$a[1][0]=($a[1][0]*$a[0][0]-$a[0][0]*$a[1][0])/$a[0][0];
$j=1,k=1;
$a[1][1]=($a[1][1]*$a[0][0]-$a[0][1]*$a[1][0])/$a[0][0];
$j=1,k=2;
$a[1][2]=($a[1][2]*$a[0][0]-$a[0][2]*$a[1][0])/$a[0][0];
$j=2,k=0;
$a[2][0]=($a[2][0]*$a[0][0]-$a[0][0]*$a[2][0])/$a[0][0];
$j=2,k=1;
$a[2][1]=($a[2][1]*$a[0][0]-$a[0][1]*$a[2][0])/$a[0][0];
$j=2,k=2;
$a[2][2]=($a[2][2]*$a[0][0]-$a[0][2]*$a[2][0])/$a[0][0];
$i=2;
$j=2;$k=1;
$a[2][1]=($a[2][1]*$a[1][1]-$a[1][1]*$a[2][1])/$a[1][1];
$j=2;$k=2;
$a[2][2]=($a[2][2]*$a[1][1]-$a[1][2]*$a[2][1])/$a[1][1];
然后得到
PHP代码:
$a[0][0] = 1;$a[0][1] = 1;$a[0][2] = 1;$a[1][0] = 1;$a[1][1] = 2;$a[1][2] = 4;
$a[2][0] = 1;$a[2][1] = 3;$a[2][2] = 9;
$i=1;
$j=1,k=0;
$a[1][0]=($a[1][0]*$a[0][0]-$a[0][0]*$a[1][0])/$a[0][0];
$j=1,k=1;
$a[1][1]=($a[1][1]*$a[0][0]-$a[0][1]*$a[1][0])/$a[0][0];
$j=1,k=2;
$a[1][2]=($a[1][2]*$a[0][0]-$a[0][2]*$a[1][0])/$a[0][0];
$j=2,k=0;
$a[2][0]=($a[2][0]*$a[0][0]-$a[0][0]*$a[2][0])/$a[0][0];
$j=2,k=1;
$a[2][1]=($a[2][1]*$a[0][0]-$a[0][1]*$a[2][0])/$a[0][0];
$j=2,k=2;
$a[2][2]=($a[2][2]*$a[0][0]-$a[0][2]*$a[2][0])/$a[0][0];
$i=2;
$j=2;$k=1;
$a[2][1]=($a[2][1]*$a[1][1]-$a[1][1]*$a[2][1])/$a[1][1];
$j=2;$k=2;
$a[2][2]=($a[2][2]*$a[1][1]-$a[1][2]*$a[2][1])/$a[1][1];
复制PHP内容到剪贴板
/*02*/$a[1][0] = 1;$a[1][1] = 2;$a[1][2] = 4;
/*03*/$a[2][0] = 1;$a[2][1] = 3;$a[2][2] = 9;
/*04*/for($i=1;$i<3;$i++){
/*05*/ for($j=$i;$j<3;$j++){
/*06*/ for($k=$i-1;$k<3;$k++){
/*07*/ $a[$j][$k]=($a[$j][$k]*$a[$i-1][$i-1]-$a[$i-1][$k]*$a[$j][$i-1])/$a[$i-1][$i-1];
/*08*/ }
/*09*/ }
/*10*/}
/*12*/for($i=0;$i<3;$i++){
/*13*/ for($j=0;$j<3;$j++){
/*14*/ echo $a[$i][$j]." ";
/*15*/ }
/*16*/ echo "<br>";
/*17*/}
运行一下不对,问题出现在哪?赶紧找PHP代码:
/*01*/$a[0][0] = 1;$a[0][1] = 1;$a[0][2] = 1;/*02*/$a[1][0] = 1;$a[1][1] = 2;$a[1][2] = 4;
/*03*/$a[2][0] = 1;$a[2][1] = 3;$a[2][2] = 9;
/*04*/for($i=1;$i<3;$i++){
/*05*/ for($j=$i;$j<3;$j++){
/*06*/ for($k=$i-1;$k<3;$k++){
/*07*/ $a[$j][$k]=($a[$j][$k]*$a[$i-1][$i-1]-$a[$i-1][$k]*$a[$j][$i-1])/$a[$i-1][$i-1];
/*08*/ }
/*09*/ }
/*10*/}
/*12*/for($i=0;$i<3;$i++){
/*13*/ for($j=0;$j<3;$j++){
/*14*/ echo $a[$i][$j]." ";
/*15*/ }
/*16*/ echo "<br>";
/*17*/}
找到了哈?
第07行
$a[$j][$k]=($a[$j][$k]*$a[$i-1][$i-1]-$a[$i-1][$k]*$a[$j][$i-1])/$a[$i-1][$i-1];
红色部分是不对的,它应该是for($k=$i-1;$k<3;$k++)未开始循环$a[$j][$i-1]的值,所以改了过后的程序如下
复制PHP内容到剪贴板
<?php
$a[0][0] = 1;$a[0][1] = 1;$a[0][2] = 1;
$a[1][0] = 1;$a[1][1] = 2;$a[1][2] = 4;
$a[2][0] = 1;$a[2][1] = 3;$a[2][2] = 9;
for($i=1;$i<3;$i++){
for($j=$i;$j<3;$j++){
$rem = $a[$j][$i-1];
for($k=$i-1;$k<3;$k++){
$a[$j][$k]=($a[$j][$k]*$a[$i-1][$i-1]-$a[$i-1][$k]*$rem)/$a[$i-1][$i-1];
}
}
}
for($i=0;$i<3;$i++){
for($j=0;$j<3;$j++){
echo $a[$i][$j]." ";
}
echo "<br>";
}
?>
后面就是添枝加叶的问题了,核心代码已完成PHP代码:
<?php
$a[0][0] = 1;$a[0][1] = 1;$a[0][2] = 1;
$a[1][0] = 1;$a[1][1] = 2;$a[1][2] = 4;
$a[2][0] = 1;$a[2][1] = 3;$a[2][2] = 9;
for($i=1;$i<3;$i++){
for($j=$i;$j<3;$j++){
$rem = $a[$j][$i-1];
for($k=$i-1;$k<3;$k++){
$a[$j][$k]=($a[$j][$k]*$a[$i-1][$i-1]-$a[$i-1][$k]*$rem)/$a[$i-1][$i-1];
}
}
}
for($i=0;$i<3;$i++){
for($j=0;$j<3;$j++){
echo $a[$i][$j]." ";
}
echo "<br>";
}
?>
[ 本帖最后由 muqiao 于 2007-1-10 21:18 编辑 ]
作者: muqiao 发布时间: 2007-01-10
恩,不错啊,
作者: popoo 发布时间: 2007-01-10
收了先:P :P
作者: popoo 发布时间: 2007-01-10
完整的程序如下
复制PHP内容到剪贴板
<?php
function calculate($a,$rank){
for($i=1;$i<$rank;$i++){
for($j=$i;$j<$rank;$j++){
$rem = $a[$j][$i-1];
for($k=$i-1;$k<$rank;$k++){
$a[$j][$k]=($a[$j][$k]*$a[$i-1][$i-1]-$a[$i-1][$k]*$rem)/$a[$i-1][$i-1];
}
}
}
$result= 1;
for($n=0;$n<$rank;$n++){
$result*=$a[$n][$n];
}
return $result;
}
/*
$a[0][0] = 1;$a[0][1] = 1;$a[0][2] = 1;
$a[1][0] = 1;$a[1][1] = 2;$a[1][2] = 4;
$a[2][0] = 1;$a[2][1] = 3;$a[2][2] = 9;
*/
if($_POST['rows_cols']){
$n = $_POST['rows_cols'];
if($n>=10&&$n<=35){
echo "<center>计算大于等于10阶的行列式较慢</center>";
}elseif($n > 35){
echo "<center>难道你跟电脑过不去,还是在考验PHP?</center>";
exit;
}
echo "<center><form action={$_SERVER['PHP_SELF']} method=\"post\">";
for($i=0;$i < $n;$i++){
for($j=0;$j < $n;$j++){
echo "<input name=\"determinant[]\" size=\"2\" value=0>";
}
echo "<br>";
}
echo "<input type=\"hidden\" name=\"rank\" value=\"{$n}\"><input type=\"submit\" name=\"calculation\" value=\"计算\"></form></center>";
} elseif($_POST['calculation']) {
set_time_limit(0);
$begin = explode(' ', microtime());
$i=0;
$j=0;
$postarray = $_POST['determinant'];
foreach($postarray as $value){
$array[$i][$j] = $value;
if($j+1==$_POST['rank']) {
$i++;
$j = 0;
}else{
$j++;
}
}
$rs = calculate($array,$_POST['rank']);
echo "<center><font color=red size=5>".$rs."</font></center>";
$end = explode(' ', microtime());
$time = ($end[0]+$end[1]) - ($begin[0]+$begin[1]);
echo '<br>';
echo "执行时间:{$time}秒";
} else {
echo "<center>计算";
echo "<form action={$_SERVER['PHP_SELF']} method=\"post\"><input name=\"rows_cols\" value=1><input type=\"submit\" value=\"设 定\"></form>";
echo "阶行列式</center>";
}
?>
PHP代码:
<?php
function calculate($a,$rank){
for($i=1;$i<$rank;$i++){
for($j=$i;$j<$rank;$j++){
$rem = $a[$j][$i-1];
for($k=$i-1;$k<$rank;$k++){
$a[$j][$k]=($a[$j][$k]*$a[$i-1][$i-1]-$a[$i-1][$k]*$rem)/$a[$i-1][$i-1];
}
}
}
$result= 1;
for($n=0;$n<$rank;$n++){
$result*=$a[$n][$n];
}
return $result;
}
/*
$a[0][0] = 1;$a[0][1] = 1;$a[0][2] = 1;
$a[1][0] = 1;$a[1][1] = 2;$a[1][2] = 4;
$a[2][0] = 1;$a[2][1] = 3;$a[2][2] = 9;
*/
if($_POST['rows_cols']){
$n = $_POST['rows_cols'];
if($n>=10&&$n<=35){
echo "<center>计算大于等于10阶的行列式较慢</center>";
}elseif($n > 35){
echo "<center>难道你跟电脑过不去,还是在考验PHP?</center>";
exit;
}
echo "<center><form action={$_SERVER['PHP_SELF']} method=\"post\">";
for($i=0;$i < $n;$i++){
for($j=0;$j < $n;$j++){
echo "<input name=\"determinant[]\" size=\"2\" value=0>";
}
echo "<br>";
}
echo "<input type=\"hidden\" name=\"rank\" value=\"{$n}\"><input type=\"submit\" name=\"calculation\" value=\"计算\"></form></center>";
} elseif($_POST['calculation']) {
set_time_limit(0);
$begin = explode(' ', microtime());
$i=0;
$j=0;
$postarray = $_POST['determinant'];
foreach($postarray as $value){
$array[$i][$j] = $value;
if($j+1==$_POST['rank']) {
$i++;
$j = 0;
}else{
$j++;
}
}
$rs = calculate($array,$_POST['rank']);
echo "<center><font color=red size=5>".$rs."</font></center>";
$end = explode(' ', microtime());
$time = ($end[0]+$end[1]) - ($begin[0]+$begin[1]);
echo '<br>';
echo "执行时间:{$time}秒";
} else {
echo "<center>计算";
echo "<form action={$_SERVER['PHP_SELF']} method=\"post\"><input name=\"rows_cols\" value=1><input type=\"submit\" value=\"设 定\"></form>";
echo "阶行列式</center>";
}
?>
作者: muqiao 发布时间: 2007-01-10
还有错,不知道你们发现没有
我要改改
我要改改
作者: muqiao 发布时间: 2007-01-10
先学习一下。
muqiao 辛苦了
:)
muqiao 辛苦了
:)
作者: jefsun 发布时间: 2007-01-10
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28