導航:首頁 > 編程語言 > 試編程求出一給定矩陣

試編程求出一給定矩陣

發布時間:2023-03-21 05:04:49

⑴ 給出一個矩陣(二維數組),通過編程計算一下矩陣上三角元素的和,要求元素的值由鍵盤輸入。

代碼如下:

#include<stdio.h>

int main() {

int i, j;

int max, row, colum;

int a[3][4] = { { 1, 2, 3, 4 }, { 9, 8, 7, 6 }, { -10, 10, -5, 2 } };

max = a[0][0];

for (i = 0; i < 3; i++)

for (j = 0; j < 4; j++)

if (max < a[i][j]) {

max = a[i][j];

row = i;

colum = j;

}

printf("max=%d row=%d colum=%d ", max, row, colum);

return 0;

}

(1)試編程求出一給定矩陣擴展閱讀

矩陣的分解:

1、LU分解(A = LU)

U是高斯消元結果,可視為對A左乘P進行行變換,PA = U,有A = P-1U,則行變換矩陣的逆即為L。L對角線上為1。

2、QR分解(A = QR)

Q是A正交化的結果,是A列空間的標准正交基,因為Q是以第一列為初始方向向量,對其他列向量進行變換,故R的第一列只有第一個元素有值,則R是上三角矩陣。a1 = R11 * q1,R11是一個數。

3、特徵值分解(A = SS-1)

S為特徵向量組成的矩陣,是特徵值組成的對角陣。前提條件:S可逆要求所有特徵向量線性無關。

若A為正定陣(光對稱不行,因為奇異值是非負的),則S為正交陣,此時A = SST,正好可看作奇異值分解,正交陣乘非負特徵值陣乘正交陣。




⑵ C語言,有一個5*5的整型矩陣,試編程求出其對角線之和,並輸出該矩陣中最小元素的值

這鍵空個比較簡單,可以實現,代碼如下:

#include<stdio.h>

#include <stdlib.h>

#include <time.h>


void main()

{

int Arr[5][5] = {{0}};

srand(time(NULL));

for (int i = 0;i < 5;i++)

{

for (int j = 0;j< 5;j++)

{

Arr[i][j] = rand() % 100; // 生成隨機5x5矩陣

}

}

printf("Array[%d][%d] is: ", 5, 5);

for (int i = 0; i < 5; i++)

{

for (int j = 0; j < 5; j++)

{

printf("%d ", Arr[i][j]); // 輸出矩陣

}

printf(" ");

}


//求對角線之和

int sum = 0;

for (int i = 0;i < 5;i++)

{

sum += Arr[i][i];

}

printf("對角線元素之和:%d ",sum);


//求最小值

int m = Arr[1][1];

for (int i = 0; i < 5; i++)

{

for (int j = 0; j < 5; j++)

{

if (Arr[i][j] < m)

m = Arr[i][j];

}

}

printf("最小值為:備亮孫%d ", m);

system("pause");

}

運行結果:

敲代碼不易仿鏈,望採納!

⑶ 用C語言編寫一個矩陣運算的程序,高分!

//矩陣三元組之矩陣相加 相乘
#include <iostream>
using namespace std;
typedef int Elemtype;
#define MAXSIZE 12500 //最大非零元素
typedef struct Triple
{
Elemtype value;
int row,col;
}Triple;

typedef struct TSMatrix
{
Triple data[MAXSIZE+1];
int mu,nu,tu;
}TSMatrix;
TSMatrix T;
void InputMatrix(TSMatrix &T) //輸入t個非零元素
{
cout<<"請輸入稀疏矩陣的信息,(行,列,非零元素個數)"<<endl;
cin>>T.mu>>T.nu>>T.tu;
int i;
cout<<"請輸入非零元素的信息(行,列,值),提醒(下標從1開始)"<<endl;
for(i=1;i<=T.tu;++i)
{
cin>>T.data[i].row>>T.data[i].col>>攔鋒T.data[i].value;
}
}

void Output(TSMatrix T)
{
cout<<"矩陣的三元組表示(ROW=)"<<T.mu<<" COL="<<T.nu<<"非零個數="<<T.tu<<endl;
int i;
for(i=1;i<=T.tu;++i)
{
cout<<"ROW(行):"<簡行晌<T.data[i].row<<" COL(列):"<<T.data[i].col<<" Value(值)"<<T.data[i].value<<endl;
}
}

