解方程与高斯消元

解决多元一次方程组:

n个方程n个未知数
高斯消元法:
思路:
1.把方程未知数的系数写成一个矩阵
2.消去x1,用除第一行以外的其他行减去第一行,写在原位上
3.同理第二步,消去第三行的x2
4.原来的矩阵会变成一个上三角矩阵
5.最后直接解方程
*如果当前方程需要消元的位置系数是0,就把当前方程和下面第一个非0的方程换一下位置
反正也不影响答案

代码实现:

void gauss()
{
    juzhen:m
    for(int i=1;i<=n;++i)
    {
        if(m[i][i]==0)
        {
            for(int j=i+1;j<=n;++j)
            {
                if(m[j][i])//如果找不到,那么可以随便取值,无所谓
                {
                    swap(m[i],m[j]);
                    break;
                }
            }
        }
        for(int j=i+1;j<=n;++j)
        {
            ratio=m[j][i]/m[i][i];
            for(int k=1;k<=n+1;++k)//k也可以从i开始
                m[j][k]-=m[i][k]*ratio;
        }
    }
    for(int i=n;i>=1;--i)
    {
        solution[i]=m[i][n+1];
        for(int j=i+1;j<=n;++j)
            solution[i]-=m[i][j]*solution[j];
        solution[i]/=m[i][i];
    }
}

还没编译过,不知道对不对。。

解决多元多次方程组

e.g.
f(x)=ax^5+bx^4+cx^3+dx^2+ex+f
解法:令x=1,2,3,4,5,带入方程,可得六个一次方程,然后用高斯消元
那么如果不一定是5次呢
用高斯消元造一个自动找规律机/滑稽,打表

时间: 2024-10-09 22:55:01

解方程与高斯消元的相关文章

ZOJ 2619 Generator (概率、AC自动机、高斯消元)

Generator 题目:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2619 题意:给定一个数N,代表可以选前N个字母.然后给定一个仅有前N个字母组成的字符串,问从空串开始构造,每次可以在已有基础上从前N个字母中挑选一个加在后面,问构造的字符串的长度期望是多少? 思路:如果给定的串长度为L,那么对于构造的串,对应的状态就是0到L之间的数.如果为L即为构造成功.记F[i] 为从i状态到达L状态期望的步数,那么对于0到L

【poj2947】高斯消元求解同模方程组【没有AC,存代码】

题意: p start enda1,a2......ap (1<=ai<=n)第一行表示从星期start 到星期end 一共生产了p 件装饰物(工作的天数为end-start+1+7*x,加7*x 是因为它可能生产很多周),第二行表示这p 件装饰物的种类(可能出现相同的种类,即ai=aj).规定每件装饰物至少生产3 天,最多生产9 天.问每种装饰物需要生产的天数.如果没有解,则输出"Inconsistent data.",如果有多解,则输出"Multiple so

UVA 1397 - The Teacher&#39;s Side of Math(高斯消元)

UVA 1397 - The Teacher's Side of Math 题目链接 题意:给定一个x=a1/m+b1/n,求原方程组 思路:由于m*n最多20,所有最高项只有20,然后可以把每个此项拆分,之后得到n种不同无理数,每一项为0,就可以设系数为变元,构造方程进行高斯消元 一开始用longlong爆了,换成分数写法也爆了,又不想改高精度,最后是机智的用了double型过的,不过用double精度问题,所以高斯消元的姿势要正确,并且最后输出要注意-0的情况 代码: #include <c

UVA 1397 - The Teacher&amp;#39;s Side of Math(高斯消元)

UVA 1397 - The Teacher's Side of Math 题目链接 题意:给定一个x=a1/m+b1/n.求原方程组 思路:因为m*n最多20,全部最高项仅仅有20.然后能够把每一个此项拆分.之后得到n种不同无理数,每一项为0.就能够设系数为变元.构造方程进行高斯消元 一開始用longlong爆了.换成分数写法也爆了,又不想改高精度.最后是机智的用了double型过的,只是用double精度问题,所以高斯消元的姿势要正确,而且最后输出要注意-0的情况 代码: #include

HDU 3359 Kind of a Blur(高斯消元)

题意: H * W (W,H <= 10) 的矩阵A的某个元素A[i][j],从它出发到其他点的曼哈顿距离小于等于D的所有值的和S[i][j]除上可达点的数目,构成了矩阵B.给定矩阵B,求矩阵A. 题目先给宽再给高...坑我了一个小时 code /* 暴力确定每个位置有到那些位置的曼哈顿距离小于D 然后对你n*m个未知数,n*m个方程进行高斯消元 */ #include <iostream> #include <cstdio> #include <cmath> #

【BZOJ4820】[Sdoi2017]硬币游戏 AC自动机+概率DP+高斯消元

[BZOJ4820][Sdoi2017]硬币游戏 Description 周末同学们非常无聊,有人提议,咱们扔硬币玩吧,谁扔的硬币正面次数多谁胜利.大家纷纷觉得这个游戏非常符合同学们的特色,但只是扔硬币实在是太单调了.同学们觉得要加强趣味性,所以要找一个同学扔很多很多次硬币,其他同学记录下正反面情况.用H表示正面朝上,用T表示反面朝上,扔很多次硬币后,会得到一个硬币序列.比如HTT表示第一次正面朝上,后两次反面朝上.但扔到什么时候停止呢?大家提议,选出n个同学,每个同学猜一个长度为m的序列,当某

Codeforces Gym10008E Harmonious Matrices(高斯消元)

[题目链接] http://codeforces.com/gym/100008/ [题目大意] 给出 一个n*m的矩阵,要求用0和1填满,使得每个位置和周围四格相加为偶数,要求1的数目尽量多. [题解] 首先,如果确定第一排的填法,要求最终结果为偶数,那么就能推出第二排的填法,同理可以依次推出整个矩阵,因此我们设置第一排填法为未知数,可以将方程推到最后一排,因为n+1排填的数字一定是0,这样子就可以得到m个方程.高斯消元求解即可,因为在要求1最多,因此自由变元尽量设为1. [代码] #inclu

hdu3976--Electric resistance(高斯消元问题7)

Electric resistance Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Description Now give you a circuit who has n nodes (marked from 1 to n) , please tell abcdxyzk the equivalent resistance of the circuit bet

HDU 5119 Happy Matt Friends(DP || 高斯消元)

题目链接 题意 : 给你n个数,让你从中挑K个数(K<=n)使得这k个数异或的和小于m,问你有多少种异或方式满足这个条件. 思路 : 正解据说是高斯消元.这里用DP做的,类似于背包,枚举的是异或的和,给定的数你可以选择放或者不放,dp[i][j]代表的是前 i 个数中选择k个异或的和为j. 1 #include <stdio.h> 2 #include <string.h> 3 #include <iostream> 4 #define LL long long