解 二 元 一 次 方 程 — — — 拓 展 欧 几 里 得 算 法
《二元一次方程组》蕴涵的数学思想方法
《二元一次方程组》蕴涵的数学思想方法
一、“转化”思想
“转化”思想就是将复杂的、陌生的问题迁移为简单的、熟悉的问题进行求解,这是学习新知识,研究新问题的一种基本方法.本章中二元一次方程组的解法的实质就是借助“消元”(加减消元和代入消元是两种最常见的消元方法)的方法将“二元”转化为“一元”.
例1:解方程组
分析1:由于①中x系数为1,可将①变形为x=-2y-2③,然后将③代入②,消去x,得到关于y的一元一次方程.从中求出y,然后将y代入③中求x.
解法1:由①得x=-2y-2, ③
③代入②中得7(-2y-2)-4y=-41,y=.
将y=代入③中得x=-5.∴
说明:本题通过“代入”达到消元的目的,将解二元一次方程组的问题转化为解一元一次方程的问题.
分析2:①和②中y的符号相反,且系数成2倍关系,故将①×2+②可消去y.
解法2:①×2+②得9x=-45,x=-5.
将x=-5代入①中得y=.∴
说明:本题通过“加减消元”,同样将解二元一次方程组的问题转化为解一元一次方程的问题.
例2:已知与是同类项,求m、n的值.
分析:同类项要求相同字母的指数相同,故有解这个方程组可求得m、n.
解:依题意有解得
说明:本题运用了转化的思想.第一,根据同类项的意义,将求解问题转化为解关于m、n的二元一次方程组的问题.第二,运用“消元”的方法,将解二元一次方程组问题转化为解一元一次方程问题,当然本题还运用了
方程的思想.
二、方程的思想
将数量关系转化为方程(组)的形式,通过解方程(组)使问题得以解决的思维形式就是方程的思想,本章中有关计算和解决有关应用题所运用这种思想。用方程的思想解决往往比用其它方法简捷、方便得多。
数学发展简史
数学发展简史数学发展史大致可以分为四个阶段。
一、数学形成时期(——公元前5 世纪)
建立自然数的概念,创造简单的计算法,认识简单的几何图形;算术与几何尚未分开。
二、常量数学时期(前5 世纪——公元17 世纪)
也称初等数学时期,形成了初等数学的主要分支:算术、几
何、代数、三角。该时期的基本成果,构成中学数学的主要内容。
1.古希腊(前5 世纪——公元17 世纪)
毕达哥拉斯——“万物皆数”
欧几里得——《几何原本》
阿基米德——面积、体积
阿波罗尼奥斯——《圆锥曲线论》
托勒密——三角学
丢番图——不定方程
2.东方(公元2 世纪——15 世纪)
1)中国
西汉(前2 世纪)——《周髀算经》、《九章算术》
魏晋南北朝(公元3 世纪——5 世纪)——刘徽、祖冲之出入相补原理,割圆术,算π
宋元时期(公元10 世纪——14 世纪)——宋元四大家杨辉、秦九韶、李冶、朱世杰
天元术、正负开方术——高次方程数值求解;
大衍总数术——一次同余式组求解
2)印度
现代记数法(公元8 世纪)——印度数码、有0;十进制(后经阿拉伯传入欧洲,也称阿拉伯记数法)
数学与天文学交织在一起
阿耶波多——《阿耶波多历数书》(公元499 年)
开创弧度制度量
婆罗摩笈多——《婆罗摩修正体系》、《肯特卡迪亚格》代数成就可贵
婆什迦罗——《莉拉沃蒂》、《算法本源》(12 世纪)算术、代数、组合学
3)阿拉伯国家(公元8 世纪——15 世纪)
花粒子米——《代数学》曾长期作为欧洲的数学课本
“代数”一词,即起源于此;阿拉伯语原意是“还原”,即“移项”;此后,代数学的内容,主要是解方程。
《九章算术》读后感
《九章算术》读后感
《九章算术》读后感(一)
《九章算术》是我国著名的《算经十书》之一,是十部算经中最重要的一部,是周秦至汉代中国数学发展的一部总结性的有代表性的著作。这部伟大的著作对以后中国古代数学发展所产生的影响,正象古希腊欧几里德《几何原本》对西方数学所产生的影响一样,是非常深刻的。
《九章算术》最初是由谁、在什么时候开始编纂的,现在已经难以确考了。据数学史家们研究,这部著作是我国秦汉时期的数学家们历时一,二百年之久的智慧结晶,汇集了当时数学研究的主要成就,至迟在公元一世纪时形成了流传至今的定本。在此后一千多年间,《九章算术》一直是我国的数学教科书。它还影响到国外,朝鲜和日本也都曾把它当作教科书。书中不少题目,后来还出现于印度的数学著作中,并且传到了中世纪的欧洲。我国古代数学家刘徽(魏晋时人,生卒年不详)曾为该书作注。
《九章算术》是以数学问题集的形式编写的,共收集二百四十六个问题及各个问题的解答,按性质分类,每类为一章,计有方田、粟米、衰分,少广,商功、均输、盈不足、方程和勾股九章故称《九章算术》。
《九章算术》中的各类数学问题,都是从我国古代人民丰富的社会实践中提炼出来的,与当时的社会生产、经济,政治有着密切的联系。
在同一时期的世界其他国家和地区,很难找到一部数学著作象?九章算术》这样,包罗了如此丰富的深刻的数学知识。
《九章算术》的意义还远不止于它在中国数学史上的重要地位,更以一系列“世界之最”的成就,反映出我国古代数学在秦汉时期已经取得在全世界领先发展的地位。这种领先地位一直保持到公元十四世纪初。
一元二次方程的解法——穿越古今的配方
一元二次方程是代数学中的基本概念之一,它在数学理论和实际问题
中有着重要的应用。自古至今,人们就一直在探索一元二次方程的解法,并不断寻找更加简洁、通用的解法。本文将带您穿越古今,探寻
一元二次方程的解法,并比较不同时期的解法特点。
古代
1. 印度裂变法
在古代印度,《布拉马格普塔数学》一书中提出了利用“裂变法”来
解一元二次方程的方法。该书主要是由印度数学家布拉马格普塔所编写,裂变法主要是通过将一元二次方程的中间项拆分成两个部分,并
结合平方完成平方解法。
2. 空间几何法
古希腊数学家欧几里得提出了利用空间几何的方法来解一元二次方程,他将方程的解与平面几何图形相通联,从而用几何推导法来求解方程
的根。
中世纪
1. 求根公式的出现
在中世纪,一元二次方程的求解方法逐渐发展,数学家开始尝试总结
出通用的求根公式。其中,卡丹和维吉塔在16世纪提出了一元二次方程的求根公式,即在形如ax^2+bx+c=0的方程中,x=(-b±√(b^2-
4ac))/(2a)。
近代
1. 代数解法的完善
18世纪,拉格朗日提出了拉格朗日插值法,该方法是通过对一元二次方程进行代数推导,将方程化为特定形式,并通过变换来求解方程的根。
2. 牛顿迭代法
17世纪,牛顿提出了一种数值逼近的方法,即牛顿迭代法。该方法是通过不断迭代逼近方程的根,直至满足精度要求。
现代
1. 利用矩阵方法求解
20世纪,随着线性代数的发展,人们开始利用矩阵方法来解一元二次方程。通过将方程转化为矩阵形式,并进行行列式运算,可以求得方程的根。
2. 使用计算机辅助求解
随着计算机技术的飞速发展,人们可以通过编程语言和计算软件来求解一元二次方程。利用计算机的高速运算和精确性,可以快速得到方程的解。
一元二次方程的解法有哪些
一元二次方程的解法有哪些
一元二次方程指的是只含有一个未知数,并且未知数项的最高次数是2的整式方程。一元二次方程的解法有开平方法、配方法、因式分解法、求根公式法。
开平方法
形如(X-m)²=n (n≥0)一元二次方程可以直接开平方法求得解为X=m±√n。
①等号左边是一个数的平方的形式而等号右边是一个常数。
②降次的实质是由一个一元二次方程转化为两个一元一次方程。
③方法是根据平方根的意义开平方。
配方法
用配方法解一元二次方程的步骤:
①把原方程化为一般形式;
②方程两边同除以二次项系数,使二次项系数为1,并把常数项移到方程右边;
③方程两边同时加上一次项系数一半的平方;
④把左边配成一个完全平方式,右边化为一个常数;
⑤进一步通过直接开平方法求出方程的解,如果右边是非负数,则方程有两个实根;如果右边是一个负数,则方程有一对共轭虚根。
因式分解法
是利用因式分解的手段,求出方程的解的方法,是解一元二次方程最常用的方法。
分解因式法的步骤:
①移项,将方程右边化为(0);
②再把左边运用因式分解法化为两个(一)次因式的积;
③分别令每个因式等于零,得到(一元一次方程组);
④分别解这两个(一元一次方程),得到方程的解。
求根公式法
用求根公式法解一元二次方程的一般步骤为:
①把方程化成一般形式aX²+bX+c=0,确定a,b,c的值(注意符号);
②求出判别式△=b²-4ac的值,判断根的情况.
若△<0原方程无实根;若△>0,X=((-b)±√(△))/(2a)
如何解二元1次方程
如何解二元1次方程
解二元一次方程
解二元一次方程涉及使用代数技术求解未知数的值。以下步骤
提供了一种系统的方法来解决这些方程:
步骤 1:整理方程
将等式移项,以便所有 x 项位于一侧,所有 y 项位于另一侧。
步骤 2:求解一个变量
将一个变量的系数移到等式的另一侧,将其变为 1。
将等式两边除以该系数,得到该变量相对于另一个变量的解。
步骤 3:代入另一个变量
将步骤 2 中找到的解代入步骤 1 中整理过的方程中。
解出另一个变量,得到一个单独变量相对于另一个的解。
步骤 4:检验解
将求得的解代入原始方程中,以确保它们满足等式。
特殊情况:
无解方程:当两条直线平行且不重合时,方程组无解。
无穷多个解:当两条直线重合时,方程组有无穷多个解。
示例:
解决方程组:
```
2x + 3y = 11
-x + y = 3
```
步骤 1:整理方程
```
2x + 3y = 11
-x + y = 3
```
步骤 2:求解一个变量(x) ```
2x = 11 - 3y
x = (11 - 3y) / 2
```
步骤 3:代入另一个变量(y) ```
-x + y = 3
-(11 - 3y) / 2 + y = 3
```
步骤 4:解出 y
```
y = 4
```
步骤 5:代入求得的 y 值求 x ```
x = (11 - 3(4)) / 2
x = 1
```
检验解:
```
2(1) + 3(4) = 11
-1 + 4 = 3
```
解满足方程,因此 x = 1 和 y = 4 是方程组的解。
一元二次方程的几何解法演示
x
x
8
然后呢…
把右边面积为8x的长方形分成 四个面积为2x的小长方形。
x
x
8
花拉子米同志的亮点~
把这四个小正方形重新排列, 如下图示。
x
x
欧家(欧几里德)和花家都爱『补』…
补上四个面积为4的小正方形, 即得一个大正方形。
2+x+2
2+x+2
=33 根据……
S大正方形=33+4*S小正方形
又因为…… (大正方形的)面积的平方根=(大正方形的)
一元二次方程 的几何解法
花拉子米同志出场啦~撒花~
公元825年,阿拉伯数学家阿 尔·花拉子米用几何模型展现他
解一元二次方程式的方法。 这种方法就是我们如今仍在使
用的配方法。
一切从一个方程式开始……
花拉子米同志是这样做的…
把某个正方形沿着一边延伸8 个单位长,形成一个面积为 33平方单位的长方形。
X1=11, X2=-3
=33
2 =49
X+4
可是……
书记说要执果索因……
书记说要转化…
用代数君的话来讲, 配方法就是——
把等号左边的二次三项式 转化为完全平方式。
正方形是一种境界…
用几何君的话来讲, 就是把二次项转化为一个小正方形;
把一次项转化为一个长方形; 此图形再补上一些小的长/正方形(常数
演变探索解一元二次方程的方法演进
演变探索解一元二次方程的方法演进一元二次方程是数学中的基础概念之一,其解法探索经历了漫长的历史发展。本文将从古代的巴比伦时期开始,逐步介绍演变过程中的不同方法和成果。
一、巴比伦时期的演进
在公元前2000年左右,巴比伦人已经掌握了解一元二次方程的方法。他们通过实际问题的分析,逐渐总结出一些解方程的技巧。巴比伦时期的一元二次方程求解方法主要是基于几何图形的观察和推理,对于解方程这一抽象概念并没有明确的定义。
二、古希腊的创新
古希腊数学家欧几里得和阿基米德为解一元二次方程的演进做出了重要贡献。欧几里得发展了一种几何图形的方法,通过构建等高线和平行线等来解方程。他提出的“带有两个未知数的方程解法”成为之后的研究基础。
阿基米德则提出了一种名为“切线法”的近似解法。他通过逐步逼近的方法,将一元二次方程转化为一系列更简单的线性方程,然后通过逐步迭代求解逼近值。
三、中世纪的借鉴与发展
在中世纪,阿拉伯数学家的工作对一元二次方程解法的发展起到了
重要的推动作用。他们继承了古希腊的几何方法,但也引入了代数的
思想,推动了解方程的符号表示法的发展。
阿拉伯数学家们进一步完善了阿基米德的近似解法,提出了一种名
为“求解完全方程”的方法。他们通过引入新的变量,将二次方程转化
为一个完全平方的形式,从而得到解的精确值。
四、文艺复兴时期的突破
到了文艺复兴时期,数学家们开始着重研究方程的根与系数之间的
关系,推动了解一元二次方程的代数方法的发展。
数学家费拉里和卡尔丢斯等人发现,一元二次方程的解与其系数之
间存在着一定的关系。他们将解的概念明确化,并构建了一元二次方
[笔记]一元二次方程的几何解法
一元二次方程几何解法之欧几里得解法
今天,解一元二次方程的几何方法已经很少受到人们的注意了,对于那些认为学习数学就是学习解题的人来说,几何方法也没有多少实用价值,因为学生只要记住求根公式就可以解任意一个一元二次方程了。 但在历史上,几何方法的影响却要超过代数方法, 一元二次方程与曲线和几何图形的联系是那样的紧密,在我们使用代数方法为几何问题解决做出定量分析的同时,我们也可以使用几何的方法来求一元二次方程的精确解 这样有助于沟通两知识之间的联系,还数学知识整体的面貌,也有助于学生思维灵活性的形成 。从中我们还可以看到一元二次方程解法的发展演变 。根据有关文献资料,历史上有多种一元二次方程的几何解法。例如:欧几里得解法,三国时期赵爽的解法,阿拉伯数学家阿尔·花拉子米的解法,卡莱尔的方法斯陶特的方法等。此次我们仅针对欧几里得解法进行讲解。
下面我们用超级画板展示两命题 欧几里得《几何原本》第2 卷
命题5 如果平分一条线段,再将其分成不相等的两段. 则由不等两段构成的矩形与两分点之间一段上的正方形的和等于原来线段一半上的正方形。
用今天的符号写出来,2
2)2
()2(
b a b a ab +=-+
如图所示:
线段AB=a,BC=b,点D 是线段AC 的中点,2
2b
a b a a DB -=+-
=。
命题等价于证明D CG H
BCIK S S S 正方形矩形小黄色正方形=+
黄色部分为等式左右两边共同部分,问题转换为证明绿色矩形和黄色矩形面积相
同。
利用超级画板,通过翻转变换,可以看到绿色矩形与红色矩形完全重合。命题得证。
一元二次方程的解的解的思维拓展
一元二次方程的解的解的思维拓展一元二次方程的解的思维拓展
一元二次方程是数学中一种常见的代数方程,具有形式为
ax²+bx+c=0的特点,其中a、b、c为已知数,x为未知数。在学习一元二次方程解法的基础上,我们可以进行思维拓展,探索更多有趣的解题方法和应用。
一、二次方程的基本解法回顾
在开始拓展思维之前,我们先回顾一下一元二次方程的基本解法。对于形如ax²+bx+c=0的二次方程,我们通常可以使用求根公式来找到其解。求根公式为x=(-b±√(b²-4ac))/(2a)。根据求根公式,我们可以分别计算得到二次方程的两个解。
二、思维拓展1:解的图像与方程参数的关系
在研究一元二次方程的解时,我们可以从解的图像入手,探索解与方程参数之间的关系。以方程y=ax²+bx+c为例,我们可以通过绘制二次曲线y=ax²+bx+c的图像,来观察解在图像上的表现。
1. 当a>0时,二次曲线开口朝上,图像在x轴上方。此时方程的两个解为实数解或重根,且图像与x轴交于两点,这两个点就是方程的解。
2. 当a<0时,二次曲线开口朝下,图像在x轴下方。此时方程的两个解为虚数解,无法在图像上直接观察到解的位置。
通过观察解在图像上的位置,我们可以发现解与方程参数a的正负关系以及图像开口的方向之间的一致性,进一步加深对解的性质和方程参数的理解。
三、思维拓展2:解与因式分解的关系
除了使用求根公式求解一元二次方程外,我们还可以运用因式分解的方法来推导和求解方程。通过将二次方程因式分解为两个一次因子的乘积形式,我们可以得到方程的两个解。
一元二次方程的解法一元二次方程解题步骤韦达定理公式变形6个
一元二次方程的解法
•一元二次方程的解:
能够使方程左右两边相等的未知数的值叫做方程的解。
解一元二次方程方程:
求一元二次方程解的过程叫做解一元二次方程方程。
•韦达定理:
一元二次方程根与系数的关系(以下两个公式很重要,经常在考试中运用到)一般式:ax2+bx+c=0的两个根x1和x2关系:
x1+x2= b/a
x1·x2=c/a
•一元二次方程的解法:
1、直接开平方法
利用平方根的定义直接开平方求一元二次方程的解的方法叫做直接开平方法。
直接开平方法适用于解形如的一元二次方程,根据平方根的定义可知,x+a 是b的平方根,当时,;当b<0时,方程没有实数根。
用直接开平方法求一元二次方程的根,一定要正确运用平方根的性质,即正数的平方根有两个,它们互为相反数,零的平方根是零,负数没有平方根。
2、配方法
配方法是一种重要的数学方法,它不仅在解一元二次方程上有所应用,而且在数学的其他领域也有着广泛的应用。
配方法的理论根据是完全平方公式,把公式中的a看做未知数x,并用x代替,则有。
3、公式法
公式法是用求根公式解一元二次方程的解的方法,它是解一元二次方程的一般方法。一元二次方程的求根公式:
求根公式是专门用来解一元二次方程的,故首先要求a≠0;有因为开平方运算时,被开方数必须是非负数,所以第二个条件是b24ac≥0。即求根公式使用的前提条件是a≠0且b24ac≥0。
4、因式分解法
因式分解法就是利用因式分解的手段,求出方程的解的方法,这种方法简单易行,是解一元二次方程最常用的方法。
•韦达定理公式变形:x1²+x2²=(x1+x2)²2x1x2,1/x1²+1/x2²=(x1²+x2²)/x1x2,x1³+x2³=(x1+x2)(x1²x1x2+x2²)等。
数学发展史年表
约公元前3000年—前1700年
*(巴比伦)楔形文字泥版记数;采用60进制和10进制、位值制记数法.编制乘法表、平方表、立方表、倒数表等数表,并用以进行计算,解简单的一元二次方程等(尼普尔数学泥版文书).
*(埃及)象形文字纸草书记数;采用10进制累进记数法.能计算分数和分解分数为单位分数,计算三角形、梯形、圆面积和棱锥体体积等(莫斯科纸草书和兰德纸草书).
*(埃及)尼罗河定期泛滥,每年需要重新划定地界、测量地块面积,从而促使土地测量术——几何学的诞生(据希罗多德《历史》一书记载).
约公元前2500—前2100年
*(中)黄帝命“隶首作算数”(《世本》).
*(中)“古者倕为规、矩、准、绳,使天下仿焉.”(尸佼《尸子》)相传倕为黄帝时代人,规、矩、准、绳为四种几何测量工具,说明这时已有方、圆、平、直等概念.
*(中)大禹治水时“左准绳,右规矩”(《史记?夏本纪》).
约公元前2000年
*(中)山东省城子崖遗址出土的陶器上,有数字刻符.
约公元前1400年
*(中)殷商时代甲骨文卜辞中,采用10进制记数法记数,其中最大的数是“三万”.
约公元前1100年
*(中)《易经》中“八卦”含有组合数学萌芽.
*(中)周公与商高问答中提出“勾三、股四、弦五”这一勾股定理重要特例(《周髀算经》).
f
约公元前1000—前770年
*(中)发明算筹,采用十进位值制记数法计数和计算(筹算).
*(中)周代将“数”列为“六艺”之一,以教国子(《周礼》).
约公元前800—前500年
*(印)宗教经典《吠陀》中,修筑祭坛的法典包含有某些几何知识.
解 二 元 一 次 方 程 — — — 拓 展 欧 几 里 得 算 法
POJ 1061 青蛙的约会(扩展欧几里得算法)
队内赛,这道题也不会,之前见过,知道用到数论知识就让sk先忽略,后来发现所有题都不怎么会,回过头来看的时候,没想到聪明的sk小同学居然会(师哥讲过我一直都没用过),然后回过头来补的时候也多亏sk 指点迷津
正题:扩展欧几里得算法
这个博客讲得很到位,讲几点自己的理解
1.扩展欧几里得算法返回值是最大公约数,在过程中改变了x,y的值,所以传参数时应该加上,而不用在意x,y的初始值
2.x,y只是 ax + by = gcd(a, b)对应的解,想要将其转换为ax1 + by1 = c 的解也很容易
x1 = (x - gcd(a, b)* c) % (b - gcd(a, b))(推导过程博客里有)
3.最后求出来的x1的值必须是非负数,并且是大于零的最优解,而x1 = (x - gcd(a, b)* c) % (b - gcd(a, b))对应的值有可能就是负数,所以保险起见 x1 = (x1 + b - gcd(a, b))?% (b - gcd(a,b)),这必定是最优解
4.(摘自百度百科)
根据欧几里得算法有 gcd(a,b) = gcd(b,a mod b);
则:ax1+ by1= bx2+ (a mod b)y2;
即:ax1+ by1= bx2+ (a - [a - b] * b)y2=ay2+ bx2- [a - b] * by2;
说明: a-[a-b]*b即为mod运算。[a-b]代表取小于a-b的最大整数。
也就是ax1+ by1 == ay2+ b(x2- [a - b] *y2);
一元二次方程的解法解题步骤是什么
一元二次方程的解法解题步骤是什么
一元二次方程的解法有公式法、配方法、直接开平方法、因式分解法。一元二次方程经过整理都可化成一般形式ax²+bx+c=0(a≠0)。其中ax²叫作二次项,a是二次项系数;bx叫作一次项,b 是一次项系数;c叫作常数项。
1
方法一、公式法
先判断△=b²-4ac,
若△<0原方程无实根;
若△=0,
原方程有两个相同的解为:
X=-b/(2a);
若△>0,
原方程的解为:
X=((-b)±√(△))/(2a)。
方法二、配方法
先把常数c移到方程右边得:
aX²+bX=-c
将二次项系数化为1得:
X²+(b/a)X=- c/a
方程两边分别加上(b/a)的一半的平方得:
X²+(b/a)X +(b/(2a))²=- c/a +(b/(2a))²
方程化为:
(b+(2a))²=- c/a +(b/(2a))²
①、若- c/a +(b/(2a))²<0,原方程无实根;
②、若- c/a +(b/(2a))² =0,原方程有两个相同的解为X=-b/(2a);
③、若- c/a +(b/(2a))²>0,原方程的解为X=(-b)±√((b²-4ac))/(2a)。
2
学好一元二次方程,重要的是要学会背公式。除了最主要的求根公式你要背上外,就是要学会总结不同方程解决形式。形如x^2+2bx+b^2=0,你要能熟练的将其变为(x+b)^2=0这样的形式;形如x^2+(a+b)x+ab=0的形式,你要熟练将其变为(x+a)(x+b)=0;再高阶的,二次项前面也有系数的,你也要学会变形。
什么是数值计算
什么是数值计算?
(计算机科学技术百科全书清华大学出版社1998)
数值计算(numerical computation)是有效使用数字计算机求数学问题近似解的方法与过程,以及由有关理论所构成的学科。
数值计算是一门实用性很强的学科,近年来随着计算机的发展和广泛应用,许多计算领域的问题,如计算力学、计算物理、计算化学、计算经济学等新分支都可归结为数值计算问题。
简史早在公元前14世纪的商代就基本形成十进制的记数法,春秋战国时代筹算已得到普遍应用,并形成和发展了算筹作为通用有效的计算工具,以后改进演化为算盘,相应发展了珠算方法。
数值计算在古代已取得了重要成果。早在公元1世纪,汉代的“九章算术”记载了开平方、开立方、解一元二次方程和三元一次方程的方法。公元5世纪南北朝时期,著名数学家祖冲之算得圆周率π为3.14159265,精确到小数点后7位,这项纪录保持了近千年。南宋数学家秦九韶于1247年写成“数书九章”,提出的联立一次同余式和高次方程数值解的秦九韶法,比西方Euler和Horner于1819年提出的算法早五百多年。
随着近代数学的形成和发展,数值计算也取得了相应的进步。20世纪40年代中后期,电子计算机的出现与迅速发展,有力推动了数值计算的研究与发展,解决了许多难度与规模都很大的计算问题,提出了许多新的数值方法,数值计算在整个科学技术和经济生活中的重要性得到前所未有的体现,并获得极大的发展,形成了一门新的学科分支。
数值计算与计算机的发展相辅相成,相互促进。大量数值计算的需要,促使计算机体系结构及性能不断更新,而计算机的发展又推动着数值计算方法的发展,每当计算机发生一次变革,数值计算也产生一次飞跃。为适应现代计算机的飞速发展,对数值计算提出了新的要求,对原有计算方法提出了重新评价、筛选、改造和创新。与此同时,也涌现了许多新概念、新方法,从而构成了现代数值计算的新涵义,如计算机系统界面的多媒体化,给计算过程可视化提供了软件环境。
解 二 元 一 次 方 程 — — — 拓 展 欧 几 里 得 算 法
求解线性同余方程--扩展欧几里得
--求解ax=b(mod m) 返回0为无解,否则返回gcd(a,m)个mod m 意义下的解,用X[]存
int mod(int a, int b, int m)
return equation(a, m, b);
先看一道题目:
poj 2115 C Looooops 【扩展欧几里得】
Description:
A Compiler Mystery: We are given a C-language style for loop of type?
for (variable = A; variable != B; variable += C)
statement;
I.e., a loop which starts by setting variable to value A and while variable is not equal to B, repeats statement followed by increasing the variable by C. We want to know how many times does the statement get executed for particular values of A, B and C, assuming that all arithmetics is calculated in a k-bit unsigned integer type (with values 0 = x 2k) modulo 2k.?
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
欧几里得算法与扩展欧几里得算法(求二元一次不定方程、乘法逆元)
1.欧几里得算法,即辗转相除法。用于求两个整数的最大公约数比较方便,时间复杂度为O(logN)N为两个整数的规模。
最大公约数,是能够同时被两个整数整除的最大整数。
比如说,求56和21的最大公约数:(每行数分别代表a=56,b=21,a%b)此时得到最大公约数为7。
递归代码如下:
int gcd(int a, int b)
return b ? gcd(b, a%b) : a;
2.扩展欧几里得算法
顾名思义,扩展欧几里得算法就是对欧几里得算法的扩展,可以应用于求二元一次方程的通解、乘法逆元等。
对于上面的欧几里得算法,当递归到出口时,a=7,b=0。很容易就可以得到一组ax+by=7的解:x=1,y=0。
那么如何通过7x+y=7的解逆推出56x+21y=7的解呢?
对于欧几里得算法的每一个状态,都存在ax+by=gcd(a,b)的解,我们假设有这样两组解(且他们为相邻状态):
ax1+by1=gcd(a,b)
a'x2+b'y2=gcd(a',b')
那么可以知道:a'=b b'=a%b 且gcd(a',b')=gcd(b,a%b)=gcd(a,b),
所以有
ax1+by1=bx2+(a%b)y2 另a%b可写为 a-a-b
所以有 ax1+by1=bx2+(a-(a-b)b)y2
故ax1+by1=ay2+bx2+(a-b)by2
故ax1=ay2 by1 = b(x2+ (a-b)by2)
故 x1=y2 y1 = x2 +(a-b)y2
故可以得到x1,y1与x2,y2的关系 : x1=y2 y1 = x2 +(a-b)y2
我们已知的是最后一组解,那么就要根据最后一组解逆推上去,就可以得到ax+by=gcd(a,b)的一组解了。
代码如下:
int exgcd(int a, int b, intx, int y)
return a;
int r = exgcd(b, a%b, x, y); --递归到求出公约数,开始倒着求每一组的x,y。最后就得到这样一组特解了。
y = t - (a - b)*y;
return r;
现在,通过扩展欧几里得算法,可以求出ax+by=gcd(a,b)的一组特解。那么如何求其通解呢?
3.二元一次方程通解
假设求得的特解为ax0+by0=r ,r=gcd(a,b).
ax0+by0+ab*k-ab*k=r
a(x0+b*k)+b(y0-a*k)=r
x=x0+b*k 、y=y0-a*k
这样写,可能不同组解的跨度太大了,所以可以写成
x=x0+(b-r)*k 、 y=y0-(a-r)*k
对于ax+by =c,而c不是a和b的最大公约数,其通解可以用ax+by=gcd(a,b)的通解乘上 c-gcd(a,b)即可。
这里好像有一个贝祖定理::对于给定的正整数a,b,方程ax+by=c 有整数解的充要条件为c是gcd(a,b)的整数倍。
4.乘法逆元
另外,扩展欧几里得算法还可以用来求乘法逆元,首先看乘法逆元的定义:
如果ax≡1 (mod p),且gcd(a,p)=1(a与p互质),则称a关于模p 的乘法逆元为x。通俗点讲就是 a*x的结果取余p为1。这样就可以转换成求ax+py=1的解。
所以要求a*x+b*y=m,可以先求a*x+b*y=gcd(a,b).
Type?"help",?"copyright",?"credits"?or?"license"?for?more?in formation.
定义:对于不定方程:a*x + b*y = c,判断此不定方程有整数解的条件是gcd(a,b)|c
long long g = exgcd(b, a % b, x, y);
long long getInv3(long long a, long long p) {
基本算法:对于不完全为 0 的非负整数 a,b,gcd(a,b)表示 a,b 的最大公约数,必然存在整数对 x,y ,使得 gcd(a,b)=ax+by。
while(scanf("%d%d%d",a,b,k)!=EOF)
if(A==B) {cout"0"endl; continue;}
解释:设最大容量为 3 的是 A 号电容,另一个是 B 号电容,对应的操作是(充电 A)= (转移 A - B) = (充电 A)= (转移 A - B),这样 A 就是目标的 2 电量。
欧几里得算法