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

数值分析实验报告——非线性方程求根
二分法
一、题目
用二分法求方程=
的所有根
x
.13要求每个根的误差小于
-x
+
0.001.
.
2
1
二、方法
二分法
三、程序
1、Jiangerfen.M的程序
function[c,yc]=jiangerfen(f,a,b,tol1,tol2)
if nargin<4 tol1=1e-3;tol2=1e-3;end
%nargin<4表示若赋的值个数小于4,则tol1和tol2取默认值。

ya=feval('f',a);%令x=a代入到方程f中,ya即f(a)。

yb=feval('f',b);
if ya*yb>0,disp('(a,b)不是有根区间');return,end
max=1+round((log(b -a)-log(tol2))/log(2));%round函数是将数据取整,使数据等于其最接近的整数。

for k=1:max
c=(a+b)/2;
yc=feval('f',c);
if((b-a)/2<tol2)|(abs(yc)<tol1),break,end
if yb*yc<0
a=c;ya=yc;
else
b=c;yb=yc;
end
end
k,c=(a+b)/2,yc=feval('f',c)
2、f.M的程序
function y=f(x);
y=x^3-2*x-1;
四、结果
>> format compact
>> fplot('[x^3-2*x-1,0]',[-1.5,2]);
>> jiangerfen('f',-1.5,-0.8);
k =
8
c =
-0.9996
yc =
3.9017e-004
>> jiangerfen('f',-0.8,-0.3);
k =
8
c =
-0.6184
yc =
2.7772e-004
>> jiangerfen('f',1.3,2);
k =
10
c =
1.6179
yc =
-9.5348e-004
>> jiangerfen('f',2,3);
(a,b)不是有根区间
方程f(x)=x^3-2*x-1的所有根为-0.9996,-0.6184 ,1.6179 。

迭代次数分别为8,8,10。

五、拓展
由于二分法收敛太慢,可以先通过画图,取得一个包含根的小区间,再用二分法来求解,这样就能有效减少迭代次数。

不动点迭代法
一、题目
的一个根。

