首页 > 其他分享 >Exgcd 和 Excrt 的一些推导

Exgcd 和 Excrt 的一些推导

时间:2024-09-14 17:15:01浏览次数:9  
标签:frac matrix 推导 pmod Exgcd Excrt ax gcd

Exgcd 和 Excrt 的一些推导

Exgcd

Exgcd 是用来求解二元一次不定方程的算法,即

\[ax+by=c \]

根据贝祖定理,该方程有解当且仅当 \(\gcd(a,b) \mid c\),所以只用求解

\[ax+by=\gcd(a,b) \]

又因为

\[\gcd(a,b)=\gcd(b,a \bmod b) \]

可以先求解

\[bx'+(a\bmod b)y'=\gcd(a,b) \]

变形得

\[bx'+(a-b \lfloor \frac{a}{b}\rfloor)y' = \gcd(a,b) \]

\[ay'+b(x'-\lfloor\frac{a}{b}\rfloor y')=\gcd(a,b) \]

对比方程 \(ax+by=\gcd(a,b)\),得

\[\left \{ \begin{matrix} x=y'\\ y=x'-\lfloor\frac{a}{b}\rfloor y' \end{matrix} \right. \]

在递归求 \(\gcd(a,b)\) 时顺便求出 \(x,y\) 即可。

对于方程 \(ax+by=c\) 的一组特解 \(x_0,y_0\),其通解可表示为

\[\left \{ \begin{matrix} x=x_0+kb\\ y=y_0-ka \end{matrix} \right. \text{ }\text{ } (k\in\mathbb{Z}) \]

而 Exgcd 求出的是 \(ax+by=\gcd(a,b)\) 的一组特解 \(x_0,y_0\)。

记 \(d=\gcd(a,b)\),方程 \(ax+by=c\) 的通解可表示为

\[\left \{ \begin{matrix} x=\frac{c}{d}x_0+\frac{b}{d}k \\ y = \frac{c}{d}y_0-\frac{a}{d}k \end{matrix} \right. \text{ } \text{ } (k \in \mathbb{Z}) \]

也可表示为

\[\left \{ \begin{matrix} x \equiv \frac{c}{d}x_0 \pmod{\frac{b}{d}}\\ y \equiv \frac{c}{d}y_0 \pmod{\frac{a}{d}} \end{matrix} \right. \]

这样我们可以求出 \(x,y\) 的最小正整数值。

Exgcd 还可以用来求解线性同余方程,即

\[ax \equiv b \pmod{m} \]

可转化为二元一次不定方程

\[ax+my=b \]

使用 Exgcd 求解即可。

Excrt

Excrt 是用来求解线性同余方程组的算法,即

\[\left \{ \begin{matrix} x \equiv a_1 \pmod{m_1}\\ x \equiv a_2 \pmod{m_2}\\ \dots \dots \dots \\ x \equiv a_n \pmod{m_n} \end{matrix} \right. \]

考虑已经求解出前 \(k-1\) 个方程组,如何与第 \(k\) 个方程合并。

记 \(x_0\) 为前 \(k-1\) 个方程组的解,\(M=\text{lcm}_{i=1}^{k-1} m_i\),\(x\) 为前 \(k\) 个方程组的解,有

\[x=x_0+tM \text{ } (t \in \mathbb{Z}) \]

代入原方程,有

\[x_0+tM \equiv a_k \pmod{m_k} \]

移项得

\[Mt\equiv a_k-x_0 \pmod{m_k} \]

变为线性同余方程,可以使用 Exgcd 求解出 \(t\) 的最小正整数解。

若该线性同余方程无解,则整个方程组无解。

将 \(t\) 代入原式求出 \(x\),将 \(x_0 \leftarrow x\),\(M \leftarrow \text{lcm}(M,m_k)\)。

这样就完成了一次合并。

依次将 \(n\) 个方程合并,就求出了整个方程组的解。

标签:frac,matrix,推导,pmod,Exgcd,Excrt,ax,gcd
From: https://www.cnblogs.com/maniubi/p/18414376

相关文章

  • 《深度学习》深度学习 框架、流程解析、动态展示及推导
    目录一、深度学习1、什么是深度学习2、特点3、神经网络构造1)单层神经元•推导•示例2)多层神经网络3)小结4、感知器神经网络的本质5、多层感知器6、动态图像示例1)一个神经元相当于下列状态: 2)两个神经元相当于下列所示:3)三个神经元相当于下图所示:7、多层感......
  • Hodgkin-Huxley Model 完全推导
    Ciallo~(∠・ω<)⌒★我是赤川鹤鸣。本文假设您已经初步了解了Hodgkin-HuxleyModel,这里只是针对其中的公式的一些推导。不会对其优缺点、特性、应用等进行详述。物理基础知识如果已学习过物理学中电流、电容、电导率的概念,可跳过此节。首先,让我们复习一下物理学中电流......
  • Diffusion系列 - DDPM 公式推导 + 代码 -(二)
    DenoisingDiffusionProbabilisticModel(DDPM)原理1.生成模型对比记真实图片为\(x_0\),噪声图片为\(x_t\),噪声变量\(z\sim\mathcal{N}(\mu,\sigma^2)\),噪声变量\(\varepsilon\sim\mathcal{N}(0,I)\),编码过程\(q\),解码过程\(p\)。GAN网络\[z\xrightarrow{p}\hat{......
  • 【无线通信发展史⑧】测量地球质量?重力加速度g的测量?如何推导单摆周期公式?地球半径R是
       前言:用这几个问答形式来解读下我这个系列的来龙去脉。如果大家觉得本篇文章不水的话希望帮忙点赞收藏加关注,你们的鼓舞是我继续更新的动力。我为什么会写这个系列呢?首先肯定是因为我本身就是一名从业通信者,想着更加了解自己专业的知识,所以更想着从头开始了解通信的来......
  • 《机器学习》PCA数据降维 推导、参数讲解、代码演示及分析
    目录一、主成分分析1、什么是主成分分析?2、什么是降维?3、如何进行主成分分析        1)数据标准化        2)计算协方差矩阵        3)计算特征值和特征向量        4)选择主成分        5)构建投影矩阵        6)数据降......
  • 《机器学习》 基于SVD的矩阵分解 推导、案例实现
    目录一、SVD奇异值分解1、什么是SVD2、SVD的应用        1)数据降维        2)推荐算法        3)自然语言处理3、核心        1)什么是酉矩阵    2)什么是对角矩阵4、分解过程二、推导1、如何求解这三个矩阵        ......
  • python——推导式
    推导式(Comprehensions)是Python中用于创建集合、列表、字典和集合的简洁语法。它们通过简化代码使其更具可读性,并且通常比使用传统循环创建对象的方式更高效。推导式有助于减少代码行数并提高代码的清晰度。1.推导式的基本概念推导式的基本思想是通过提供一个表达式和一个......
  • 提高SAR ADC精度的外围电路RC元件取值公式推导
    此笔记源起于使用ADC直接连接NTC测量温度的扩展,其实之前也记录过ADC前端RC电路元件如何的取值笔记,那时并不太明白,只是根据ADI的视频简单的记录了下计算公式和步骤。参考一:使用外部组件提高SARADC精确度参考二:通过单端ADC监测NTC热敏电阻电路 1.NTC测温电路,右边为......
  • 斐波那契数列相关性质推导及证明
    大部分是上课做的笔记,包含我自己的一些思考的推导,希望可以帮助到大家!(更好的阅读体验)洛谷专栏查看:点击此处\(fib_{n+k}=fib_n\timesfib_{k+1}+fib_{n-1}\timesfib_{k}\)经典模型:一段台阶有\(n\)阶,从第\(\mathbf{1}\)阶开始,每次可以向上跳\(1\)阶或\(2\)阶,跳到第......
  • 从菜鸟到高手:掌握Python推导式,让代码飞起来,列表、集合、字典,一网打尽,用Python推导式
    "在Python的广阔世界里,隐藏着一种让程序员们爱不释手的秘密武器——推导式。想象一下,你正站在数据处理的战场上,面对着成千上万条数据,需要快速筛选、转换、聚合。这时,你手中的列表推导、集合推导、字典推导就像三把锋利的剑,轻轻一挥,便能将复杂的数据操作化繁为简,让代码如同行云......