作业帮 > 综合 > 作业

pascal的快速幂的矩阵乘法,求详解和具体实现.

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/21 08:17:15
pascal的快速幂的矩阵乘法,求详解和具体实现.
给你写个框架吧,快速幂就是二分递归
function quick(var x:array[1..2,1..2] of integer); 根据你自己的矩阵大小改变
var y:array[1..2,1..2]of integer;
begin
if n=1 then exit(a); a为原基础矩阵.
y:=quick(n div 2);
if n mod 2=0 then exit(jucheng(y,y)) jucheng就是矩乘的函数
else exit(jucheng(jucheng(y,y),a));
end;
再问: 那里的x:array形参在哪里用到了?
再答: 哎呀。。。不好意思,写错了,形参是n:integer 表示指数 function quick(var n:integer):array[1..2,1..2] of integer; 根据你自己的矩阵大小改变 var y:array[1..2,1..2]of integer; begin if n=1 then exit(a); a为原基础矩阵。 y:=quick(n div 2); if n mod 2=0 then exit(jucheng(y,y)) jucheng就是矩乘的函数 else exit(jucheng(jucheng(y,y),a)); end;
再问: 麻烦你把矩阵乘法的函数也写一下吧,谢谢了……一定给你分。
再答: 我就默认是两个一样的矩阵啦,变量定义什么的就不写啦。好久没写pascal了,有点小错的话请多包涵 a:array[1..2,1..2] of integer; //要自乘的矩阵 for i:=1 to 2 do //这个问题里肯定是长宽相等的,所以你就改边长就行。 for j:=1 to 2 do for k:=1 to 2 do b[i,j]:=b[i,j]+a[i,k]*a[k,j]; exit(b); b矩阵就等于a矩阵的平方