编程示例: 矩阵的多项式计算以javascript语言为例
国防工业出版社的《矩阵理论》一书中第一章第8个习题
试计算2*A^8-3*A^5+A^4+A^2-4I
A=[[1,0,2],[0,-1,1],[0,1,0]]
代码如下
<html>
<head>
<title>
矩阵乘法
</title>
<script src='set.js' ></script>
<script src='list.js' ></script>
<meta charset="utf-8">
</head>
<body >
<p>
计算斐波那契数列,输入第N项</p>
<textarea id='txt1' rows="4" cols="80"></textarea>
<p>输出结果值</p>
<textarea id='txt2' rows="14" cols="80"></textarea>
<input type=button οnclick="test()" value="计算"></input>
<script>
function test()
{
//var a=[[0.257, 0.504, 0.098],[-0.148, -0.291, 0.439],[0.439, -0.368, -0.071]];
//var b=[[16],[128],[128]];
var mat=[[1,0,2],[0,-1,1],[0,1,0]];
var identi=IdentityMatrix(3);//[[1,0,0],[0,1,0],[0,0,1]];
var coff=[-4,0,1,0,1,-3,0,0,2];
var txt1=document.getElementById("txt1");
var txt2=document.getElementById("txt2");
//var m=[1,0];
mm=poly_matrix(coff,mat,identi);//Matrix_Mul(mat,mat);
//mm=Matrix_Add(mm,b);
txt1.innerText=identi;//Matrix_Mul_By_Num(mat,3);//poly(coff,10);
txt2.innerText=list(mm,function(a){return a;});
}
/*function poly(coff,x)
{
var result=coff[coff.length-1];
for (var i=coff.length-2;i>=0;i--)
{
result=x*result+coff[i];
}
return result;
}
*/
function Matrix_Mul_By_Num(mat,num)
{
return Matrix_One_operator(mat,function(a){return a*num;});
}
function poly_matrix(coff,x,identi)
{
var result=Matrix_Mul_By_Num(identi,coff[coff.length-1]);
for (var i=coff.length-2;i>=0;i--)
{
result=Matrix_Add(Matrix_Mul(x,result),Matrix_Mul_By_Num(identi,coff[i]));
}
return result;
}
</script>
</body>
</html>
输出结果值
[[-3,48,-26],[0,95,-61],[0,-61,34]]
这是正确的答案
代码调用了函数库中的如下函数:
Matrix_Add 矩阵加法
Matrix_Mul 矩阵乘法
Matrix_Mul_By_Num 矩阵数乘