C#编写有关矩阵的操作

using System;
using System.Collections.Generic;
using System.Text;

namespace Object
{
    public class Matrix
    {
        public Matrix()
        { }

        public Matrix(double[,] matrix)
        {
            this.matrix = matrix;
        }
        double[,] matrix = new double[1, 1];//定义数组
        public double[,] GetMatrix//获取设置数组
        {
            get { return matrix; }
            set { matrix = value; }
        }
        public void Account(double[,] matrix, double[] mb, int number)//消除前排主项
        {
            for (int i = 0; i < number; i++)
            {
                for (int j = i + 1; j < number; j++)
                {
                    double temp;
                    if (matrix[j, i] != 0)
                    {
                        temp = matrix[i, i] / matrix[j, i];
                        for (int k = 0; k < number; k++)
                        {
                            matrix[j, k] = matrix[i, k] - matrix[j, k] * temp;//消元
                        }
                        mb[j] = mb[i] - mb[j] * temp;
                    }

                }
            } Console.WriteLine(mb[2].ToString());
            for (int i = 0; i < number; i++)
            {
                for (int j = 0; j < number; j++)
                {
                    Console.Write(matrix[i, j].ToString() + " ");
                }
                Console.Write(mb[i].ToString());
                Console.WriteLine();
            }
            Console.ReadLine();
        }
        public void ReAccont(double[,] matrix, double[] mb, int number)消除后排主项
        {
            for (int i = number - 1; i >= 0; i--)
            {

                for (int j = i - 1; j >= 0; j--)
                {
                    double temp;
                    if (matrix[j, i] != 0)
                    {
                        temp = matrix[i, i] / matrix[j, i];
                        for (int k = 0; k < number; k++)
                        {
                            matrix[j, k] = matrix[i, k] - matrix[j, k] * temp;//消元

                        }
                        mb[j] = mb[i] - mb[j] * temp;
                    }
                }
            }
            for (int i = 0; i < number; i++) //输出消元后的矩阵
            {
                for (int j = 0; j < number; j++)
                {
                    Console.Write(matrix[i, j].ToString() + " ");
                }
                Console.Write(mb[i].ToString());
                Console.WriteLine();
            }
            Console.ReadLine();
            for (int i = 0; i < number; i++)
            {
                if (matrix[i, i] != 0)
                {
                    mb[i] = mb[i] / matrix[i, i];
                    matrix[i, i] = 1;
                }
                else
                {
                    mb[i] = 0;
                }
            }
            for (int i = 0; i < number; i++) //高斯-约当消去法
            {
                for (int j = 0; j < number; j++)
                {
                    Console.Write(matrix[i, j].ToString() + " /t ");
                }
                Console.Write(mb[i].ToString());
                Console.WriteLine();
            }
            Console.ReadLine();
            for (int i = 0; i < number; i++) //输出最后结果
            {
                Console.WriteLine("x" + i.ToString() + "=" + mb[i].ToString());
            }
            Console.ReadLine();
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            double[,] mat = new double[,] { 
 { 2, 2, 3, 2, 3, 8, 4, 6, 9, 10 }, 
 { 4, 7, 7, 12, 55, 6, 9, 8, 4, 65 }, 
 { -2, 4, 5, 5, 4, 6, 8, 4, 6, 9 }, 
 { 0,0,5,3,4,-4,-8,9,6,7},
 {1,5,6,8,9,7,4,6,5,2},
 {5,8,6,7,11,45,6,25,5,4},
 {5,9,8,9,77,8,16,19,20,16},
 {8,9.2,65,6.3,5,6,8,4,6,7},
 {4,5,8,12,20,65,46,35,10,1},
 {0,0,0,0,0,4,5,6,8,9}
 };
            double[] ma = new double[] { 3, 1, -7, 4, 6, 8, 9, 5, 12, 4 };
            Matrix m = new Matrix(mat);

            m.Account(mat, ma, 10);
            m.ReAccont(mat, ma, 10);

        }
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值