方程求根计算方法及实验

合集下载

大学数学实验报告----迭代(一)——方程求解

大学数学实验报告----迭代(一)——方程求解

Do M n , n, 2, 100
运行结果:
M n_Integer : Module y, k , m 2; k m ^ n 1 ;
x Mod k, n ;
Print n, " ", PrimeQ n , " ", x, "
", GCD m, n
Do M n , n, 2, 100
2 True 0 2 3 True 1 1 4 False 0 2 5 True 1 1 6 False 2 2 7 True 1 1 8 False 0 2 9 False 4 1 10 False 2 2 11 True 1 1 12 False 8 2 13 True 1 1 14 False 2 2 15 False 4 1 16 False 0 2 17 True 1 1 18 False 14 2 19 True 1 1 20 False 8 2 21 False 4 1 22 False 2 2 23 True 1 1 24 False 8 2 25 False 16 1 26 False 2 2 27 False 13 1 28 False 8 2 29 True 1 1 30 False 2 2 31 True 1 1 32 False 0 2 33 False 4 1 34 False 2 2 35 False 9 1 36 False 32 2 37 True 1 1 38 False 2 2 39 False 4 1 40 False 8 2
99 False 3 27 100 False 1 67 Null2
m=4 时
输入程序:
M n_Integer : Module y, k , m 4; k m ^ n 1 ; x Mod k, n ; Print n, " ", PrimeQ n , " ", GCD m, n , " ", x Do M n , n, 2, 100

数值分析综合实验报告

数值分析综合实验报告

一、实验目的通过本次综合实验,掌握数值分析中常用的插值方法、方程求根方法以及数值积分方法,了解这些方法在实际问题中的应用,提高数值计算能力。

二、实验内容1. 插值方法(1)拉格朗日插值法:利用已知数据点构造多项式,以逼近未知函数。

(2)牛顿插值法:在拉格朗日插值法的基础上,通过增加基函数,提高逼近精度。

2. 方程求根方法(1)二分法:适用于函数在区间内有正负值的情况,通过不断缩小区间来逼近根。

(2)Newton法:利用函数的导数信息,通过迭代逼近根。

(3)不动点迭代法:将方程转化为不动点问题,通过迭代逼近根。

3. 数值积分方法(1)矩形法:将积分区间等分,近似计算函数值的和。

(2)梯形法:将积分区间分成若干等分,用梯形面积近似计算积分。

(3)辛普森法:在梯形法的基础上,将每个小区间再等分,提高逼近精度。

三、实验步骤1. 拉格朗日插值法(1)输入已知数据点,构造拉格朗日插值多项式。

(2)计算插值多项式在未知点的函数值。

2. 牛顿插值法(1)输入已知数据点,构造牛顿插值多项式。

(2)计算插值多项式在未知点的函数值。

3. 方程求根方法(1)输入方程和初始值。

(2)选择求解方法(二分法、Newton法、不动点迭代法)。

(3)迭代计算,直到满足精度要求。

4. 数值积分方法(1)输入被积函数和积分区间。

(2)选择积分方法(矩形法、梯形法、辛普森法)。

(3)计算积分值。

四、实验结果与分析1. 插值方法(1)拉格朗日插值法:通过构造多项式,可以较好地逼近已知数据点。

(2)牛顿插值法:在拉格朗日插值法的基础上,增加了基函数,提高了逼近精度。

2. 方程求根方法(1)二分法:适用于函数在区间内有正负值的情况,计算简单,但收敛速度较慢。

(2)Newton法:利用函数的导数信息,收敛速度较快,但可能存在数值不稳定问题。

(3)不动点迭代法:将方程转化为不动点问题,收敛速度较快,但可能存在初始值选择不当的问题。

3. 数值积分方法(1)矩形法:计算简单,但精度较低。

力学中的计算方法(方程求根)

力学中的计算方法(方程求根)

ˆK x
Fixed-Point Iteration ( x K 1 x K ) 2 xK x K 2 x K 1 x K 2
y=x
x0 , x1 g( x0 ), x2 g( x1 ), ˆ 0 , x3 g( x2 ), x ˆ 1 , x4 g( x3 ), x ... ...
0 f ( x*) f ( x0 ) f ( x0 )( x * x0 ) y
x* x0
f ( xk ) x k 1 x k f ( x 线性 /* linear */ k)
f ( x0 ) f ( x0 )
x*
x
x0
只要 f C1,每一步迭代都有 xk x * , f ’( xk ) 0, 而且 lim k 则 x*就是 f 的根。


