线性方程组求解 [笔记]

资料

线性方程组 [Wiki]
https://zh.wikipedia.org/wiki/%E7%BA%BF%E6%80%A7%E6%96%B9%E7%A8%8B%E7%BB%84
高斯消元法 [Wiki]
https://zh.wikipedia.org/wiki/%E9%AB%98%E6%96%AF%E6%B6%88%E5%8E%BB%E6%B3%95
一般线性方程组解的结构
http://202.113.29.3/nankaisource/mathhands/linear%20algebra/s0504/s050402/t0504020001.htm
线性方程组求解教程
http://math.fudan.edu.cn/gdsx/JIAOAN/%E7%BA%BF%E6%80%A7%E6%96%B9%E7%A8%8B%E7%BB%84.pdf
浅谈异或方程组
https://www.zybuluo.com/Kurunie/note/118965
kuangbin的高斯消元模板
http://www.cnblogs.com/kuangbin/archive/2012/09/01/2667044.html

以上是学习的相关资料,自己就只贴个不完整的高斯消元模板

实数方程组求解

//实数线性方程组高斯消元求解
//齐次和非齐次都可解
double a[N][M+1];
double eps = 1e-8;
int gauss(int n, int m){
    //n个方程, m个变元, 增广矩阵的列数为m+1
    //我们只需要处理前m列即可
    int row,col;
    for (row=0,col=0;row<n&&col<m;row++,col++){
        //当前处理第col列, 第row行
        int p_row = row; //p_row 记录当前列元素绝对值最大的行, 做为主元行
        for (int i=row+1;i<n;i++){
            if ( fabs(a[i][col]) > fabs(a[p_row][col]) )
                p_row = i;
        }

        if (p_row!=row){ //把主元行交换至当前行
            for (int j=col;j<m+1;j++)
                swap(a[p_row][j], a[row][j]);
        }

        if ( fabs(a[row][col]) < eps ) {
            row--; //若当前行当前列元素为0则跳过, 同时矩阵的非零行数量(秩)不增加
            continue;
        }

        for (int i=row+1;i<n;i++){
            if ( fabs(a[i][col]) < eps ) continue; //若当前行当前列元素为0则跳过
            double pro = a[i][col]/a[row][col];
            for (int j=col;j<m+1;j++){
                a[i][j] -= pro*a[row][j];
                //对该行做一次初等变换
            }
        }
    }

    //系数矩阵的秩小于增广矩阵的秩 Rank(A) < Rank(A') 则方程组无解
    for (int i=row;i<n;i++){
        if ( fabs(a[i][col]) > eps ) return -1;
        //当前col指向增广矩阵的常数项列, 若row及以下的常数项存在非零项, 说明方程组无解
    }

    //系数矩阵的秩等于增广矩阵的秩, 则方程组有解, 有以下两种情况
    //增广矩阵的秩等于变元数量时, 方程组有唯一解, 自由变元数量为0
    //增广矩阵的秩小于变元数量时, 方程组有无穷多解, 自由变元数量为 m - row
    return m - row; //返回自由变元的个数
}

0/1异或方程组求解

int gauss(int n, int m) {
    //n个方程, m个变元, 增广矩阵的列数为m+1
    int row, col;
    for (row = 0, col = 0;row<n&&col<m;row++, col++) {
        //当前处理第col列, 第row行
        int p_row = row; //p_row 为主元所在行号
        for (int i = row + 1;i<n;i++) {
            if (a[i][col]>a[p_row][col])
                p_row = i;
        }
        if (p_row != row) { //把主元所在行与当前行交换
            for (int j = col;j<m + 1;j++)
                swap(a[p_row][j], a[row][j]);
        }
        if (a[row][col] == 0) { //若当前行主元为0则跳过, 并在下次继续处理此行的下一列元素
            row--;
            continue;
        }
        for (int i = row + 1; i < n;i++) {
            if (a[i][col] == 0) continue; //跳过0元素开头的行
            for (int j = col;j<m + 1;j++)
                a[i][j] ^= a[row][j]; //做一次初等变换
        }
    }
    for (int i = row;i<n;i++) { //方程组无解
        if (a[i][col] != 0) return -1;
    }
    return m - row; //有解, 返回自由变元的个数
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,948评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,371评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,490评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,521评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,627评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,842评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,997评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,741评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,203评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,534评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,673评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,339评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,955评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,770评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,000评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,394评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,562评论 2 349

推荐阅读更多精彩内容

  • ## 2015.06.05 - [开源利弊浅谈 - 张超耀](移动组周技术分享总结#开源利弊浅谈---张超耀) -...
    XcodeYang阅读 1,487评论 1 3
  • 【Aipm引导页】 https://58976235.wodemo.net/down/20170514/44034...
    Mr_洛寒阅读 2,561评论 3 5
  • (开始) (标题)iApc(/标题)(链接)https://duming666.wodemo.net/down/2...
    独名阅读 1,531评论 1 3
  • 阅读的部分是P149-187,关键词:简化、大脑需要“断舍离” 今天在时间管理上有意识做到:减少看手机的时间...
    猫咪小六阅读 101评论 0 0
  • 青山平地起,绿水自山川。 古井几重岁,鸳鸯八百年。 客船划断水,龙树盖了天。 脚下清溪在,诗歌不少篇。
    徐一村阅读 502评论 6 22