的在用不动点迭代求]1,0[01sin 2 : .22=--x x
二、方法
不动点迭代法
三、程序
1、Jiangbudong.M 的程序
function p=jiangbudong(g,x0,tol,max)
P(1)=x0;
for k=1:max
P(k+1)=feval('g',P(k));
p=P(k+1);
if abs(P(k+1)-P(k))<tol break;end
if k==max disp('method failed');end
end
P,k-1
2、g.M 的程序
function y=g(x);
y=(sin(x)+1)/(2*x);
四、结果
>> format compact
>> fplot('[2*x^2-sin(x)-1,0]',[0,1]);
>> jiangbudong('g',0.5,1e-4,50)
P =
Columns 1 through 9
0.5000 1.4794 0.6745 1.2042 0.8028 1.0708 0.8767 1.0087 0.9151
Columns 10 through 18
0.9794 0.9343 0.9655 0.9437 0.9588 0.9483 0.9556 0.9505 0.9541
Columns 19 through 27
0.9516 0.9533 0.9521 0.9530 0.9524 0.9528 0.9525 0.9527 0.9526
Column 28
0.9526
ans =
26
ans =
0.9526
方程2x^2-sin(x)-1=0在[0,1]的根为0.9526。

取的初值是0.5。

五、拓展
在不动点迭代法中,迭代过程的收敛速度依赖于迭代函数g(x)的选取。

若dg(x)不等于0,则该迭代过程只可能是线性收敛。

如果改动迭代函数为g(x)=sqrt((sin(x)+1)/2),则输出结果为 >> jiangbudong('g',0.5,1e-4,50)
P =
Columns 1 through 6
0.5000 0.8601 0.9375 0.9503 0.9523 0.9526
Column 7
0.9526
ans =
5
ans =
0.9526
迭代次数为5次,相比先前的26次,收敛速度加快了很多。

因此,在选取迭代函数时,应该尽量让函数收敛的阶更高一点。

Newton 迭代法
一、题目
;013 :10,Newton .335的所有根准确到迭代法求解用=+--x x
Newton迭代法
三、程序
1、Jiangnewton.M的程序
function p=jiangnewton(h,dh,x0,tol1,max) p0=x0;
for k=1:max
p=p0-feval(h,p0)/feval(dh,p0);
if abs(p-p0)<tol1 break;end
p0=p;
disp(p0);
if k==max disp('method failed');end end
k-1
2、h.M的程序
function y=h(x);
y=x^3-3*x+1;
3、dh.M的程序
function y=dh(x);
y=3*x^2-3;
四、结果
>> format compact
>> fplot('[x^3-3*x+1,0]',[-4,4]);
>> jiangnewton('h','dh',-2.1,1e-5,100) -1.9083
-1.8800
-1.8794
ans =
3
ans =
-1.8794
>> jiangnewton('h','dh',0.2,1e-5,100)
0.3417
0.3473
0.3473
ans =
3
ans =
0.3473
>> jiangnewton('h','dh',1.1,1e-5,100)
2.6381
1.5484
1.5324
1.5321
ans =
6
ans =
1.5321
方程x^3-3x+1=0的根为-1.8794,0.3473 ,1.5321。

迭代次数分别为3,3,6。

五、拓展
由于牛顿迭代法收敛性依赖初值的选取,倘若选取的初值偏离所求根较远或者选取不恰当,牛顿法可能发散,求不出根来。

例如:jiangnewton('h','dh',-1,1e-5,100),则求不出根来。

>> jiangnewton('h','dh',-0.7,1e-5,100)
1.1020
2.6071
1.9804
1.6580
1.5467
1.5323
1.5321
ans =
7
ans =
1.5321
>> jiangnewton('h','dh',-0.6,1e-5,100)
0.7458
0.1279
0.3375
0.3473
0.3473
ans =
5
ans =
0.3473
>> jiangnewton('h','dh',-1.1,1e-5,100)
-5.8127
-4.0035
-2.8688
-2.2232
-1.9426
ans =
7
ans =
-1.8794
由上面可以看到,选取的初值相差很小,可是求出的根却不一样。

合集下载

数值分析实验五 非线性方程的求根1

数值分析实验五     非线性方程的求根1

数值分析实验五 非线性方程的求根组号 班级 学号 姓名 分数一:实验目的1、掌握用二分法解非线性方程的方法。

2、掌握用迭代法解非线性方程的方法。

3、掌握用牛顿法解非线性方程的方法。

4、学会运用Matlab 语言解决提供的函数求解实际问题。

二:实验内容所需的基本知识二分法的原理:设)(x f 在],[b a 上连续,且0)()(<⋅b f a f 。

则],[b a 为方程区间(设只有唯一根)。

取中点)(210b a x +=,检查)(a f 与)(0x f 是否同号,若同号,说明根*x 与b 之间,此时b b x a ==101,;若异号,说明根*x 在a 与0x 之间,此时011,x b a a ==,得新区间],[11b a 为原区间的一半。

对],[11b a 进行上述过程,取中点)(21111b a x +=,检查)(1a f 与)(1x f 是否同号,如此反复二分下去,即可得出一系列有根区间⊃⊃⊃],[],[],[2211b a b a b a …⊃⊃],[k k b a …,其中每个区间都是前一个区间的一半,因此],[k k b a 的长度k k k a b a b 2)(-=-,当∞→k 时趋于零,就是说,如果二分过程无限地继续下去,这些区间最终必收缩于一点*x ,该点显然就是所求的根。

迭代法原理:首先给定一个粗糙的初始值,然而用一个迭代公式反复校正这个初值,将已有近似根逐步精确化,一直到满足精度要求为止。

具体地,把方程0)(=x f 改写成x 的等价表达式)(x x ϕ=,若)(**x x ϕ=,称*x 为)(x ϕ的一个不动点,求)(x f 的零点就等价于求)(x ϕ的不动点。

任取一点0x 代入)(x ϕ求得 )(01x x ϕ= 又将1x 代入)(x ϕ求得)(12x x ϕ= 如此反复迭代下去一般地 )(1k k x x ϕ=+ k=0,1,2,………)(x ϕ称为迭代函数,)(x x ϕ=称为迭代公式。

数值分析实验报告之迭代法求非线性方程的根

数值分析实验报告之迭代法求非线性方程的根

《数值分析》实验报告学院:数学与计算机学院专业:班级:姓名学号实验组实验时间指导教师成绩实验项目名称利用迭代法求方程的根实验目的1、掌握迭代法求根的数学原理。

2、掌握迭代法求根的计算机算法。

实验内容及要求内容:1、用迭代法求方程cosx5.0=x的近似根,要求误差不超过710-。

2.详细描述算法步骤并画出算法流程图形。

3.用表格列出迭代法的中间和最终结果。

要求:1、利用C语言,或Asp环境,或Matlab数学软件实现上述算法。

2、程序运行结果用表格显示出来3、保存程序运行结果,并结合算法进行分析。

4、要求实验报告最多两页,正反两面都要求打印。

实验原理将方程改写成x=)(xϕ,当方程在指定的区间上具有唯一的不动点(即迭代收敛)时,求原方程的零点就等价于求)(xϕ的不动点,选择一个初值x代入等式右端可得新的x的值,通过如此反复迭代后,求得的x的值会越来越逼近方程的根,一直迭代到误差满足要求即可。

实验仪器1、计算机一台。

2、安装IIS。

实验步骤Step1:选定满足迭代收敛的自变量的区间;Step2:选择迭代初值;Step3: 开始迭代,产生迭代后的新根,计算此时的误差;Step4: 如果误差不满足要求,返回Step3,否则输出结果,过程结束。

实验流程图开始选择迭代初值x确定收敛区间[a,b]迭代)(1kkxxϕ=+,2,1,0=k计算误差kkxx-+1结束误差是否小于7-10输出结果是否实验结果实验总结通过本次实验,我对迭代法求方程的根有了更深的认识,对其所用到的数学原理通过编程理解的更加清晰。

我是用Asp完成本次实验的,因为这样可以将结果很方便的用表格显示出来,让结果看起来比较清楚、明白和友好。

同时,我也用C语言编程实现过,结果是一样的,这也说明实验结果的正确性。

因为所给迭代方程是收敛的,不需要收敛性的验证,只要迭代达到误差的要求即可。

实验中遇到的一个问题是如何将结果中的小数点前的0补上去,让显示的更完整,通过网上查询,了解到可以根据对结果的判断将0加上去已达到完整显示,最终解决了这个问题。

数值分析实验之非线性方程求根(Python现)

数值分析实验之非线性方程求根(Python现)

数值分析实验之⾮线性⽅程求根(Python现)详细实验指导见上⼀篇,此处只写内容啦实验内容:1. ⽤⼆分法求⽅程x3-3x-1=0在的所有根.要求每个根的误差⼩于0.001.提⽰与要求: (1) 利⽤精度找到迭代次数;(2) 由f(x)=3(x2-1)可取隔根区间[-2,-1].[-1,1].[1,2]);(3) ⽤程序求各隔根区间内的根.2. ⽤不动点迭代求: (1)x3+2x2+10x-20=0的所有根.或: (2)9x2-sinx-1=0在[0,1]上的⼀个根.3. ⽤Newton迭代法求解下列之⼀,准确到10-5:(1) x3-x-1=0的所有根;(2) e x+2-x+2cosx-6=0位于[0,2]上的根.实验代码:• ⽜顿迭代法1import math2 x=0.53 n = 14while n ==1 or abs(x-x1)>1e-5:5 x1 = x6def F(x1):7return 2**-x+2*math.cos(x)+math.exp(x)-68def F1(x1):9return math.exp(x)-math.log(2)*(2**-x)-2*math.sin(x)10 x = x1 - F(x1)/F1(x1)11print ('迭代步数:',n,'X1计算值=',x1,'X计算值=',x)12 n = n+113else:14print('⽅程的根=',(x))运⾏结果:• 不动点法1import numpy as np23def f(x):4return 9*x**2 - np.sin(x) - 156def g1(x):7return ((np.sin(x)+1)/9)**0.589def g2(x):10 result = (abs(2 * x + 1))**(1 / 5)11if (2 * x - 1) < 0:12return -result13return result1415def getEpsilon(x, epsilon):16 maxY = minY = x[0]17for each in x:18 maxY = max(f(each), maxY)19 minY = min((f(each), minY))20 epsilon = (maxY - minY) * epsilon21return epsilon2223def getInitialVal(x, N, step, epsilon):24 initalVal = []25for i in range(N + 1):26 y1, y2, y3 = f(x - step), f(x), f(x + step)27if (y1 * y2 < 0) and (i != 0):28 initalVal.append((x + x - step) / 2)29if ((y2 - y1) * (y3 - y2) < 0) and (abs(y2) < epsilon):30 initalVal.append(x)31 x += step3233return initalVal3435def findFixedPoint(initalVal, delta,epsilon):36 points = []37for each in initalVal:38if (abs(g1(each)) < 1):39 points.append(iteration(each, g1, delta,epsilon)) 40else:41 points.append(iteration(each, g2, delta,epsilon)) 42return points4344def iteration(p1, g, delta,epsilon):45while True:46 p2 = g(p1)47 err =abs(p2-p1)48 relerr = err/(abs(p2)+epsilon)49if err<delta or relerr<delta:50return p251 p1 = p25253def main():54 a, b, c = input().split('')55 a = float(a)56 b = float(b)57 c = int(c)58 delta = 10 ** (-c)59 N = 860 epsilon = 0.0161 step = (b - a) / N62 x = np.arange(a, b + epsilon, epsilon)6364 epsilon2 = getEpsilon(x,epsilon)65 initalVal = getInitialVal(a, N, step, epsilon2)66 ans = findFixedPoint(initalVal, delta,epsilon)6768for each in ans:69print('⽅程的根为:%.6f' % each)7071if__name__ == '__main__':72 main()运⾏结果:。

