📄 matrix.html
字号:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>matrix</title>
<script>
//创建空表格供输入矩阵
function creatTable(tableID)
{
document.getElementById("rows").disabled="disabled";
var rows=document.getElementById("rows").value;//行数
// 创建一个<table>元素和一个<tbody>元素
mytable = document.getElementById(tableID);
var oldrows=mytable.rows.length;
//删除原有的表格内容
for(var k=oldrows-1;k>=0;k--)
{
mytable.deleteRow(k);
}
mytablebody = document.createElement("tbody");
//创建所有的单元格
for(var i = 0; i < rows; i++)
{
// 创建一个<tr>元素
mycurrent_row = document.createElement("tr");
for(var j = 0; j < rows; j++)
{
// 创建一个<td>元素
mycurrent_cell = document.createElement("td");
mycurrent_cell.setAttribute("width",100);
//创建输入域
if(tableID=="resultTable")
{
mycurrent_cell.innerHTML='<input type="text" id="result'+i+j+'"width="100" />';
}
else
{
mycurrent_cell.innerHTML='<input type="text" id="cell'+i+j+'"width="100" />';
}
// 将列<td>添加到行<tr>
mycurrent_row.appendChild(mycurrent_cell);
}
// 将行<tr>添加到<tbody>
mytablebody.appendChild(mycurrent_row);
}
// 将<tbody>添加到<table>
mytable.appendChild(mytablebody);
// 将表格mytable的border属性设置为2
mytable.setAttribute("border", "1");
}
//该函数新建结果表格,并计算逆矩阵
function reverseMatrix()
{
//新建结果表格
creatTable("resultTable");
var rows=document.getElementById("rows").value;//行数
//读取矩阵
var matrix=new Array(rows);//矩阵的行元素
for(var i=0;i<rows;i++)
{
matrix[i]=new Array(rows*2);//矩阵的列元素,后一半存放矩阵的逆
for(var j=0;j<rows;j++)
{
var cell_id="cell"+i+j;
matrix[i][j]=document.getElementById(cell_id).value;
}
}
//add the identity array at the end
for(var i=0;i<rows;i++)
{
for(var j=rows;j<rows*2;j++)
{
if((j-i)==rows){matrix[i][j]=1;}
else{matrix[i][j]=0;}
}
}
//求逆过程
for(var k=0;k<rows;k++)
{
if(matrix[k][k]!=1)
{
var bs=matrix[k][k];
matrix[k][k]=1;
for(var m=k+1;m<rows*2;m++)
{
matrix[k][m]=matrix[k][m]/bs;
}
}
for(var q=0;q<rows;q++)
{
if(q!=k)
{
var bs=matrix[q][k];
for(var p=0;p<rows*2;p++)
{
matrix[q][p]=matrix[q][p]-bs*matrix[k][p];
}
}
else
{continue;}
}
}
//写入结果表格
for(var x=0;x<rows;x++)
{
var k=0;
for(var y=rows;y<rows*2;y++)
{
var result_id="result"+x+k;
k++;
document.getElementById(result_id).value=matrix[x][y];
}
}
}
</script>
</head>
<body>
<table height=600 align="center">
<tr height="30">
<td colspan="2"><font size="2" color="#66CCFF">建议使用IE内核浏览器</font></td>
</tr>
<tr height="12"><td colspan="2"></td></tr>
<tr><td width="40"></td>
<td>
<font color="#0000CC" face="华文楷体">
<form id="myform" name="myform">
1.请输入方阵的阶:<input type="text" name="rows" id="rows" />
<input type="button" name="ok" id="ok" value="确定" onclick="javascript:creatTable('originalTable')" /></br></br>
2.请输入原矩阵:</br>
<table id="originalTable">
</table></br>
3.<input type="button" name="ok" id="ok" value="求逆" onclick="javascript:reverseMatrix()" /></br></br>
结果如下:</br>
<table id="resultTable">
</table></br>
<input type="button" name="reset" id="reset" onclick="javascript:document.location.reload();
" value="重置"/></br>
</form>
</font>
</td>
</tr>
<tr><td valign="bottom" colspan="2">copyright@A1021 TEL:(86)10-82316477-802</td>
</tr>
</table>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -