#include<stdioh>
int main()
{
int i,j,sum1=0,sum2=0;
int d;
int a[4][4],b[4][4];
for(i=0;i<4;i++)
for(j=0;j<4;j++)
scanf("%d",&a[i][j]); //转换前
for(i=0;i<4;i++)
for(j=0;j<4;j++)
b[j][i]=a[i][j]; //转换后
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
printf("%d ",b[i][j]);
if(i==j)
sum1+=a[i][j];
else if(i+j==3)
sum2+=a[i][j];
}
}
printf("\n");
d=sum1+sum2;
printf("%d\n",d);
return 0;
}
望采纳,已运行
Mathematica可进行矩阵的各种运算,如矩阵求逆、矩阵的转置、矩阵与向量的乘法等下面列出主要的运算记k为常数,u,v为向量,A,B为矩阵kA------------------------常数乘矩阵
k+u-----------------------向量u的每一个元素加上k
u+v----------------------向量的对应元素相加
uv-----------------------向量的内积
uv-----------------------向量的对应元素相乘
Au---------------------矩阵乘向量
uA-----------------------向量乘矩阵
AB--------------------------矩阵乘矩阵
Transpose[A]-----------------求矩阵A的转置阵
Inverse[A]--------------------求矩阵A的逆矩阵
Det[A]-------------------------求矩阵A的行列式
Eigenvalues[A]-----------------求数字阵A的特征值
Eigentvectors[A]---------------求数字阵A的特征向量
LinearSolve[A,v]---------------求解线性方程组Ax=v
Chop[%n]-------------------舍去第n个输出中无实际意义小量
矩阵可以左乘以向量或右乘以向量, Mathematica也不区分“行”,或“列”向量,自动进行可能的运算
例:
In[1]:=A={{a,b},{c,d}}; v={x,y};
In[2]:=Av (A左乘以v)
Out[2]={ax+by,cx+dy}
In[3]:=vA (A右乘以v)
Out[3]={ax+cy,bx+dy}
In[4]:=Inverse[A]
Out[4]=
如果矩阵的元素是近似数,则求出的逆矩阵也是近似的。
In[5]:=B={{12,57},{42,56}}; Inverse[B]
Out[5]=
In[6]:=%B
Out[6]=
结果与单位矩阵有微小误差,用函数Chop消去无实际意义小量
In[7]:=Chop[%]
Out[7]={{1,0},{0,1}}
前面已介绍了用Solve解线性方程组,但对于矩阵形式Ax=v的线性方程组,用
LinearSolve[A,v]更方便
In[8]:=M={{2,1},{1,4}}; LinearSolve[M,{a,b}]
有些符号打不出来,你也可以参见(>/ 程式功能: 矩阵转置 (transportation) //输入:m×n矩阵A //输出:矩阵B,B=AT /#include void main() { int i, j, m=5, n=5; int B[6][6], A[6][6]; printf("请依序输入二维阵列A(5x5)的元素内容(可以5个一行,可以空格或回车隔开): \n"); for (i = 1; i <= 5; i++) { for (j = 1; j <= 5; j++) { scanf("%d", &A[i][j]); } } printf("\n\n原始:\n"); for(i = 1; i <= m; i ++) { for(j = 1; j <=n; j++) { printf("%4d",A[i][j]); } printf("\n"); } printf("\n转置後:\n"); for (i = 1; i <= m; i++) { for (j = 1; j <= n; j++) { B[i][j] = A[j][i]; /作转置的动作/ printf("%4d ", B[i][j]); /输出转置後的结果/ } printf("\n"); }}
二维数组定义的一般形式是: 类型说明符 数组名常量表达式1其中常量表达式1表示第一维下标的长度,常量表达式2 表示第二维下标的长度。
二维数组基本运算算法:
(1)转置矩阵:
1 // 其中A, B是mn矩阵2 void tramat(matrix A, matrix B) { //T(n) = O(m n)3 int i, j;4 for (i = 0; i < m; i++)5 for (j = 0; j < n; j++)6 B[j][i] = A[i][j];7 }。
(2)矩阵相加:
1 // 其中A,B,C是mn矩阵2 void addmat(matrix C, matrix A, matrix B) {3 int i, j;4 for (i = 0; i < m; i++)5 for (j = 0; j < n; j++)6 C[i][j] = A[i][j] + B[i][j];7 }。
(3)矩阵相乘:
1 // 其中A是mr矩阵,B是rn矩阵,C为mn矩阵 2 void mutmat(matrix C, matrix A, matrix B) { 3 int i, j, k; 4 for (i = 0; i < m; i++) 5 for (j = 0; j < n; j++) { 6 C[i][j] = 0; 7 for (k = 0; k < r; k++) 8 C[i][j] += A[i][k] B[k][j]; 9 }10 }。
1定义两个度矩阵,如m=1,2,3;2和4。三,四,五,4和6;N=1、3、5;2-2;3、5、7;4,6,8。
2、水平问题马赛克,只输入k=[m,n]。
3输入g=[mn],进行水平拼接。
4、垂直拼接,我们输入f=[m;n]即可回答。
5MATLAB定义要显示的多维矩阵。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)