第二次实验报告(非线性方程求根)

第二次实验报告(非线性方程求根)

数学实验报告实验五学院:数学与统计学院班级:数学与统计学院(2)班姓名:石紫雲学号:0234非线性方程的数值解法实验1实验目的1)进一步熟练掌握求解非线性方程的牛顿迭代法和弦截法。

2)根据牛顿迭代法和弦截法的原理,编写程序求解非线性方程,提高编程解决问题的能力。

2 实验内容(1)用牛顿法和割线法求下列方程的根x^2-e^x=0;x*e^x-1=0;(23实验原理(1)牛顿迭代公式:1()/'()k k k k x x f x f x +=- 双点弦法公式:111()()()()k k k k k k k f x x x x x f x f x +--=--- (2)令2()f x x A =-,再用牛顿法求根。

4实验步骤1)根据牛顿迭代法,双点弦法的算法编写相应的求根函数;2)用牛顿迭代法和双点弦法分别对方程进行求解;5 程序设计牛顿迭代法x0=;N=100;k=0;eps=5e-6;delta=1e-6;while(1)x1=x0-fc1(x0)/fc2(x0);k=k+1;if k>Ndisp('Newton method failed')breakendif(abs(x1-x0)<delta || abs(fc1(x1))<delta) break;endx0=x1;endfprintf('%f',x0)fprintf('%f',abs(fc1(x1)))双点弦法function cutline(x0,x1)N=100;k=0;delta=5e-8;while(1)(abs(x1-x0)>=delta)c=x1;x1=cutnext(x0,x1);x0=c;k=k+1;if k>Ndisp('Cutline method failed')break;endif(abs(x1-x0)<delta || abs(fc1(x1))<delta) break;endendfprintf('%10f\n',x1);function y=cutnext(a,b)y=b-fc(b)/(fc(b)-fc(a))*(b-a);1)原函数function fc1=fc1(x)fc1=x^2-exp(x);end导函数function fc2=fc2(x)fc2=2*x-exp(x);end2)原函数function fc1=fc1(x) fc1=x*exp(x)-1;end导函数function fc2=fc2(x)fc2=1*exp(x)+x*exp(x);end3)原函数function fc1=fc1(x)fc1=x^2-5;end导函数function fc2=fc2(x)fc2=2*x;end6实验结果及分析注:牛顿迭代法由于设置delta=1e-6,所以算出的误差e<*10^-6;割线法由于设置delta=5e-8,所以误差e<*10^-8.7总结。