1 | x k 1 x k | | x * xk | 1 L

L | x1 x0 | | x * xk | 1 L

k
( k = 1, 2, … )
且存在极限
lim
k
x * x k 1 g x * x * xk

Fixed-Point Iteration
1 | x k 1 x k | ? ④ | x * xk | 1 L | x k 1 x k | | x * x k | | x * x k 1 | | x * x k | L | x * x k | | x k 1 x k | 来 Lk 可用 | x1 x0 | ? ⑤ | x * xk | 1 L 控制收敛精度
Bisection Method
When to stop?

数值计算方法方程求根

数值计算方法方程求根

数值计算⽅法⽅程求根数值计算⽅法实验报告实验内容:⽅程求根实验室:专业班级:学号:姓名:2.⽤MATBAB软件,⽤⼆分法求⽅程f(x)=x^3+4*x^2-10=0在区间[1,2]内根的近似值,为使误差不超过10^-5时所需要的⼆分次数。

function bisection_time(tolerance)a=1;b=2;k=0;while(abs(b-a)>tolerance)c=(a+b)/2;fa=a^3+4*a^2-10;fb=b^3+4*b^2-10;fc=c^3+4*c^2-10;if((fa==0)|(fc==0))disp(k);elseif(fa*fc<0)b=c;k=k+1;elseif(fc*fb<0)a=c;k=k+1;elseif(fb==0)disp(k);endendsoluntion=(a+b)/2;disp(soluntion);disp(k);运⾏结果1.36523176.取x0=1.5,⽤⽜顿迭代法求f(x)=x^3+4*x^2-10=0的跟的近似值function new(tolerance)x0=1.5;k=0;a=x0^3+4*x0^2-10;b=3*x0^2+8*x0;x1=x0-a/b;while(abs(x0-x1)>tolerance)x0=x1;k=k+1;a=x0^3+4*x0^2-10;b=3*x0^2+8*x0;x1=x0-a/b;enddisp(x1);disp(k);运⾏结果1.3652338.弦割法求⽅程f(x)=x^3-3*x^2-x+9=0在区间[-2,-1]内的⼀个实根近似值Xk,使|f(x) |<=10^-5. function xuange(k)x0=-2;x1=-1;t=0;a=x1^3-3*x1^2-x1+9;b=x0^3-3*x0^2-x0+9;x2=x1-a*(x1-x0)/(a-b);while(abs(x1-x0)>k)x0=x1;x1=x2;a=x1^3-3*x1^2-x1+9;b=x0^3-3*x0^2-x0+9;x2=x1-a*(x1-x0)/(a-b);t=t+1;enddisp(x1);disp(t)运⾏结果-1.52510269.⽤艾特肯算法求⽅程f (x )=x^3+4*x^2+10=0在区间[1,2]内的根的近似值(取X0=1.5,g (x )=410x ,精确到|Xk+1-Xk|<=10^-5,并与第2,3,6题的相应结果进⾏⽐较。

数值分析实验报告——方程求根

数值分析实验报告——方程求根

《数值分析》实验报告实验一方程求根一、实验目的:掌握二分法、Newton法、不动点迭代法、弦截法求方程的根的各种计算方法、并实施程序调试和运行,学习应用这些算法于实际问题。

二、实验内容:二分法、Newton法、不动点迭代法、弦截法求方程的根、程序的调试和运行,给出实例的计算结果。

观察初值对收敛性的影响。

三、实验步骤:①、二分法:定义:对于区间[a,b]上连续不断且f(a)·f(b)<0的函数y=f(x),通过不断地把函数f(x)的零点所在的区间一分为二,使区间的两个端点逐步逼近零点,进而得到零点近似值的方法叫二分法。

实现方法:首先我们设一方程400*(x^4)-300*(x^3)+200*(x^2)-10*x-1=0,并求其在区间[0.1,1]上的根,误差限为e=10^-4。

PS:本方法应用的软件为matlab。

disp('二分法')a=0.1;b=1;tol=0.0001;n0=100;fa=400*(a.^4)-300*(a.^3)+200*(a.^2)-10*a-1;for i=1:n0 p=(a+b)/2;fp=400*(p.^4)-300*(p.^3)+200*(p.^2)-10*p-1;if fp==0||(abs((b-a)/2)<tol)disp('用二分法求得方程的根p=')disp(p)disp('二分迭代次数为:')disp(i)break;end;if fa*fp>0 a=p;else b=p;end;end;if i==n0&&~(fp==0||(abs((b-a)/2)<tol)) disp(n0) disp('次二分迭代后没有求出方程的根')end;程序调试:运行结果:用二分法求得方程的根p=0.1108二分迭代次数为:14②Newton法定义:取定初值x0,找到函数对应的点,然后通过该点作函数切线,交x轴,得到新的横坐标值,然后找函数对应的点,做切线,得到新的横坐标值,重复上述步骤,多次迭代,直到收敛到需要的精度。

方程求根计算方法课件及实验教学

方程求根计算方法课件及实验教学
实践是关键
通过实际动手操作,学生能更好地理解方程求根的概念和方法,提高问题解决能力。
拓展思考
鼓励学生思考方程求根方法的适用性和限制性,帮助他们在实际问题中做出明智的选择。
迭代改进
教师应根据学生的实际情况和反馈,不断改进教学方法和实验设计,以提高教学效果。
方程求根计算方法课件及 实验教学
欢迎来到我们的课件,探索方程求根的计算方法和实验教学。方程求根在数 学中的重要性不可忽视,让我们一起开始这次精彩的探索之旅吧!
方程求根的重要性
方程求根是解决实际问题的关键步骤。它们在物理、工程学和经济学等领域中起着重要作用,帮助我们 找到未知数的值,并解决复杂的数学问题。
方程求根的一般方法
1 代入法
将可能的解代入方程,验证是否满足等式。这是一种常用的解方程方法。
2 消元法
通过逐步消除未知数的系数,将方程转化为更简单的形式,以便求解。
3 图像法
将方程的图像与坐标轴交点作为解。这种方法通常用于一次和二次方程。
二分法求实根
二分法是一种迭代方法,通过不断缩小搜索范围,找到实根的近似值。它基于连续函数的介值定理,是问题转化为一系列有根的逼近问题,通过多次逼近来找到实根。这种方法适用于未知数只存在 于特定区间的情况。
牛顿迭代法求实根
牛顿迭代法使用泰勒级数的概念,通过迭代逼近不断靠近方程的根。它是一 种快速收敛的方法,特别适用于函数具有光滑性的情况。
割线法求实根
割线法与牛顿迭代法类似,但它使用两个近似值来逼近根,从而更具稳定性。 割线法是一种可靠的求解非线性方程的方法。
方程求根的程序实现
选择合适的编程语言
根据问题的复杂性和计算要求,选择适用于方程求根的编程语言,如Python或MATLAB。

计算方法实验:方程求根

计算方法实验:方程求根

实验一 方程求根一、实验目的用不同方法求任意实函数方程f (x )=0在自变量区间[a ,b]内或某一点附近的实根,并比较方法的优劣性。

二、实验方法 (1)二分法对方程f (x )=0在[a ,b]内求根。

将所给区间二等分,在二分点x=(b-a)/2处判断是否f (x )=0。

若是,则有根x=(b-a)/2;否则继续判断是否f(a)·f(b)<0,若是,则令b=x ,否则令a=x 。

重复此过程,直至求出方程f(x)=0在[a ,b]内的近似根为止。

(2)迭代法将方程f (x )=0等价变换为x=φ(x )的形式并建立相应的近似根为止。

(3)牛顿法设已知方程f (x )=0的一个近似根x 0,则函数f (x )在点x 0附近可用一阶泰勒多项式p 1(x )=f (x 0)+f ’(x 0)(x-x 0)来近似,因此方程f (x )=0可近似表示为f (x 0)+f ’(x 0)(x-x 0)=0。

设f ’(x 0)≠0,则 x=x 0-f (x 0)/’f (x 0)取x 作为原方程新的近似根x 1,然后再将x 1作为x 0代入上式。

迭代公式为 x k+1=x k -f (x k )/f ’(x k )三、实验内容1)在区间[0,1]内用二分法求方程e x +10x-2=0的近似根,要求误差不超过0.5×10-3。

