用c语言编程:定义一个4*4二维矩阵数组,要求行列转换,并且分别求出主对脚线和次对角线上元素值的和。

用c语言编程:定义一个4*4二维矩阵数组,要求行列转换,并且分别求出主对脚线和次对角线上元素值的和。,第1张

#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定义要显示的多维矩阵。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13356578.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-20
下一篇 2023-07-20

发表评论

登录后才能评论

评论列表(0条)

保存