[問題]矩陣的次方問題

作者: 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