2)取初值x0=0,用迭代公式x k+1=(2-e x k )/10,(k=0,1,2,…)求方程e x + 10x-2=0的近似根,要求误差不超过0.5×10-3。

3)取初值x 0=0用牛顿迭代法求方程e x + 10x-2=0的近似根,要求误差不超过0.5×10-3。

四、实验程序 (1)二分法(2)迭代法(3)牛顿法五、实验结果(仅供参考)(1)x11=0.09033 (2)x5=0.09052 (3)x2=0.09052六、结果分析由上面的对二分法、迭代法、牛顿法三种方法的三次实验结果,我们可以得出这样的结论:二分法要循环k=10次,迭代法要迭代k=4次,牛顿法要迭代k=2次才能达到精度为0.5×10-3的要求,而且方程e x+10x-2=0的精确解经计算,为0.0905250,由此可知,牛顿法和迭代法的精确度要优越于二分法。

实验五 用Newton法计算方程的根

实验五 用Newton法计算方程的根

五. 讨论分析当初始值选取离零点较远时将导致算法无法使用,例如第三题,将初始值改为2就无法计算出结果了,显示如下例如求020sin 35=-+-x x e x 的根,其中控制精度1010-=eps ,最大迭代次数40=M ,在steffensen 加速迭代方法的程序中,我们只需改动:it_max=40; ep=1e-10, 其余不变 。

