24小时热门版块排行榜    

查看: 823  |  回复: 0

springwu

铁虫 (初入文坛)

[求助] 大家帮忙看一下这个C#求解线性方程组的程序那里有问题?

程序编译没错误,可是算出来的结果不对。小弟才学习C#还请多多指教!
namespace 解线性方程组
{
    class Program
    {
        static void Main(string[] args)
        {
            int amount;//存储方程组的方程个数
            double[,] m;//二维数组用于表示存放方程系数的系数矩阵
            double[] solution;//一维数组用于存放方程组的解
            double t1, t2;
            Console.WriteLine("Input number of equation";//接收用户输入的方程个数
            amount = Convert.ToInt32(Console.ReadLine());
            m = new double[amount, amount + 1];
            solution = new double[amount];

            Console.WriteLine("Input coefficient of equation";
            for (int i = 0; i < amount; i++)
            {
                for (int j = 0; j < amount + 1; j++)
                    m[i, j] = Convert.ToDouble(Console.ReadLine());
            }

            Console.WriteLine("The coefficient of equation is:";
            Console.WriteLine("-------------------------------";
            for (int i = 0; i < amount; i++)
            {
                for (int j = 0; j < amount + 1; j++)
                    Console.Write("{0,8}", m[i, j]);
                Console.WriteLine();
            }
            for (int i = 1; i < amount; i++)
            {
                for (int j = i; j < amount; j++)
                {
                    double coef = -m[j, i - 1] / m[i - 1, i - 1];
                    for (int k = i - 1; k < amount + 1; k++)
                    {
                        m[j, k] += m[i - 1, k] * coef;
                    }
                }
            }
            t1 = m[amount - 1, amount - 1];
            solution[amount - 1] = m[amount - 1, amount] / t1;
            for (int i = amount - 1; i >= 0; i--)
            {
                t2 = 0d;
                for (int j = i + 1; j <= amount - 1; j++)
                {
                    t2 += m[i, j] * solution[j];
                }
                solution = (m[i, amount] - t2) / m[i, i];
            }
            Console.WriteLine();
            Console.WriteLine("\n The result is:";
            Console.WriteLine("-----------------------";
            for (int i = 0; i < amount; i++)
            {
                Console.WriteLine("x[{0}] = 1", i, solution);
            }
            Console.Read();
        }
        
    }

}
回复此楼

» 猜你喜欢

让人迷茫的原因只有一个,那就是本该拼搏的年纪,却想得太多,做得太少
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

智能机器人

Robot (super robot)

我们都爱小木虫

找到一些相关的精华帖子,希望有用哦~

科研从小木虫开始,人人为我,我为人人
相关版块跳转 我要订阅楼主 springwu 的主题更新
信息提示
请填处理意见