1、确认矩阵是否可以相乘。只有第一个矩阵的列的个数等于第二个矩阵的行的个数,这样的两个矩阵才能相乘。
图示的两个矩阵可以相乘,因为第一个矩阵,矩阵A有3列,而第二个矩阵,矩阵B有3行。
(1)人员矩阵的计算方法扩展阅读
一般计算中,或者判断中还会遇到以下11种情况来判断是否为可逆矩阵:
1、秩等于行数。
2、行列式不为0。
3、行向量(或列向量)是线性无关组。
4、存在一个矩阵,与它的乘积是单位阵。
5、作为线性方程组的系数有唯一解。
6、满秩。
7、可以经过初等行变换化为单位矩阵。
8、伴随矩阵可逆。
9、可以表示成初等矩阵的乘积。
10、它的转置矩阵可逆。
11、它去左(右)乘另一个矩阵,秩不变。
B. 矩阵的运算方法
加点分数吧
#include<stdio.h>
#include<math.h>
void jiafa()
{
int m,n;
float a[20][20],b[20][20],c[20][20];
int i,j;
printf("请输入矩阵行数:");
scanf("%d",&m);
printf("请输入矩阵列数:");
scanf("%d",&n);
printf("请输入第一个矩阵:");
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%f",&a[i][j]);
printf("请输入第二个矩阵:");
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%f",&b[i][j]);
printf("矩阵相加的结果为:");
for(i=0;i<m;i++)
{ for(j=0;j<n;j++)
{
c[i][j]=a[i][j]+b[i][j];
printf("%4f ",c[i][j]);
}
printf("\n");
}
}
void jianfa()
{
int m,n;
float a[20][20],b[20][20],c[20][20];
int i,j;
printf("请输入矩阵行数:");
scanf("%d",&m);
printf("请输入矩阵列数:");
scanf("%d",&n);
printf("请输入第一个矩阵:");
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%f",&a[i][j]);
printf("请输入第二个矩阵:");
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%f",&b[i][j]);
printf("矩阵相减的结果为:");
for(i=0;i<m;i++)
{ for(j=0;j<n;j++)
{
c[i][j]=a[i][j]-b[i][j];
printf("%4f ",c[i][j]);
}
printf("\n");
}
}
void chengfa()
{
int m,n;
float s;
float a[20][20],b[20][20],c[20][20];
int i,j,k;
printf("请输入矩阵行数:");
scanf("%d",&m);
printf("请输入矩阵列数:");
scanf("%d",&n);
printf("请输入第一个矩阵:");
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%f",&a[i][j]);
printf("请输入第二个矩阵:");
for(i=0;i<n;i++)
for(j=0;j<m;j++)
scanf("%4f",&b[i][j]);
for(i=0;i<m;i++)
{
for(j=0;j<m;j++)
{
s=0;
for(k=0;k<n;k++)
{
s=s+a[i][k]*b[k][j];
c[i][j]=s;
}
}
}
for(i=0;i<m;i++)
{
for(j=0;j<m;j++)
{
printf("%4f ",c[i][j]);
}
printf("\n");
}
}
void zhuan()
{
int m,n;
float a[20][20],b[20][20];
int i,j;
printf("请输入矩阵行数:");
scanf("%d",&m);
printf("请输入矩阵列数:");
scanf("%d",&n);
printf("请输入一个矩阵:");
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%f",&a[i][j]);
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
b[i][j]=a[j][i];
printf("%4f ",b[i][j]);
}
printf("\n");
}
}
void qiuni()
{
int N;
printf("输入矩阵的阶数N:\n");
scanf("%d",&N);
float a[10][10],b[10][20],c[10][10],t;
int i,j,m;
printf("请输入行列式不为0的矩阵A(%d阶):\n",N); //矩阵A的各元素存入二维数组a中。
for(i=0;i<N;i++)
for(j=0;j<N;j++)
scanf("%f",&a[i][j]);
//增广矩阵(A|E)存入二维数组b中
for(i=0;i<N;i++)
for(j=0;j<N;j++)
b[i][j]=a[i][j];
for(i=0;i<N;i++)
for(j=N;j<2*N;j++)
b[i][j]=0;
for(i=0;i<N;i++)
b[i][N+i]=1;
for(m=0;m<N;m++) //对每行进行处理。
{
t=b[m][m]; //预存b[m][m]。
i=m;
while(b[m][m]==0)
{
b[m][m]=b[i+1][m];
i++;
}
if(i>m)
{
b[i][m]=t; //实现交换。
//交换其它各列相应位置的元素
for(j=0;j<m;j++)
{
t=b[m][j];
b[m][j]=b[i][j];
b[i][j]=t;
}
for(j=m+1;j<2*N;j++)
{
t=b[m][j];
b[m][j]=b[i][j];
b[i][j]=t;
}
}
for(i=m+1;i<N;i++)
for(j=2*N-1;j>=m;j--)
b[i][j]-=b[i][m]*b[m][j]/b[m][m]; //m=0时,将第一行的-b[i][0]/b[0][0]倍加到以下各行。这样以下每行第一个元素b[i][0]就为0。
for(j=2*N-1;j>=m;j--)
b[m][j]/=b[m][m]; //对第m行作行变换,同除以b[m][m],使b[m][m]为1。
}
printf("第一步变换后得到的增广矩阵为:\n");
for(i=0;i<N;i++)
{
for(j=0;j<2*N;j++)
printf("%3.5f ",b[i][j]);
printf("\n"); //实现了:每个i对应一个换行。
}
m=N-1;
while(m>0)
{
for(i=0;i<m;i++)
for(j=2*N-1;j>=m;j--) //千万注意,此处j必须递减,否则b[i][m]先变为0,后面的计算就无效!
b[i][j]-=b[i][m]*b[m][j];
m--;
}
printf("最后得到的增广矩阵为:\n");
for(i=0;i<N;i++)
{
for(j=0;j<2*N;j++)
printf("%3.5f ",b[i][j]);
printf("\n"); //实现了:每个i对应一个换行。
}
for(i=0;i<N;i++) //将逆矩阵存入二维数组c中。
for(j=0;j<N;j++)
c[i][j]=b[i][N+j];
printf("故逆矩阵为:\n");
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf("%3.5f ",c[i][j]);
printf("\n"); //实现了:每个i对应一个换行。
}
}
main()
{
int w;
printf("1矩阵加法\n");
printf("2矩阵减法\n");
printf("3矩阵乘法\n");
printf("4矩阵转置\n");
printf("5矩阵求逆\n");
printf("\n");
printf("请选择要进行的运算:");
scanf("%d",&w);
switch(w)
{
case 1:jiafa();break;
case 2:jianfa();break;
case 3:chengfa();break;
case 4:zhuan();break;
case 5:qiuni();break;
}
return 0;
}
C. 矩阵怎么计算
在这个矩阵右边写一个同阶的单位矩阵,经过若干初等行变换(只能行变换,不能列变换),把左边部分(也就是这个矩阵)变成单位矩阵,则右边的矩阵即是原矩阵的逆矩阵。
1
1
1
0
1
2
0
1
第二行减去第一行
1
1
1
0
0
1
-1
1
第一行减去第二行
1
0
2
-1
0
1
-1
1
则原矩阵的逆是
2
-1
-1
1
D. 矩阵计算的介绍
《矩阵计算》是一本专业用书。本书系统介绍了矩阵计算的基本理论和方法。内容包括矩阵乘法、矩阵分析、线性方程组、正交化和最小二乘法、特征值问题、Lanczos方法、矩阵函数及专题讨论等。书中的许多算法都有现成的软件包实现,每节后还附有习题,并有注释和大量参考文献。本书可作为高等学校数学系高年级本科生和研究生的教材,亦可作为计算数学和工程技术人员的参考用书。
E. 矩阵求法计算 谢了 主要是方法
你写得好乱哦!不过都是非常简单的运算噻!
给出 m×n 矩阵 A 和 B,可定义它们的和 A + B 为一 m×n 矩阵,等 i,j 项为 (A + B)[i, j] = A[i, j] + B[i, j]。举例:
另类加法可见于矩阵加法.
若给出一矩阵 A 及一数字 c,可定义标量积 cA,其中 (cA)[i, j] = cA[i, j]。 例如
这两种运算令 M(m, n, R) 成为一实数线性空间,维数是mn.
若一矩阵的列数与另一矩阵的行数相等,则可定义这两个矩阵的乘积。如 A 是 m×n 矩阵和 B 是 n×p矩阵,它们是乘积 AB 是一个 m×p 矩阵,其中
(AB)[i, j] = A[i, 1] * B[1, j] + A[i, 2] * B[2, j] + ... + A[i, n] * B[n, j] 对所有 i 及 j。
例如
此乘法有如下性质:
(AB)C = A(BC) 对所有 k×m 矩阵 A, m×n 矩阵 B 及 n×p 矩阵 C ("结合律").
(A + B)C = AC + BC 对所有 m×n 矩阵 A 及 B 和 n×k 矩阵 C ("分配律")。
C(A + B) = CA + CB 对所有 m×n 矩阵 A 及 B 和 k×m 矩阵 C ("分配律")。
要注意的是:可置换性不一定成立,即有矩阵 A 及 B 使得 AB ≠ BA。
对其他特殊乘法,见矩阵乘法。
[编辑本段]其他性质
线性变换,秩,转置
矩阵是线性变换的便利表达法,皆因矩阵乘法与及线性变换的合成有以下的连系:
以 Rn 表示 n×1 矩阵(即长度为n的矢量)。对每个线性变换 f : Rn -> Rm 都存在唯一 m×n 矩阵 A 使得 f(x) = Ax 对所有 x ∈ Rn。 这矩阵 A "代表了" 线性变换 f。 今另有 k×m 矩阵 B 代表线性变换 g : Rm -> Rk,则矩阵积 BA 代表了线性变换 g o f。
矩阵 A 代表的线性代数的映像的维数称为 A 的矩阵秩。矩阵秩亦是 A 的行(或列)生成空间的维数。
m×n矩阵 A 的转置是由行列交换角式生成的 n×m 矩阵 Atr (亦纪作 AT 或 tA),即 Atr[i, j] = A[j, i] 对所有 i and j。若 A 代表某一线性变换则 Atr 表示其对偶算子。转置有以下特性:
(A + B)tr = Atr + Btr,(AB)tr = BtrAtr。
F. 矩阵如何计算,矩阵的概念。
方法一:初等变换(此方法适用于单独给出一个矩阵求逆矩阵,考试中一般矩阵的阶数不会太高的,放心);
方法二:公式变换(抽象矩阵之间的运算,等式左边一坨,右边一坨,比如求a的逆,先把含a的划到等式一边,提取公因式后:b坨
a
c坨=d坨,根据定义,等号两边分别左乘b坨的逆右乘c坨的逆,即a=b坨的逆
d坨
c坨的逆);左乘就是等号两边都从左边乘,同理右乘;
方法三:一些特殊的举证,比如对角阵什么的(书上总共没几个),对角线上的元素直接分之一。
够用了
G. 矩阵运算常用公式总结
c11=a11xb11+a12xb21+a13xb31+a14xb41
c12=a11xb12+a12xb22+a13xb32+a14xb42
c21=a21xb11+a22xb21+b23xb31+a24xb41
一次类推,就是拿第一个矩阵行的数据依次和第二个矩阵列对应的数据相乘再相加的和就是积矩阵对应行和对应列上数据。
在线性代数中,一个矩阵A的列秩是 A的线性无关的纵列的极大数目。类似,行秩是A的线性无关的横行的极大数目。
方阵的列秩和行秩总是相等的,因此它们可以简单地称作矩阵 A的秩。通常表示为 rk(A) 或 rank A。
m× n矩阵的秩最大为 m和 n中的较小者。有尽可能大的秩的矩阵被称为有满秩;类似的,否则矩阵是秩不足的。
设A是n阶方阵,如果数λ和n维非零列向量x使关系式
AX=λX (1)
成立,那么这样的数λ称为矩阵A特征值,非零向量x称为A的对应于特征值λ的特征向量
(1)式也可写成,( A-λE)X=0
(2)这是n个未知数n个方程的齐次线性方程组,它有非零解的充分必要条件是系数行列式| A-λE|=0 。
(7)人员矩阵的计算方法扩展阅读:
矩阵在物理学中的另一类泛应用是描述线性耦合调和系统。这类系统的运动方程可以用矩阵的形式来表示,即用一个质量矩阵乘以一个广义速度来给出运动项,用力矩阵乘以位移向量来刻画相互作用。求系统的解的最优方法是将矩阵的特征向量求出(通过对角化等方式),称为系统的简正模式。
这种求解方式在研究分子内部动力学模式时十分重要:系统内部由化学键结合的原子的振动可以表示成简正振动模式的叠加。描述力学振动或电路振荡时,也需要使用简正模式求解 。