实验一 非线性方程求根

实验一   非线性方程求根

石家庄经济学院2014/2015学年第一学期数值分析实验报告班级: 5141090301学号: 514109030105姓名:张倩指导教师: 张敬敏实验一非线性方程求根一、实验题目1. 求方程f(x)=3x2-e x=0一个正根,并使误差不大于10-5。

(p22第3题)2. 计算√5,结果具有5位有效数字。

3. 求方程f(x)=x3-x-1=0在区间[1.0,1.5]内的一个实根,误差不大于10-5。

(选做)二、程序功能1. 使用迭代法求方程f(x)=3x2-e x=0一个正根,并使误差不大于10-5。

2. 用牛顿法计算√5,结果具有5位有效数字。

3. 利用二分法求方程f(x)=x3-x-1=0在区间[1.0,1.5]内的一个实根,精度为10-5。

三、算法算法1. 使用迭代法求方程f(x)=3x2-e x=0一个正根,并使误差不大于10-5。

算法2. 用牛顿法计算√5,结果具有5位有效数字。

for k=2,3,4….N do1)compute x:x g(x)四、重要标识符说明程序1. 重要标识符说明程序2. 重要标识符说明Error确定有效位数,abs取绝对值,for 迭代次数五、程序运行实例在matlab 6.5环境中,运行程序1,结果如图1所示。