利用以上程序,我们只需输入:phi=inline('exp(5*x)-sin(x)+(x)^3-20');[x_star,index,it]=steffensen(phi,0.5)可得:x_star = 0.637246094753909index = 0it = 41观察上述结果,index = 0,it = 41表明迭代失败,所以使用以上方法估计的时候,应该尽量估计出解的范围,偏离不应过大,距离增加迭代次数增加,也有可能迭代失败六. 改进实验建议根据上述分析,我认为,应该先对函数作一个简图,方便知道解的大概位置,然后我们才将这个大概值代入Newton 法或者Steffensen 中进行求解。

当然,我们可以用其他数学软件实现Newton 迭代法,我们可以用z-z 超级画板,其操作流程为:牛顿迭代法的公式是:x n+1=x n-f(x n)/f'(x n)。

下面我们就用牛顿迭代法设计程序求方程f(x)=ln(x)+2*x-6的近似解。

(一)观察方程f(x)=0的零点位置(1)显示坐标系的坐标刻度。

(2)作出函数y=ln(x)+2*x-6的图像,如下图所示:可以观察到方程的根在区间[2,3]上,我们可以设定近似解的初始值为2。

(二)设计求方程近似解的程序(1)在程序工作区中输入:f(x){ln(x)+2*x-6;}执行后,返回结果为:>> f(x) #这表示在计算机已经完成了函数f(x)的定义。

(2)定义f(x)的导函数g(x),在程序工作区中输入:Diff(f(x),x);执行后,返回结果为:>> 2+1/x #得到了f(x)的导函数。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

xk x
bk
ak 2
x
bk
ak 2
bk1 ak1 4
b1 a1 2k
对于给定的精度 ,可估计二分法所需的步数 k :
ba 2k ε
k