void TransposeSMatrix(TSMatrix M,TSMatrix &T) //矩陣的轉置
{
T.mu=M.nu;T.nu=M.mu;T.tu=M.tu;
int i,j,k=1;
for(i=1;i<=M.nu;++i)
{
for(j=1;j<=M.tu;++j)
if(M.data[j].col==i)
{
T.data[k].row=i;
T.data[k].col=M.data[j].row;
T.data[k].value=M.data[j].value;
++k;
}
}
}

void AddMastrix(TSMatrix M,TSMatrix T,TSMatrix &Q) //矩陣相加
{
int index_a,index_b,i=1,j=1,k=1;
Q.mu=M.mu; Q.nu=M.nu;
while (i<=M.tu&&j<=T.tu)
{
index_a=(M.data[i].row)*(M.data[i].col)+M.data[i].col;
index_b=(T.data[j].row)*(T.data[j].col)+T.data[j].col;
if(index_a<index_b)
{
Q.data[k]=M.data[i];
i++;
k++;
}
else if(index_a>帶段index_b)
{
Q.data[k]=T.data[j];
j++;
k++;
}
else if(index_a==index_b)
{
if((M.data[i].value+T.data[j].value)!=0)
{
Q.data[k]=M.data[i];
Q.data[k].value=M.data[i].value+T.data[j].value;
k++;
}
++i;
++j;
}
}
//復制剩餘元素
for(;i<=M.tu;++i)
{
Q.data[k]=M.data[i];
k++;
}
for(;j<=T.tu;++j)
Q.data[k++]=T.data[j];
Q.tu=k-1;
}

void Multiply(TSMatrix M,TSMatrix T,TSMatrix &Q) //相乘
{
if(M.nu!=T.mu)
{
cerr<<"兩矩陣相乘不合法"<<endl;
return ;
}
int *rowSize=new int[T.mu+1]; //存放每行非零元素的個數
int *rowStart=new int[T.mu+2]; //矩陣每行在三元組開始位置
int *temp=new int[T.nu+1]; //存放結果矩陣中每行的計算結果
int i,Current,k,ROWM,COLM,COLB;
for(i=1;i<=T.mu;i++) rowSize[i]=0;
for(i=1;i<=T.tu;++i) rowSize[T.data[i].row]++;
rowStart[1]=1;
for(i=2;i<=T.mu+1;i++)
rowStart[i]=rowStart[i-1]+rowSize[i-1];
Current=1; k=1;
while (Current<=M.tu)
{
ROWM=M.data[Current].row; //當前三元組數據中元素的行號
for(i=1;i<=T.nu;++i) temp[i]=0;
while (Current<=M.tu&&ROWM==M.data[Current].row)
{
COLM=M.data[Current].col; //當前元素的列號,方便與T矩陣的行號相乘
for(i=rowStart[COLM];i<rowStart[COLM+1];i++) //對應T矩陣中每行的個數
{
COLB=T.data[i].col;
temp[COLB]+=(M.data[Current].value)*(T.data[i].value);
}
Current++;
}
for(i=1;i<=T.nu;i++)
{
if(temp[i]!=0)
{
Q.data[k].row=ROWM;
Q.data[k].col=i;
Q.data[k].value=temp[i];
}
k++;
}
}
Q.mu=M.mu;Q.nu=T.nu;
Q.tu=k-1;
}
int main()
{
TSMatrix T,M,Q,S;
InputMatrix(M);
InputMatrix(T);
cout<<"兩矩陣相乘"<<endl;
Multiply(M,T,Q);
Output(Q);
cout<<"兩矩陣相加"<<endl;
AddMastrix(M,M,S);
Output(S);
system("pause");
return 0;
}

⑷ Matlab編程:給定矩陣A和B,請寫一函數計算兩矩陣的乘積,A和B作為該函數的輸入參數,要求要判斷兩個矩陣是