图1 程序1运行结果在matlab 6.5环境中,运行程序2,结果如图2所示。

图2 程序2运行结果六、源程序程序1源程序:程序2源程序:Error=1e-5;x=2;for k=2:10xk=x;x=x/2+5/(2*x);if (abs(xk - x)<=Error)break;endend七、实验总结(不少于100字)。

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

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

数值分析实验报告——非线性方程求根一、实验目的:1.掌握求解非线性方程的常用方法;2.了解非线性方程求根问题的数值解法;3.熟悉使用数值分析软件进行非线性方程求根的实现。

二、实验原理:非线性方程指的是形如f(x)=0的方程,其中f(x)是一个非线性函数。

非线性方程求根的常用方法包括二分法、割线法和牛顿法等。

其中,二分法是通过不断缩小区间范围来逼近方程的解;割线法是通过使用割线来逼近方程的解;牛顿法则是通过使用切线来逼近方程的解。

对于给定的非线性方程,可以根据实际情况选择合适的方法进行求根。

三、实验内容:1.编写求解非线性方程的函数,包括二分法、割线法和牛顿法;2.使用编写的函数求解给定的非线性方程,比较各个方法的收敛速度和精确程度;3.根据实际情况分析和选择合适的方法进行求根。

四、实验步骤:1.针对给定的非线性方程,编写二分法的函数实现:(1)首先确定方程的解存在的区间;(2)根据方程的解存在的区间,使用二分法逐步缩小区间范围;(3)根据设定的精度要求,不断循环迭代,直至满足要求或达到迭代次数限制;2.针对给定的非线性方程,编写割线法的函数实现:(1)首先需要确定方程的解存在的初始点;(2)根据方程的解存在的初始点,根据割线的定义进行迭代;(3)设定迭代的精度要求和限制次数,结束迭代;3.针对给定的非线性方程,编写牛顿法的函数实现:(1)首先需要确定方程的解存在的初始点;(2)根据方程的解存在的初始点,根据牛顿法的定义进行迭代;(3)设定迭代的精度要求和限制次数,结束迭代;4.根据给定的非线性方程,分别使用二分法、割线法和牛顿法进行求解,并比较各个方法的收敛速度和精确程度;5.分析实际情况,选择合适的方法进行求解。

五、实验结果:4.通过比较,发现割线法和牛顿法的收敛速度较快,精确程度较高,因此选择割线法进行求解。

六、实验总结:通过本次实验,我掌握了求解非线性方程的常用方法,并使用数值分析软件实现了二分法、割线法和牛顿法。

数值分析实验报告模板

数值分析实验报告模板篇一:数值分析实验报告(一)(完整)数值分析实验报告12345篇二:数值分析实验报告实验报告一题目:非线性方程求解摘要:非线性方程的解析解通常很难给出,因此线性方程的数值解法就尤为重要。

