[问题]矩阵的次方问题

楼主: ljuyentintho (小刘)   2014-10-26 20:40:01
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
Dev-C++
问题(Question):
目前的程式是执行矩阵平方的结果
我希望算出这个矩阵的n次方(假设n是1000)
请问我该怎么设定呢?
另外目前矩阵只能输入整数
有办法改成输入小数吗?
程式码(Code):(请善用置底文网页, 记得排版)
#include<stdio.h>
#include<conio.h>
int main()
{
int a[10][10],mult[10][10],r1,c1,i,j,k;
printf("请输入矩阵的rows跟columns:");
scanf("%d%d",&r1,&c1);
//储存矩阵的元素
printf("\n输入第一个矩阵的elements:\n");
for(i=0;i<r1;++i)
for(j=0;j<c1;++j)
{
printf("Enter elements a%d%d:",i+1,j+1);
scanf("%d",&a[i][j]);
}
//初始化最终的matrix
for(i=0;i<r1;++i)
for(j=0;j<c1;++j)
{
mult[i][j]=0;
}
//矩阵相乘
for(i=0;i<r1;++i)
for(j=0;j<c1;++j)
for(k=0;k<c1;++k)
{
mult[i][j]+=(a[i][k]*a[k][j]);
}
//OUTPUT矩阵
printf("\n矩阵输出:\n");
for(i=0;i<r1;++i)
for(j=0;j<c1;++j)
{
printf("%d",mult[i][j]);
if(j==c1-1)
printf("\n\n");
}
getch();
}
以上
谢谢各位好心的大大
作者: jacky1989   2014-10-26 20:51:00
我只知道没排版的程式没有看的必要
楼主: ljuyentintho (小刘)   2014-10-26 21:05:00
sorry 不懂版规
作者: jacky1989   2014-10-26 22:03:00
这不只是板规,给任何人看程式码排版是基本要求所以快改吧!!
作者: jammy50605 (小刀)   2014-10-26 23:06:00
有一种type叫做float要N次方就 mult[i][j]+=(mult[i][k]*a[k][j]) ;在自己加一个跑n次的循环就行了
楼主: ljuyentintho (小刘)   2014-10-27 00:50:00
你是说程式里的int改成float然后main前面改成void吗
作者: jammy50605 (小刀)   2014-10-27 01:02:00
宣告阵列改成float a[][] main前面那个叫做回传值型态跟你要的无关还有输出的地方要改成%f或%.2f代表输出到小数点后两位
作者: wope (独立黑色色彩)   2014-10-27 05:06:00
用scanf输入矩阵 不小心输入错不就重新执行1000次100000次都一样 自己查eigenvector及eigenvalue另外,不知维度矩阵宣告要用动态小数点就用double 或float 宣告你的变量a如果速度不够快 后面矩阵要转置这样走下来一个月就不见了
作者: longlongint (华哥尔)   2014-10-28 19:36:00
建议原po改用matlab
作者: dirkc (3781615)   2014-10-29 12:14:00
scanf是stdin,用导向可以把输入放在档案里;另外是否用heap好像也没有定论,通常是看需求囉我只知道有个版规是语气请和缓 :)

Links booklink

Contact Us: admin [ a t ] ucptt.com