log2
b
a
✓ 简单易用 ✓ 对 f (x) 要求不高,只要连续即可收敛
✓ 收敛速度慢 ✓ 无法求复根及偶重根
8
§5.1 二分法—例题分析
例2:求 f ( x) x3 x 1 0 在 (1, 1.5) 的实根, 要求误差不超过0.005。
1
0.8
0.6
0.4
0.2
f (x) x3 x 1 0
0
-0.2
-0.4
-0.6
-0.8
-1 1 1.05 1.1 1.15 1.2 1.25 1.3 1.35 1.4 1.45 1.5
3
本章讨论非线性方程 f (x) 的 0求根问题,
1. 其中一类特殊的问题就是多项式方程的求根。
f (x) an xn an1xn1 a1x a0 (an 0)
2. 另一类就是超越方程的求根。 cos(x)cosh(x) 1 0
4
基本概念 f (x) 0
方程 f (x) 0 的根 x* 又称为 f (x)的零点,它使 f (x*) 0 若 g(x*) 0 , f (x) 可表示为 f (x) (x x*)m g(x) , 其中 m 为正整数,且 f (x*) 0 。
的实根, 要求误差限为 102 。
解:令 f (x) 2x3 5x 1
f (1)<0, f (2)>0 记 I0=[1,2] , x0 =(1+2)/2=1.5, f (x0) =-1.75
因为 f (x0) f (1)>0 得 I1=[1.5, 2] , x1 =(1.5+2)/2=1.75
原理:若 f C[a, b],且 f (a) ·f (b) < 0,则 f 在 (a, b) 上必有一根。
y f (x)
a x*
b
x
称[a, b]为方程的有根区间。
6
§5.1 二分法—算法构造
a
xa1
x* xb2 b
给定有根区间 [a, b] ( f(a) ·f(b) < 0) 和 精度 或
1. 令 x = (a+b)/2
10
f g
g 3x3 7x2 1
0
0
0.2 0.4 0.6 0.8
1
1.2 1.4 1.6 1.8
2
15
§5.2 方程求根—不动点迭代法
基本原理
迭代法是一种逐次逼近法。它是求解代数方程 、超越方程及方程组的一种基本方法,但存在
计算方法
第五章 非线性方程 的数值解法
孙成立
南昌航空大学信息工程学院
1
§5 非线性方程的数值解法
§5.0 引言 §5.1 二分法 §5.2 迭代法 §5.3 牛顿(Newton)法 §5.4 迭代过程的加速方法
2
§5.1 引言
方程是在科学研究中不可缺少的工具, f ( x) 0 方程求解是科学计算中一个重要的研究对象. 几百年前就已经找到了代数方程中二次至 四次方程的求解公式;但是,对于更高次数的 代数方程目前仍无有效的精确解法; 对于无规律的非代数方程的求解也无精确解法. 因此, 研究非线性方程的数值解法成为必然. 本节主要研究单根区间上方程求根的各种近似算法.
2. 如果 b – a < 或 f (x) < , 停机,输出 x
3. 如果 f (a) f (x) < 0 , 则令 b = x,否则令 a = x, 返回第1步
用二分法求根,通常先给出 f (x) 草图以确定根的大概位置。 7
§5.1 二分法—误差分析
记 a1 = a, b1 = b, 第 k 步的有根区间为 [ ak , bk ]
13
程序算法说明:
a
a
x* b b
xk1 xk ε 或 f (x)
不能保证 x 的精 度
x*
x
14
§5.2 方程求根—不动点迭代法
基本原理 f (x) = 0 等价变换 x ( x)
f (x) 的根
60
( x) 的不动点
50
f 6(e x x)
40
30
20
3x3 7x2 1 6(ex x) 0
例1: 用二分法求方程 2x3 5x 1 0 在区间(1,2)内
的实根, 要求误差限为 102 。
5
4
f (x) 2x3 5x 1
3
2
1
0
-1
-2
-3
-4 1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2
9
§5.1 二分法—例题分析
例1: 用二分法求方程 2x3 5x 1 0 在区间(1,2)内
f (x1) f (1.5)<0 得 I2=[1.5, 1.75] , x2 =(1.5+1.75)/2=1.625 …….
I6=[1.681875, 1.6875],
I7=[1.671875, 1.679688]
b7 - a7=0.781310-2 < 10-2
x*x7 =1.6758
10
§5.1 二分法—算法步骤
12
x值 区间长 函数值 1.2500 0.2500 -0.2969 1.3750 0.1250 0.2246 1.3125 0.0625 -0.0515 1.3438 0.0313 0.0826 1.3281 0.0156 0.0146 1.3203 0.0078 -0.0187 1.3242 0.0039 -0.0021
当 m 1时,称 x*为单根,若 m 1称 x*为 f (x) 的 m 重根,或 f (x)的 m 重零点。 若 x*是 f (x)的 m重零点 且 g(x) 充分光滑,则
f (x*) f (x*) f (m1) (x*) 0, f (m) (x*) 0
5
§5.1 二分法
求 f (x) = 0 的根
11
§5.1 二分法—算法步骤
例2:求 f ( x) x3 x 1 0 在 (1, 1.5) 的实根, 要求误差不超过0.005。
STEP 0 STEP 1 STEP 2
STEP 3
STEP 4
输入 a, b, eps, delta , fa=f (a) , fb=f (b)
x=(a+b)/2 , fx=f (x) 判断:|b-a|<eps or | f x |< delta 若是,goto step 4 ;否则,执行下一步 若 fb*fx<0,则 a=x 否则 b=x. goto step 1 输出 x, fx, 停机.
相关文档
最新文档