第一樓的程序錯誤,沒有提示輸入A,B矩陣!
我把程序修改敏桐後完全能實現,運行時運拿汪提示輸入A,B矩陣,且能得結果!
程序源碼如下:
function C=bicu(A,B)
A=input('A matrix=') ;
B=input('B matrix=');
[m1,n1]=size(A);
[m2,n2]=size(B);
if n1==m2
C=zeros(m1,n2);
for i=1:m1
for j=1:n2
for k=1:n1
d=A(i,k)*B(k,j);
C(i,j)=C(i,j)+d;
end
end
end
else disp(['Matrix A and B could not be multiplied']);
end
保存為bicu.m後即可旁仔運行!
希望能對你有幫助!

⑸ 編寫一程序,利用指向數組的指針輸出一給定的矩陣。

#include<頌賣槐stdio.h>
#include<stdlib.h>

int main()
{
double aa[2]={1.1,2.2},bb[2]={3.3,4.4},cc[2]={5.5,6.6};
double(*pf[3])[2];
pf[0]=&aa;配友pf[1]=&bb;pf[2]=&cc;
for(int i=0;i<3;i++)
{
for(int j=0;j<2;j++)
printf("%f ",*(*pf[i]+j));
printf("\n");
}
system("野友pause");
}

⑹ C++編程題 關於矩陣...求題目意思以及做法

給定一個N階方陣A,你的任務就是檢驗對所有的N階方陣B,AB==BA是否成立。
輸入格式為:第一行為測試例子的個數t,接著是t個測試例子。

對每一個測試例子,第一行是N就是方陣的階數,在接下來的N行中,每行有N個整數。所有的整數都不超過1000(就是輸入方陣的數據)。

輸出格式是:如果給定的N階方陣A,對所有的N階方陣B,AB==BA成攜如立,輸出「YES」,否則輸出「NO」。

(題中給出的數據第二個方陣是單位陣畝信,所以成立,就輸迅隱輪出「YES」)

(以上是題意,怎麼做等人來回答吧)

⑺ 如何用C語言編寫程序求矩陣的值

#include<stdio.h>

void main()
{
//定義矩陣1、2為輸入數據矩陣,3為乘積後的矩陣
int cJuZhen1[4][3],cJuZhen2[3][2],cJuZhen3[4][2];
//定義兩個指針*p1,*p2分別指向矩陣1、2
int *p1,*p2,i,j;
p1=&cJuZhen1[0][0];
p2=&cJuZhen2[0][0];
//輸入矩陣1的數據
printf("請輸入4*3的矩陣A: \n");
for(i=0;i<4;i++)
{
for(j=0;j<3;j++)
{
scanf("%d",cJuZhen1[i][j]);
}
}
printf("\n");
//輸入矩陣2的數據
printf("請輸入3*2的矩陣B: \n");
for(i=0;i<3;i++)
{
for(j=0;j<2;j++)
{
scanf("%d",cJuZhen2[i][j]);
}
}
printf("\n");
//輸出矩陣1
printf("矩陣A:"\n);
for(i=0;i<4;i++)
{
for(j=0;j<3;j++)
{
printf("%d ",cJuZhen1[i][j]);
}
if(j==3)
{
printf("\n");
}
}
printf("\n");
//輸出矩陣2
printf("矩陣B: \n");
for(i=0;i<3;i++)
{
for(j=0;j<2;j++)
{
printf("%d ",cJuZhen2[i][j]);
}
if(j==2)
{
printf("\n");
}
}
printf("\n");
//計算矩陣1、2的乘積
printf("兩矩陣乘積為: \n");
for(i=0;i<4;i++)
{
cJuZhen3[i][0]=(*p1)*(*p2)+(*(p1+1))*(*(p2+2))+(*(p1+2))*(*(p2+4));
cJuZhen3[i][1]=(*p1)*(*(p2+1))+(*(p1+1))*(*(p2+3))+(*(p1+2))*(*(p2+5));
p1=p1+3;
}
//輸出矩陣3(即矩陣乘積)數據
printf("矩陣A與B乘積為: \n");
for(i=0;i<4;i++)
{
for(j=0;j<2;j++)
{
printf("%d ",cJuZhen3[i][j]);
}
if(j==2)
{
printf("\n");
}
}
printf("\n");
}

或者這個#include<iostream>
#include<math.h>
using namespace std;
#define n 3 //三階矩陣
#define N 20
#define err 0.0001

