线性不定方程与线性同余方程
线性不定方程解法
扩展欧几里得算法:
考虑求这个不定方程的一个解:
ax+by=c
- 可以证明该不定方程有解的充分必要条件是(a,b) | c。
证明:(a,b) | a且(a,b) | b,因为c=ax+by,故(a,b) | c。 - 于是可以把等式两边同时除上一个(a,b)转化为a,b互质的情况。
- 考虑a,b互质的情况。我们现在要解不定方程:
ax+by=c
先假设我们可以解出:
bx+(a mod b)y=c
那么有:
ax1+by1=c,
bx2+(a-[a/b])y2=c
对应一下a,b的系数可以得到:
x1=y2,
y1=x2-[a/b]y2
因为互质,所以最后一定能递推到a=1,b=0的情况,因为我们就相当在做辗转相除,而(a,b)=1,这时候不断回代就可以得到x1,y1。
附上代码:
void exgcd(int a,int b,int &x,int &y){if(b) exgcd(b,a%b,y,x),y-=a/b*x;else x=1,y=0; }
二元一次不定方程:
形如:
ax+by=c,a≠0,b≠0
的不定方程称为二元一次不定方程。
- 方程有解当且仅当(a,b) | c时。
- 将方程两边除上(a,b)得到a',b'互质的情况,然后用扩展欧几里得算法解出其一个特解,表示为x1,y1。
- 那么原方程组的通解可以表示为x=x1+(b/(a,b))t,y=y1-(a/(a,b))t t∈Z。
证明:由x1,y1可得方程组:
a'x+b'y=c',
a‘x1+b‘y1=c‘
两式相减得:
a'(x-x1)=b'(y1-y)
因为(a',b')=1,所以x-x1=b‘t,y1-y=a‘t,整理可得x=b’t+x1,y=y1-b‘t。
n元一次不定方程:
形如:
a1x1+a2x2+ •••• +anxn=c,ai≠0
的方程称为n元一次不定方程。
- 方程有解的充要条件:(a1,a2,•••• ,an)| c。
- 引入新变量t1,t2,••••,tn-2将不定方程拆为:
a1x1+a2x2=d1t1 d1=(a1,a2)
d1t1+a3x3=d2t2 d2=(d1,a3)
••••
dn-3tn-3+an-1xn-1=dn-2tn-2 dn-2=(dn-3,an-1)
dn-2tn-2+anxn=c
这n-1个不定方程,将等号右边的t看作常量,去等号左边的t看作是变量,求解最后一个不定方程然后回代t就好了。
一元线性同余方程(组)解法
一元线性同余方程:
形如:
ax Ξ b (mod m)
的方程称为一元同余方程,其等价形式为:
ax-my=b
用解二元一次不定方程的解法即可解。
一元线性同余方程组:
形如:
x Ξ b1 (mod m1)
x Ξ b2 (mod m2)
••••
x Ξ bn (mod mn)
的方程组称为一元线性同余方程组。一般有两种解法。
合并法(exCRT)
由
x Ξ b1 (mod m1)
x Ξ b2 (mod m2)
可得:
x=b1+m1y1 (*)
x=b2+m2y2
两式相减得到:
m1y1-m2y2=b1-b2
若该不定方程无解,则原同余方程组无解。若有解,设其中一个特解为z1,同余方程组的一个特解为x1。
其通解y1=z1+(m2/(m1,m2))t,带入方程(*)得到:
x=b1+m1z1+(m1m2/(m1,m2))t (**)
又由特解z1带入方程(*)得到:
x1=b1+m1z1
带入方程(**)得到:
x=x1+(m1m2/(m1,m2))t=x1+lcm(m1,m2)t
方程等价于:
x Ξ x1 (mod lcm(m1,m2))
将同余方程不断照这样合并,最后得到的就是原同余方程的解。
中国剩余定理(CRT)
当m1,m2,•••• ,mn 两两互质的时候,则对于任意整数b1,b2,•••• ,bn 此同余方程组都有解。且可以通过下面的方法构造解。
设M=Π1≤i≤nmi,并设Mi=M/mi,设Mi-1是Mi在mod mi意义下的逆元。则同余方程组的解为:
x=Σ1≤i≤nbiMi-1Mi
证明:对任意mi,都有x mod mi=Σ1≤i≤nbiMi-1Mi mod mi = bi(根据M的定义,M mod mi为0且除Mi以外其他的Mj中均含有mi,故模mi值也为0,而Mi-1Mi mod mi的值为1)
这说明x是原同余方程的解。设x1与x2均为原同余方程的解,那么有:
x1-x2 Ξ 0 (mod mi)
因为mi均互质,所以M | x1-x2,所以解均相差k个M,故在Σ1≤i≤nbiMi-1Mi后面加上kM构成x=kM+Σ1≤i≤nbiMi-1Mi。
mi不是两两互质可以拆成两两互质。
转载于:https://www.cnblogs.com/Asika3912333/p/11313006.html
线性不定方程与线性同余方程相关推荐
- 深度学习--TensorFlow(3)线性神经网络(线性输入非线性输入)(实现)
目录 一.线性神经网络(线性输入) 1.基础理论 2.线性输入代码 奇葩错误: 二.线性神经网络(非线性输入) 0.引言 1.基础理论 三.线性神经网络(非线性输入)实战 1.设置初始参数 2.正向传 ...
- 线性支持向量机、线性可分支持向量机、非线性支持向量机是怎么区分的?
SVM(Support Vector Machine)是一种二类分类模型. 它的基本模型是定义在特征空间上的间隔最大的线性分类器. 支持向量就是最大间隔或者分割超平面上的那几个临界点,具体入下图所示: ...
- 【数字信号处理】线性常系数差分方程 ( 线性常系数差分方程 与 边界条件 总结 ) ★★★
文章目录 一.线性常系数差分方程 与 边界条件 总结 一.线性常系数差分方程 与 边界条件 总结 " 线性常系数差分方程 " 中 , " 边界条件 / 初始条件 &quo ...
- 【数字信号处理】线性常系数差分方程 ( “ 线性常系数差分方程 “ 与 “ 线性时不变系统 “ 关联 | 根据 “ 线性常系数差分方程 “ 与 “ 边界条件 “ 确定系统是否是 线性时不变系统方法 )
文章目录 一." 线性常系数差分方程 " 与 " 线性时不变系统 " 关联 二.根据 " 线性常系数差分方程 " 与 " 边界条件 ...
- 五、【线性表】线性表的链式表示和实现
线性表的链式表示和实现 上节提到,由于顺序表的特点是逻辑关系上相邻的两个元素在物理位置上也相邻,因此可以随机存取表中任一元素.然而,这也导致了顺序表在执行插入或删除操作时,需要移动大量元素.本节来讨论 ...
- 四、【线性表】线性表的顺序表示和实现
线性表的顺序表示和实现 前文我们提到过线性表是逻辑结构,只说明了数据元素之间的相互关系,想要使用线性表,我们还需要在计算机上表示出这些数据元素以及元素之间的关系.而对于同一种逻辑结构,可以有多种存储结 ...
- 三、【线性表】线性表概述
线性表概述 Linear List 在了解线性表之前,我们首先了解一下什么是线性结构.线性结构的特点是:在数据元素的非空有限集中 存在唯一的一个被称为"第一个"的数据元素. 存在唯 ...
- 第二章:系统困境之 试图通过线性努力获得线性增长
我在农村长大,小时候跟妈妈去田里给玉米上化肥,我知道一个坑上 1 把化肥,这颗玉米收成可能多10%,但你想让收成达到 100%,解决方案并不是给一个坑抓 10 把化肥. 多抓 9 把化肥属于线性努力, ...
- python的线性链表_Python线性表——单链表-阿里云开发者社区
Python线性表--单链表 线性表简介 线性表是一种线性结构,它是由零个或多个数据元素构成的有限序列.线性表的特征是在一个序列中,除了头尾元素,每个元素都有且只有一个直接前驱,有且只有一个直接后继, ...
最新文章
- 学Python很久只学了皮毛?
- 重新分区_手机DATA重新分区教程(超详细)
- mysql 删除视图 命令_在MySQL中,删除视图使用(????)命令。
- Caffe官方教程翻译(2):Web demo
- 单文档应用程序弹出新对话框_简介——文档
- [spring]Attribute scope must be declared for element type bean
- 时尚的基因是创新 -- 旺旺平台产品线员工大会即兴发言提要
- MaxCompute作业日常监控与运维实践
- 2021:测试人员面试时都中过哪些套路?
- python经典程序实例-Python3经典100例(①)
- 运营前线2:一线运营专家的运营方法、技巧与实践03 3步策略做好内容管理
- 再谈Activator.CreateInstance(Type type)方法创建对象和Expression Tree创建对象性能的比较(更新版)...
- jconsole监控tomcat
- hive三种建表语句
- Python网络爬虫--项目实战--scrapy爬取贝壳网
- win10专业版激活后变成教育版怎么改回专业版
- linux 查找py文件命令_Linux常用命令(一)
- dnf超时空漩涡副本路线流程图_dnf怎么打超时空漩涡 dnf超时空漩涡打法攻略
- 《人机交互技术》 第八章 移动界面设计
- 入手评测 华硕灵耀Pro16和联想YOGA 16s哪个好