导航:首页 > 编程语言 > 试编程求出一给定矩阵

试编程求出一给定矩阵

发布时间: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");

阅读全文

与试编程求出一给定矩阵相关的资料

热点内容
护工韩国伦理电影 浏览:899
母乳人妻伦理片 浏览:844
电影院被强行猛插 浏览:208
80年代台湾老电影红楼梦 浏览:278
大疆带屏控如何安装app 浏览:945
国产大胸电影 浏览:706
模拟器中的pco的命令提示窗口 浏览:874
萝卜双端源码 浏览:873
魔域gm易语言工具源码 浏览:452
机械设计手册pdf电子版 浏览:98
为什么网吧服务器会掉盘 浏览:526
文电通pdf套装版4 浏览:327
如何使用百度地图服务器地址 浏览:921
吉林租服务器托管云服务器 浏览:781
中越反击战电影全集 浏览:116
溯源码验证码无效 浏览:354
风月片有酷网站 浏览:687
大尺度电影韩剧 浏览:680
安卓手机怎么联接a 浏览:716
好色小姨 小说 浏览:677