本实验采用两种常见的求解方法二分法和Newton法及改进的Newton法。

利用二分法求解给定非线性方程的根,在给定的范围内,假设f(x,y)在[a,b]上连续,f(a)xf(b) 直接影响迭代的次数甚至迭代的收敛与发散。

即若x0 偏离所求根较远,Newton法可能发散的结论。

并且本实验中还利用利用改进的Newton法求解同样的方程,且将结果与Newton法的结果比较分析。

前言:(目的和意义)掌握二分法与Newton法的基本原理和应用。

掌握二分法的原理,验证二分法,在选对有根区间的前提下,必是收敛,但精度不够。

熟悉Matlab语言编程,学习编程要点。

体会Newton使用时的优点,和局部收敛性,而在初值选取不当时,会发散。

数学原理:对于一个非线性方程的数值解法很多。

在此介绍两种最常见的方法:二分法和Newton法。

对于二分法,其数学实质就是说对于给定的待求解的方程f(x),其在[a,b]上连续,f(a)f(b) Newton法通常预先要给出一个猜测初值x0,然后根据其迭代公式xk?1?xk?f(xk) f'(xk)产生逼近解x*的迭代数列{xk},这就是Newton法的思想。

当x0接近x*时收敛很快,但是当x0选择不好时,可能会发散,因此初值的选取很重要。

另外,若将该迭代公式改进为xk?1?xk?rf(xk) 'f(xk)其中r为要求的方程的根的重数,这就是改进的Newton 法,当求解已知重数的方程的根时,在同种条件下其收敛速度要比Newton法快的多。

程序设计:本实验采用Matlab的M文件编写。

其中待求解的方程写成function的方式,如下function y=f(x);y=-x*x-sin(x);写成如上形式即可,下面给出主程序。

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

数值分析实验报告——非线性方程求根二分法一、题目用二分法求方程=的所有根x.13要求每个根的误差小于-x+0.001..21二、方法二分法三、程序1、Jiangerfen.M的程序function[c,yc]=jiangerfen(f,a,b,tol1,tol2)if nargin<4 tol1=1e-3;tol2=1e-3;end%nargin<4表示若赋的值个数小于4,则tol1和tol2取默认值。

ya=feval('f',a);%令x=a代入到方程f中,ya即f(a)。

yb=feval('f',b);if ya*yb>0,disp('(a,b)不是有根区间');return,endmax=1+round((log(b -a)-log(tol2))/log(2));%round函数是将数据取整,使数据等于其最接近的整数。

for k=1:maxc=(a+b)/2;yc=feval('f',c);if((b-a)/2<tol2)|(abs(yc)<tol1),break,endif yb*yc<0a=c;ya=yc;elseb=c;yb=yc;endendk,c=(a+b)/2,yc=feval('f',c)2、f.M的程序function y=f(x);y=x^3-2*x-1;四、结果>> format compact>> fplot('[x^3-2*x-1,0]',[-1.5,2]);>> jiangerfen('f',-1.5,-0.8);k =8c =-0.9996yc =3.9017e-004>> jiangerfen('f',-0.8,-0.3);k =8c =-0.6184yc =2.7772e-004>> jiangerfen('f',1.3,2);k =10c =1.6179yc =-9.5348e-004>> jiangerfen('f',2,3);(a,b)不是有根区间方程f(x)=x^3-2*x-1的所有根为-0.9996,-0.6184 ,1.6179 。

数值计算课程设计报告-非线性方程求根(经典报告)

数值计算方法课程设计报告课程设计名称:数值计算方法课程设计题目:非线性方程求根年级专业:组员姓名学号:指导教师:非线性方程求根一、问题提出随着科学技术,生产力经济的发展,在科学与工程计算中存在着大量方程求根问题,例如贷款购房问题,工厂的最佳订货问题等都需要求解一类非线性方程的根,首先根据实际问题列出数学模型,确定变量,给出各个条件及相关函数;然后对建立的模型进行具体分析和研究,选择合适的求解方法;编写函数的程序,用计算机求出方程的解,通过所求解分析具体情况.求解非线性方程的问题有以下几种基本方法。

