• 首页>范文 > 范文
  • 怎么写矩阵

    1.c语言矩阵怎么写

    这是个蛇形矩阵,算法如下:

    #include

    #define N 10

    int a[N][N];

    void func(int n)

    {

    int i,j;

    int num = 0;

    for (i=0;i{

    for (j=0;j{

    a[i][j] = 0;

    }

    }

    for (i=0;i{

    for (j=0;j{

    if (a[i][j] == 0)

    a[i][j] = ++num;

    }

    for (j=0;j{

    if (a[j][n-1-i] == 0)

    {

    a[j][n-1-i] = ++num;

    }

    }

    for (j=n-1;j>=0;j--)

    {

    if (a[n-1-i][j] == 0)

    {

    a[n-1-i][j] = ++num;

    }

    }

    for (j=n-1;j>=0;j--)

    {

    if (a[j][i] == 0)

    {

    a[j][i] = ++num;

    }

    }

    }

    }

    int main()

    {

    int n;

    cin>>n;

    func(n);

    for (int i=0;i{

    for (int j=0;j{

    cout}

    cout}

    return 0;

    }

    2.怎么写关于矩阵的程序

    算法介绍矩阵求逆在3D程序中很常见,主要应用于求Billboard矩阵。

    按照定义的计算方法乘法运算,严重影响了性能。在需要大量Billboard矩阵运算时,矩阵求逆的优化能极大提高性能。

    这里要介绍的矩阵求逆算法称为全选主元高斯-约旦法。高斯-约旦法(全选主元)求逆的步骤如下:首先,对于 k 从 0 到 n - 1 作如下几步:从第 k 行、第 k 列开始的右下角子阵中选取绝对值最大的元素,并记住次元素所在的行号和列号,在通过行交换和列交换将它交换到主元素位置上。

    这一步称为全选主元。 m(k, k) = 1 / m(k, k) m(k, j) = m(k, j) * m(k, k),j = 0, 1, 。

    , n-1;j != k m(i, j) = m(i, j) - m(i, k) * m(k, j),i, j = 0, 1, 。, n-1;i, j != k m(i, k) = -m(i, k) * m(k, k),i = 0, 1, 。

    , n-1;i != k 最后,根据在全选主元过程中所记录的行、列交换的信息进行恢复,恢复的原则如下:在全选主元过程中,先交换的行(列)后进行恢复;原来的行(列)交换用列(行)交换来恢复。实现(4阶矩阵)float Inverse(CLAYMATRIX& mOut, const CLAYMATRIX& rhs){ CLAYMATRIX m(rhs); DWORD is[4]; DWORD js[4]; float fDet = 1.0f; int f = 1; for (int k = 0; k < 4; k ++) { // 第一步,全选主元 float fMax = 0.0f; for (DWORD i = k; i < 4; i ++) { for (DWORD j = k; j < 4; j ++) { const float f = Abs(m(i, j)); if (f > fMax) { fMax = f; is[k] = i; js[k] = j; } } } if (Abs(fMax) < 0.0001f) return 0; if (is[k] != k) { f = -f; swap(m(k, 0), m(is[k], 0)); swap(m(k, 1), m(is[k], 1)); swap(m(k, 2), m(is[k], 2)); swap(m(k, 3), m(is[k], 3)); } if (js[k] != k) { f = -f; swap(m(0, k), m(0, js[k])); swap(m(1, k), m(1, js[k])); swap(m(2, k), m(2, js[k])); swap(m(3, k), m(3, js[k])); } // 计算行列值 fDet *= m(k, k); // 计算逆矩阵 // 第二步 m(k, k) = 1.0f / m(k, k); // 第三步 for (DWORD j = 0; j < 4; j ++) { if (j != k) m(k, j) *= m(k, k); } // 第四步 for (DWORD i = 0; i < 4; i ++) { if (i != k) { for (j = 0; j < 4; j ++) { if (j != k) m(i, j) = m(i, j) - m(i, k) * m(k, j); } } } // 第五步 for (i = 0; i < 4; i ++) { if (i != k) m(i, k) *= -m(k, k); } } for (k = 3; k >= 0; k --) { if (js[k] != k) { swap(m(k, 0), m(js[k], 0)); swap(m(k, 1), m(js[k], 1)); swap(m(k, 2), m(js[k], 2)); swap(m(k, 3), m(js[k], 3)); } if (is[k] != k) { swap(m(0, k), m(0, is[k])); swap(m(1, k), m(1, is[k])); swap(m(2, k), m(2, is[k])); swap(m(3, k), m(3, is[k])); } } mOut = m; return fDet * f;}比较 原算法 原算法(经过高度优化) 新算法 加法次数 103 61 39 乘法次数 170 116 69 需要额外空间 16 * sizeof(float) 34 * sizeof(float) 25 * sizeof(float)。

    3.零矩阵怎么表示

    零矩阵的手写把零写大些就可以。

    矩阵大写,变量一般都是小写字母,线性代数里的矩阵不需要加箭头,并没有特别的符号,被声明用于约定手写规范。至于手写的向量,如果用英文字母表示其实应该加箭头,所以考研书里都用希腊字母表示,如ξ、η、γ等,这些不必加箭头。

    扩展资料:

    零矩阵的性质

    m*n 的零矩阵 O 和 m*n 的任意矩阵 A 的和为 A + O = O + A = A ,差为 A - O = A,O - A = -A。

    l*m 的零矩阵 O 和 m*n 的任意矩阵 A 的积 OA 为 l*n 的零矩阵。

    l*m 的任意矩阵 B 和 m*n 的零矩阵 O 的积 BO 为 l*n 的零矩阵。

    在线性代数中,对于n阶方阵N,存在正整数k,使得N^k=0,这样的方阵N就叫做幂零矩阵。满足条件的最小的正整数k被称为N的度数或指数。更一般来说,零权变换是向量空间的线性变换L,使得对于一些正整数k(并且因此,对于所有j≥k,Lj = 0),L^k= 0。

    4.在EXCEL中怎么输入矩阵

    输入矩阵的第一步就是在excel表格中,找两个空的单元格,然后输入矩阵的A1和A2格,这样就会确定A列。

    1.确定A列之后就是输入B2和B1,这样就会确定B列,输入的是11和12,同时也会确定横着的每一行。

    2.确定之后就可以下拉完成矩阵了,可以横着拉,也可以竖着拉,最后形成自己需要的矩阵就行。

    3.最终矩阵的完成品是这样的,大家可以看到矩阵的规律是由最初输入的四个数字确定的。

    4.一个简单的输入负数的小技巧,在单元格内先输入一个正数,然后打上括号。

    5.打上括号之后回车就会发现原本是正数现在变成了负数。在excel中有很多技巧可言简化操作。

    5.c语言矩阵怎么写

    这是个蛇形矩阵,算法如下:

    #include <iostream.h>

    #define N 10

    int a[N][N];

    void func(int n)

    {

    int i,j;

    int num = 0;

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

    {

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

    {

    a[i][j] = 0;

    }

    }

    for (i=0;i<n/2+1;i++)

    {

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

    {

    if (a[i][j] == 0)

    a[i][j] = ++num;

    }

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

    {

    if (a[j][n-1-i] == 0)

    {

    a[j][n-1-i] = ++num;

    }

    }

    for (j=n-1;j>=0;j--)

    {

    if (a[n-1-i][j] == 0)

    {

    a[n-1-i][j] = ++num;

    }

    }

    for (j=n-1;j>=0;j--)

    {

    if (a[j][i] == 0)

    {

    a[j][i] = ++num;

    }

    }

    }

    }

    int main()

    {

    int n;

    cin>>n;

    func(n);

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

    {

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

    {

    cout<<a[i][j]<< " ";

    }

    cout<<endl;

    }

    return 0;

    }

    6.怎样用C语言写矩阵

    用二维数组,如下:#include main(){ int i, j, a[4][4]; for ( i = 1; i < 4; i++ ) { for ( j = 1; j < 4; j++ ) { scanf ("%d", &a[i][j]); } }//这样就可以将一个3*3 的矩阵存在2维数组中了 for ( i = 1; i < 4; i++ ) { for ( j = 1; j < 4; j++ ) { printf (" %-4d ", a[i][j]); } printf ("n"); }//这样就可以显示矩阵 return 0;}。

    发表评论

    登录后才能评论