09-求方程的根
- 格式:doc
- 大小:122.00 KB
- 文档页数:6
方程的求根公式一元二次方程的回顾和启示学过初中数学都知道对于任何一个实系数一元二次方程ax^2+bx+c=0,~a \neq 0 ,通过配方可以得到\left(x+\dfrac{b}{2a}\right)^2=\dfrac{b^2-4ac}{4a^2} ,根据判别式 \Delta=b^2-4ac 的符号,可以判断方程实根的个数,并且可以得到求根公式。
x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}=-\frac{b}{2a}\pm\frac{\sqrt{\Delta}}{2a}\\要么是 2 个不同的实根 \Delta>0 ,要么是 1 个二重实根\Delta=0 ,要么是 1 对共轭虚根 \Delta<0 ;计算重数的情况下都是 2 个根。
记两根为x_1=\frac{-b+\sqrt{b^2-4ac}}{2a} ,~ x_2=\frac{-b-\sqrt{b^2-4ac}}{2a} \\可以直接验证韦达定理:两根之和 x_1+x_2=-\dfrac{b}{a} 以及两根之积x_1x_2=\dfrac{c}{a},判别式 \Delta=a^2(x_1-x_2)^2 .求根公式看上去复杂,但如果把上述两式代入求根公式,就可以得到x=-\frac{b}{2a}\pm\sqrt{\left(-\frac{b}{2a}\right)^2-\frac{c}{a}}=\frac{x_1+x_2}{2}\pm\sqrt{\left(\frac{x_1-x_2}{2}\right)^2}=\frac{x_1+x_2}{2}\pm\frac{x_1-x_2}{2}\\。
注:如果 x_1,~x_2 是共轭虚根,x_1-x_2 就是纯虚数,对负数\left(\dfrac{x_1-x_2}{2}\right)^2 开方不能得到 \dfrac{|x_1-x_2|}{2} .几何意义:记 s=\dfrac{x_1+x_2}{2}=-\dfrac{b}{2a} 是两根的平均值,乘积为 p=x_1x_2=\dfrac{c}{a} . 如果 x_1,~x_2 都是实根,则d=\dfrac{|x_1-x_2|}{2}=\sqrt{s^2-p} 是根到平均值的距离。
数值分析实验(三)课题名称:利用四种方法求方程的根任课教师:辅导教师:专业班级:学号:姓名:实验编号:实验报告文件名:1.算法分析:求方程f(x)=x³-3*x-1=0的根。
1.对分区间法:f(x)在某一区间[a,b] 连续且端点出函数值异号,用中点的(a+b)/2平分区间,并计算处中点的函数值f((a+b)/2),若f(x)不等于0,每次改变区间范围。
具体步骤:1.找出f(x)=0的根的存在区间(a,b),并计算出端点的函数值f(a),f(b).2.计算f(x)在区间中点的值f((a+b)/2).3.判断:若f((a+b)/2)近似为0,则停止。
否则,若f((a+b)/2)与f(a)异号,则跟位于(a,(a+b)/2),以(a+b)/2代替b,若f((a+b)/2)与f(b)异号,则跟位于((a+b)/2,b),以(a+b)/2代替a。
4.重复(2)(3)步,直到区间缩小到容许的误差范围内,此时,区间中点可作为所求的根。
2.弦位法:用过两点的直线近似曲线,用直线与x轴的交点近似曲线与x轴的交点,需f(x)在零点附近的有连续的二阶微商。
具体步骤: 1.选定初始值a,b,并计算f(a),f(b)。
2. 迭代公式x[i]=a[i]-(f1/(f2-f1))*(b[i]-a[i]);再求f(x[i]);3.判断:若f(x[i])近似为0,则停止。
否则,若f(x[i])与f(a)异号,则跟位于(a,f(a))和(x[i],f(x[i])),代替(a,f(a))( b,f(b)),若f(x[i])与f(b)异号,则跟位于(x[i],f(x[i]))和(b,f(b)),代替(a,f(a))( b,f(b))。
4.重复(2)(3)步,直到相邻两次迭代值之差到容许的误差范围内,此时,所得的根。
3.迭代法:已知f(x),保留一个x在左边,右边写为g(x),强令左边x=x[k+1],右边是关于x[k]的函数g(x),给定初始值x,构造x的序列,若x收敛,g(x)连续,则x的收敛值为f(x)的值。
牛顿迭代法求方程的根,公式牛顿迭代法是一种常用于求方程根的数值计算方法。
它可以用来解决各种类型的方程,包括线性方程、非线性方程以及高阶方程等。
牛顿迭代法的基本思想是通过迭代逼近的方式,找到方程的一个近似解。
首先,我们来看牛顿迭代法的基本原理。
假设我们要求解方程f(x)=0,其中f(x)是一个连续可导的函数。
牛顿迭代法的公式为:x[n+1] = x[n] - f(x[n])/f'(x[n])其中,x[n]表示第n次迭代的近似解,f'(x[n])表示函数f(x)在x[n]处的导数。
通过不断迭代,我们可以逐渐逼近方程的根。
接下来,让我们通过一个例子来说明牛顿迭代法的具体步骤。
假设我们要求解方程x^2-5=0的根。
首先,我们需要选择一个初始近似解x[0],可以选择任意一个数值。
为了简化计算,我们选择x[0]=2作为初始值。
第一步,我们计算出函数f(x)=x^2-5在x[0]=2处的导数f'(x)=2x。
代入公式,得到迭代公式为:x[1] = 2 - (2^2-5)/(2*2) = 2 - (4-5)/4 = 2 - (-1/4) = 2 + 1/4 = 2.25这样,我们得到了第一次迭代后的近似解x[1]=2.25。
第二步,我们继续使用迭代公式进行计算:x[2] = 2.25 - (2.25^2-5)/(2*2.25) = 2.25 - (5.0625-5)/(4.5) = 2.25 - (0.0625)/(4.5) ≈ 2.2361通过不断迭代,我们可以逐渐逼近方程的根。
当迭代得到的解足够接近方程的根时,我们可以停止迭代,并将该解作为方程的近似根。
牛顿迭代法的优势在于它收敛速度较快,尤其对于具有较好初值的问题,往往只需几次迭代就可以得到非常精确的根。
然而,牛顿迭代法也存在一些问题。
当初始值选择不当或者函数在某些位置处导数为零时,迭代过程可能会发散或者得到错误的根。
为了避免这些问题,我们需要在使用牛顿迭代法之前进行一些预处理工作。
主讲:黄冈中学高级教师一、一周知识概述1、一元二次方程的求根公式将一元二次方程ax2+bx+c=0(a≠0)进行配方,当b2-4ac≥0时的根为.该式称为一元二次方程的求根公式,用求根公式解一元二次方程的方法称为求根公式法,简称公式法.说明:(1)一元二次方程的公式的推导过程,就是用配方法解一般形式的一元二次方程ax2+bx+c=0(a≠0);(2)由求根公式可知,一元二次方程的根是由系数a、b、c的值决定的;(3)应用求根公式可解任何一个有解的一元二次方程,但应用时必须先将其化为一般形式.2、一元二次方程的根的判别式(1)当b2-4ac>0时,方程有两个不相等的实数根;(2)当b2-4ac=0时,方程有两个相等的实数根;(3)当b2-4ac<0时,方程没有实数根.二、重难点知识总结1、对于一元二次方程的各种解法是重点,难点是对各种方法的选择,突破这一难点的关键是在对四种方法都会使用的基础上,熟悉各种方法的优缺点。
(1) “开平方法”一般解形如“”类型的题目,如果用“公式法”就显得多余的了。
(2)“因式分解法”是一种常用的方法,一般是首先考虑的方法。
(3) “配方法”是一种非常重要的方法,一般不使用,但若能恰当地使用,往往能起到简化作用,思考于“因式分解法”之后,“公式法”之前。
如方程;用因式分解,则6391这个数太大,不易分解;用公式法,也太繁;若配方,则方程化为,就易解,若一次项系数中有偶因数,一般也应考虑运用。
(4)“公式法”是一般方法,只要明确了二次项系数、一次项系数及常数项,若方程有实根,就一定可以用求根公式求出根,但因为要代入(≥0)求值,所以对某些特殊方程,解法又显得复杂了。
2、在运用b2-4ac的符号判断方程的根的情况时,应注意以下三点:(1)b2-4ac是一元二次方程的判别式,即只有确认方程为一元二次方程时,才能确定a、b、c,求出b2-4ac;(2)在运用上述结论时,必须先将方程化为一般形式,以便确认a、b、c;(3)根的判别式是指b2-4ac,而不是三、典型例题讲解例1、解下列方程:(1);(2);(3).分析:用求根公式法解一元二次方程的关键是找出a、b、c的值,再代入公式计算,解:(1)因为a=1,,c=10所以所以(2)原方程可化为因为a=1,,c=2所以所以.(3)原方程可化为因为a=1,,c=-1所以所以;所以.总结:(1)用求根公式法解一元二次方程首先将方程化为一般形式;如果二次项系数为负数,通常将其化为正数;如果方程的系数含有分母,通常先将其化为整数,求出的根要化为最简形式;(2)用求根公式法解方程按步骤进行.例2、用适当方法解下列方程:① ②③ ④⑤ ⑥⑦分析:要合理地选用适当的方法解一元二次方程,就必须熟悉各种方法的优缺点,处理好特殊方法和一般方法的关系。
一、引言在数学中,一元二次方程是一种常见的数学问题,其解法是学习数学和编程的重要基础。
在本文中,我将使用C++语言来探讨求解一元二次方程的根的方法,并对其进行详细的阐述和讨论。
二、一元二次方程的定义一元二次方程是指形如ax^2 + bx + c = 0的方程,其中a、b、c为常数且a不等于0。
解一元二次方程的关键在于求解方程的根,也就是求出方程中x的取值。
三、求解一元二次方程的根在C++语言中,可以通过公式法、因式分解法和图像法等多种方式来求解一元二次方程的根。
下面我将逐一进行详细介绍和示例说明。
3.1 公式法对于一元二次方程ax^2 + bx + c = 0,其根可以通过以下公式来求解:\[x = \frac{{-b \pm \sqrt{{b^2 - 4ac}}}}{{2a}}\]在C++语言中,可以通过以下代码来实现一元二次方程的根的求解:```cpp#include <iostream>#include <cmath>using namespace std;int main() {double a, b, c, x1, x2, discriminant;cout << "Enter the value of a, b, and c: ";cin >> a >> b >> c;discriminant = b * b - 4 * a * c;if (discriminant > 0) {x1 = (-b + sqrt(discriminant)) / (2 * a);x2 = (-b - sqrt(discriminant)) / (2 * a);cout << "The roots are real and different. They are: " << x1 << " and " << x2;} else if (discriminant == 0) {x1 = x2 = -b / (2 * a);cout << "The roots are real and same. They are: " << x1; } else {double realPart = -b / (2 * a);double imaginaryPart = sqrt(-discriminant) / (2 * a);cout << "The roots areplex and different. They are: " << realPart << " + " << imaginaryPart << "i and " << realPart << " - " << imaginaryPart << "i";}return 0;}```3.2 因式分解法一元二次方程的根也可以通过因式分解法来求解。
数学上的求根公式在咱们学习数学的旅程中,求根公式那可是个相当重要的家伙!就像是一把神奇的钥匙,能帮咱们打开方程世界的大门。
我记得之前有个学生叫小李,那孩子可聪明啦,但一开始面对求根公式的时候,也是一头雾水。
当时我们正在学习一元二次方程,讲到求根公式的时候,他那迷茫的小眼神就一直盯着黑板,手里的笔不停地转啊转。
求根公式是对于一元二次方程 ax² + bx + c = 0(a≠0)而言的,它的表达式是 x = [-b ± √(b² - 4ac)] / (2a)。
这个公式看起来有点复杂,一堆字母和符号堆在一起,可把不少同学给难住了。
咱们来仔细瞅瞅这个公式。
这里的 a、b、c 分别是方程里的二次项系数、一次项系数和常数项。
根号下的 b² - 4ac 被称为判别式,用希腊字母Δ 表示。
要是Δ > 0,方程就有两个不相等的实数根;要是Δ = 0,方程就有两个相等的实数根;要是Δ < 0,方程就没有实数根,只有复数根。
小李课后跑来问我:“老师,这求根公式到底咋用啊?”我就给他举了个例子。
比如说方程 x² - 5x + 6 = 0 ,这里 a = 1,b = -5,c = 6 ,先算Δ = (-5)² - 4×1×6 = 25 - 24 = 1 > 0 ,说明有两个不相等的实数根。
然后把数字代入求根公式,x = [ -(-5) ± √1 ] / (2×1),也就是 x = (5± 1)/ 2 ,算出来 x₁ = 3 ,x₂ = 2 。
小李听着听着,眼睛逐渐亮了起来,好像突然开窍了。
之后他自己做练习题的时候,一开始还是会犯错,不是符号弄错了,就是计算出错。
但他不气馁,一直努力,到后来,他用求根公式解题那叫一个熟练。
其实啊,求根公式不仅仅是用来解题的工具,它还蕴含着数学的美妙和逻辑。
当我们通过这个公式算出方程的根时,那种成就感真的无法言喻。
原题: 求解一元二次方程的根。
原题:求解一元二次方程的根一元二次方程是指只含有一个未知数的二次方程,其一般形式为 ax^2 + bx + c = 0,其中 a、b、c 是已知数,且a ≠ 0。
解一元二次方程的根可以使用以下方法:1.公式法:一元二次方程的根可以通过求解以下公式得到:x = (-b ± √(b^2 - 4ac)) / 2a其中,±表示两个不同的解,√ 表示平方根。
2.因式分解法:如果一元二次方程可以进行因式分解,则可以通过因式分解的办法求解方程的根。
例如,对于方程 x^2 + 5x + 6 = 0,可以将其因式分解为 (x + 2)(x + 3) = 0,从而得到两个根 x = -2 和 x = -3。
3.配方法:一些特殊的一元二次方程可以通过配方法得到其根。
例如,对于方程 x^2 - 6x + 9 = 0,可以进行配方法得到 (x - 3)^2 = 0,从而得到一个重根 x = 3。
4.求解顶点法:一元二次方程的图像是一个抛物线,其顶点坐标可以通过求解以下公式得到:x = -b / 2ay = f(x) = (-b^2 + 4ac) / 4a其中,x、y 分别表示顶点的横纵坐标。
需要注意的是,解一元二次方程时,首先需要判断方程是否有解。
当判别式Δ = b^2 - 4ac 大于等于 0 时,方程有实数根;当判别式Δ 小于 0 时,方程无实数根。
另外,如果一元二次方程的系数a、b、c 不是实数,而是复数,则可以将方程的求解转化为求解复数根的问题。
通过以上方法,可以求解出一元二次方程的根,进而解决与根相关的实际问题或数学推导。
河北工业大学计算机软件技术基础(VB)
课程设计任务书
本题难度级别:B 实现基本要求代码: 约250行主要涉及: 基本控件及算法
一、设计题目:求方程的根(出题人:杨素梅)
说明:把三种常用的求方程的根的算法通过设计的界面实现出来。
图1 运行界面图
二、目的与要求
1.目的
培养学生综合利用VB语言进行程序设计的能力,主要是培养学生利用VB的标准控件和基本算法进行应用程序设计的技能。
2.基本要求
⏹将若干个指定的方程显示到组合框中,以便选择。
⏹要求实现牛顿迭代法和二分法两种最基本的算法。
⏹使用Option控件进行算法的选择。
⏹使用列表框分别显示迭代或二分的过程结果。
⏹将迭代或二分的结果保存到文件中
3.创新要求
在基本要求达到后,必须进行创新设计,创新点可以自己选择,方向提示如下(也可以自己拟订):
★增加求解算法,比如弦截法。
★增加结果的图形显示功能
★自己创新
三、设计方法和基本原理
1.问题描述
程序界面较简单见题图,大家都应该较容易理解,还需要说一下吗?
2.问题的解决方案
①设计程序界面
因为用的全是基本控件,界面设计没有什么难度,照样子拼就可以了。
②编写代码
代码主要包括事件处理过程。
事件处理包括下面的主要事件:
Private Sub Form_Activate()
作一些初始化的工作。
主要是所求方程的选择。
Command1_Click() ‘主要功能的实现
根据combo1组合框中选择的方程和单选按钮对求解方程算法的选择进行相应的方程求解并把过程结果显示到指定的列表框中。
Command2_Click() 保存迭代结果功能。
Command5_Click() 保存二分结果功能。
四、主要技术问题的描述
本题中的难点并不在于界面设计。
核心问题在于根据选择的方程以及选择的算法实现对方程根的求解。
具体求解算法的原理都在教材上。
都是最基本的算法。
原始方程通过组合框来选择,所以在程序中要判断选定了哪个方程来决定FX,FX1或FX2的表示,方程需要在Form_Activate()事件中进行初始化。
Command1_Click()事件中,需要判断选择的方程,还需要判断选择的求根算法,所以需要用到IF的嵌套结构。
主要程序段如下:
If Option1(0).Value = True Then
List1(0).Clear
If Combo1.ListIndex = 0 Then
aaa:
x = InputBox("x0的值")
n = 0
x0 = x
Do
n = n + 1
x0 = x
fx0 = 3 * x0 ^ 7 - 4 * x0 + 6
f10 = 21 * x0 ^ 6 - 4
x = x0 - fx0 / f10
List1(0).AddItem "n=" & n & "," & "x=" & x
Loop While Abs(x - x0) > 0.000001 And Abs(fx0) > 0.000001 And n <= M
If n > M Then
MsgBox "初值不对,请重新选择!"
GoTo aaa
End If
ElseIf Combo1.ListIndex = 1 Then
ElseIf Combo1.ListIndex = 2 Then
Else
MsgBox "请选择函数"
End If
ElseIf Option1(1).Value = True Then
If Combo1.ListIndex = 0 Then
ElseIf Combo1.ListIndex = 1 Then
ElseIf Combo1.ListIndex = 2 Then
Else
MsgBox "初值不对,请重新选择!"
GoTo ccc1
End If
Else
MsgBox "请选择函数"
End If
Else
End If
最后,是文件的写操作功能来完成结果的保存,这是教材第7章中的内容,使用顺序文件的写操作就可以。
如
fileno = FreeFile
Open App.Path & "\a.txt" For Append As #fileno
For i = 0 To List1(0).ListCount - 1
ss = List1(0).List(i)
b = Split(ss, ",")
no = Val(Mid(b(0), 3))
gen1 = Val(Mid(b(1), 3))
Print #fileno, no, gen1
Next i
Close #fileno
五、参考资料
★Visual Basic 程序设计教程及Visual Basic 实验教程
★VB6.0程序员指南
★VB6.0控件参考手册
★MSDN中文版,课程设计网站上提供的其它资料。
六、设计部分的评分标准(本题难度为B,综合时要乘系数0.9)
[注:最后得分是根据本部分得分(占最大比例)以及课程设计期间纪律、设计报告书、答辩情况综合得出)。