二分法简单易行,但收敛较慢,仅有线性收敛速度。

而且该方法不能用于求偶数重根或复根,但可以用来确定迭代法的初始值。

牛顿法是方程求根中常用的一种迭代方法,它除了具有简单迭代法的优点外,还具有二阶收敛速度(在单根邻近处)的特点,但牛顿法对初始值选取比较苛刻(必须充分靠近方程的根),否则牛顿法可能不收敛。

弦截法是牛顿法的一种修改,虽然比牛顿法收敛慢,但因它不需计算函数的导数,故有时宁可用弦截法而不用牛顿法,弦截法也要求初始值必须选取得充分靠近方程的根,否则也可能不收敛。

二、背景分析代数方程的求根问题是一个古老的数学问题。

理论上,n次代数方程在复数域内一定有 n个根(考虑重数)。

早在16世纪就找到了三次、四次方程的求根公式,但直到19世纪才证明大于等于5次的一般代数方程式不能用代数公式求解,而对于超越方程就复杂的多,如果有解,其解可能是一个或几个,也可能是无穷多个。

一般也不存在根的解析表达式。

因此需要研究数值方法求得满足一定精度要求的根的近似解。

牛顿迭代法是牛顿在17世纪提出的一种求解方程.多数方程不存在求根公式,从而求精确根非常困难,甚至不可能,从而寻找方程的近似根就显得特别重要.而在各种科学和工程计算中往往要用到非线性方程组的求解,而牛顿法又是最基础的迭代法,在各种计算力学、控制工程等领域中发挥了不可代替的作用.而在数值计算中,非线性方程组的求解同样具有重要意义.随着计算机技术的成熟和高速发展,对于非线性方程求根问题出现了大量的数学软件(如MATLAB,SAS,SPSSD等),计算机已经成为工程师应用数学解决工程问题的主要运算工具.同时,工程专业的学生对数学教育的需求重点正在从手工演绎和运算能力的培养转变到结合计算机软件进行建模、求解和论证能力的培养.我们采用Matlab数学软件平台,通过实例比较了二分法、牛顿迭代法、弦截法三种基本方法的优缺点。

数值实验一-非线性方程求根


13

如果一个命令行很长,一个物理行之内写不下, 可以在第一个物理行之后加上3个小黑点并按下 回车键,然后接着下一个物理行继续写命令的其 他部分。3个小黑点称为续行符,即把下面的物 理行看作该行的逻辑继续。 在MATLAB里,控制键和方向键可用于命令行的 编辑。

14
变量和赋值语句


变量命名
9
工作空间窗口( Workspace )
工作空间是MATLAB用于存储各种变量和结果的 内存空间。在该窗口中显示工作空间中所有变量 的名称、大小、字节数和变量类型说明,可对变 量进行观察、编辑、保存和删除。
10
命令历史记录窗口( Command History ) 在默认设置下,历史记录窗口中会自动保留 自安装起所有用过的命令的历史记录,并且 还标明了使用时间,从而方便用户查询。而 且,通过双击命令可进行历史命令的再运行。 如果要清除这些历史记录,可以选择Edit菜 单中的Clear Command History命令。
在MATLAB 6.5中,变量名是以字母开头,后字 母、数字或下划线的字符序列,最多63个字符。在 MATLAB中,变量名区分字母的大小写。
在MATLAB工作空间中,还驻留几个由系统本身定义的 变量。例如,用pi表示圆周率π的近似值, 用i,j表示虚数单位。定义变量有特定的含义,在使用时, 应尽量避免对这些变量重新赋值。
15
赋值语句 MATLAB赋值语句有两种形式: (1) 变量=表达式 (2) 表达式 其中“表达式”是用运算符将有关运算量连 接起来的式子,其结果是一个矩阵。 [注] 第二种语句形式下,将表达式的值 赋给MATLAB的永久变量ans。 如果在语句的最后加分号,那么,MATLAB 仅仅执行赋值操作,加分号不再显示运算的结 果。在一条语句中,如果表达式太复杂,一行 写不下,可以加上三个小黑点(续行符)并按下回 16 车键,然后接下去再写。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档