高斯列主元消元法

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 高斯列主元消元法
{
    class Program
    {
        //输入参数
        static void InPut(ref int n, ref double[,] a)
        {
            Console.Write("请输入方程的阶数:");
            //Parese函数:将数字型的string字符转化为int型(类型转化)
            n = int.Parse(Console.ReadLine());
            //开辟内存,指定下标
            a = new double[n, n + 1];
            Console.WriteLine("请输入方程的系数:");
            for (int i = 0; i < n; i++)
            {
                string r = Console.ReadLine();
                //Split函数:将字符串r拆分
                string[] rs = r.Split(' ');
                for (int j = 0; j < n + 1; j++)
                {
                    a[i, j] = double.Parse(rs[j]);
                }
            }
        }

        static void FindMaster(int 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
高斯列主元元法(Gaussian elimination with partial pivoting)是一种用于求解线性方程组的方法,它通过矩阵的行变换将线性方程组转化为上三角矩阵,然后通过回代求解得到方程组的解。在Matlab中,可以使用矩阵运算和函数来实现高斯列主元元法。 以下是高斯列主元元法在Matlab中的实现步骤: 1. 构建增广矩阵:将线性方程组的系数矩阵和常数向量合并成一个增广矩阵。 2. 遍历每一列:对于第i列,找到该列中绝对值最大的元素所在的行,并将该行与第i行交换。 3. 主元归一化:将第i行的主元素(即第i列的元素)除以主元素的值,使主元素变为1。 4. 元操作:对于第i+1行到最后一行,将第i行的倍数加到这些行上,使得第i列下方的元素都变为0。 5. 重复步骤2到步骤4,直到所有的主元素都不为0或者已经完成了所有的行变换。 6. 回代求解:从最后一行开始,依次求解每个未知数的值。 下面是一个示例代码,演示了如何使用Matlab实现高斯列主元元法: ```matlab function x = gaussianElimination(A, b) n = size(A, 1); Ab = [A, b]; % 构建增广矩阵 for i = 1:n-1 [~, maxRow] = max(abs(Ab(i:n, i))); % 找到主元所在的行 maxRow = maxRow + i - 1; if maxRow ~= i Ab([i, maxRow], :) = Ab([maxRow, i], :); % 交换行 end for j = i+1:n factor = Ab(j, i) / Ab(i, i); % 计算倍数 Ab(j, :) = Ab(j, :) - factor * Ab(i, :); % 元操作 end end x = zeros(n, 1); x(n) = Ab(n, n+1) / Ab(n, n); % 回代求解最后一个未知数 for i = n-1:-1:1 x(i) = (Ab(i, n+1) - Ab(i, i+1:n) * x(i+1:n)) / Ab(i, i); % 回代求解其他未知数 end end ``` 使用该函数可以求解线性方程组Ax=b,其中A为系数矩阵,b为常数向量。调用方式如下: ```matlab A = [2, -1, 3; 4, 2, -1; 3, 5, -2]; b = [9; 8; 3]; x = gaussianElimination(A, b); disp(x); ``` 这样就可以得到线性方程组的解x。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值