void main()
{
int i,j,k;
double A[n][n],X[n],u,y[n],max;

cout<<"Please input the matrix:\n";
for(i=0;i<n;i++)
for(j=0;j<n;j++)
cin>>A[i][j]; //輸入矩陣
cout<<"Please input the initialized vector:\n";
for(i=0;i<n;i++)
cin>>X[i]; //輸入初始向量

k=1;
u=0;
while(1)
{
max=X[0];
for(i=0;i<n;i++)
{
if(max<X[i]) max=X[i]; //選擇最大值
}

for(i=0;i<n;i++)
y[i]=X[i]/max;

for(i=0;i<n;i++)
{
X[i]=0;
for(j=0;j<n;j++)
X[i]+=A[i][j]*y[j]; //矩陣相乘
}

if(fabs(max-u)<err)
{
cout<<"The eignvalue of A is:"<<max<<"\n";
cout<<"The eignvector of A is:";
for(i=0;i<n;i++)
cout<<X[i]<<" ";
break;
}
else
{
if(k<N) {k=k+1;u=max;}
else {cout<<"error\n";break;}
}

}
}

⑻ C語言編程,求 給定一個n行n列(n<=10)的二維整數方陣,要求在這個矩陣中找出一個子矩陣,該子矩陣中所有

#include<stdio.h>
main()
{
int e,i,j,m,n,a,b,k,l;float h=0,v=0;int s[100][100];
scanf("%d",&e);
for(i=0;i<e;i++)
{
for(j=0;j<e;j++)scanf("%d",&s[i][j]);
}

for(i=0;i<e-1;i++)
{
for(j=0;j<e-1;j++)
{
k=s[i][j];
for(a=i+1;a<e;a++)
{
for(b=j+1;b<e;b++)
{

for(m=i;m<=a;m++)
{
for(n=j;n<=b;n++)
{
s[m][n]=s[m][n]/1.00;
h=h+s[m][n];
if(k>=s[m][n])k=s[m][n];
}
}
l=(a+1-i)*(b+1-j);
k=k/1.00;
h=h/l-k;
if(h>=v)v=h;
h=0;
}
}
}
}printf("%.2f",v);
}

我做的 答案是對了 但是高神考試時過不了戚襪虧 同好啟求高手指點哪裡有錯!

⑼ 用C# 編程,給定一個m×n的數值矩陣A,如果矩陣A中存在這樣的一個元素A[i][j]滿足條件:

先創建兩個一維數組記為M、N,再逐行掃描這個矩陣,把每一行里最小的元素下標記下來放入數組M、N中分別表示行列,(例如:第一行第三個元素6為第一行最小的,記下M[0]=1,N[0]=6),然後對數組A[i][j]中所有記下下標的數據在其所在列中進行比較(例如:第一行第三個元素6為第一行最小的,就在第六列中進行比較),看這個數據是否為該列最大的元素,是則保留,否則捨去。思路就是這樣,代碼很簡單,自己搞定吧。

⑽ Java編程,求給定矩陣的全部局部極大值及其所在的位置。程序貌似有點小bug...求幫忙看一下

if(flag==0)
System.out.print("None"哪耐慎+" "+ m+" "+n+"李敬畝局\n");

閱讀全文

與試編程求出一給定矩陣相關的資料

熱點內容
反應剛剛解放時期諜戰片 瀏覽:970
和美女被困隧道的七天 瀏覽:801
午夜影院入口。 瀏覽:845
韓國李彩潭所有電影大全 瀏覽:446
高精定位演算法縮寫 瀏覽:855
解壓試頻 瀏覽:494
有關蛇女香港的電影 瀏覽:67
兄妹禁忌之戀 瀏覽:348
文娛小說主角姓蘇 瀏覽:211
下載軟體佔用內存大需要解壓嗎 瀏覽:269
愛戀3d未刪減版百度雲網盤 瀏覽:48
安卓邊境怎麼玩 瀏覽:204
不用下載免費網址 瀏覽:187
gl片子 瀏覽:42
台灣電影男學生女老師 瀏覽:744
推薦個能看的網址你懂的 瀏覽:150
免費觀看歐美純愛電影 瀏覽:223
帶男朋友張浩回宿舍影片名字 瀏覽:178
抗戰二級電影 瀏覽:116
愛情電影中文網 瀏覽:976