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

一、实验目的通过本次综合实验,掌握数值分析中常用的插值方法、方程求根方法以及数值积分方法,了解这些方法在实际问题中的应用,提高数值计算能力。
二、实验内容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)矩形法:计算简单,但精度较低。
数值分析2024上机实验报告

数值分析2024上机实验报告数值分析是计算数学的一个重要分支,它研究如何用数值方法来解决数学问题。
在数值分析的学习过程中,学生需要通过上机实验来巩固理论知识,并学会使用相应的数值方法来解决实际问题。
本篇报告将详细介绍2024年度数值分析上机实验的内容和结果。
一、实验内容2024年度数值分析上机实验分为四个部分,分别是:方程求根、插值与拟合、数值积分和常微分方程的数值解。
1.方程求根这部分实验要求使用数值方法求解给定的非线性方程的根。
常见的数值方法有二分法、牛顿法、割线法等。
在实验过程中,我们需要熟悉这些数值方法的原理和实现步骤,并对不同方法的收敛性进行分析和比较。
2.插值与拟合这部分实验要求使用插值和拟合方法对给定的一组数据进行拟合。
插值方法包括拉格朗日插值、牛顿插值等;拟合方法包括最小二乘拟合、多项式拟合等。
在实验中,我们需要熟悉插值和拟合方法的原理和实现步骤,并对不同方法的精度和稳定性进行比较。
3.数值积分这部分实验要求使用数值方法计算给定函数的积分。
常见的数值积分方法有梯形法则、辛普森法则、龙贝格积分等。
在实验过程中,我们需要熟悉这些数值积分方法的原理和实现步骤,并对不同方法的精度和效率进行比较。
4.常微分方程的数值解这部分实验要求使用数值方法求解给定的常微分方程初值问题。
常见的数值方法有欧拉法、改进的欧拉法、四阶龙格-库塔法等。
在实验中,我们需要熟悉这些数值解方法的原理和实现步骤,并对不同方法的精度和稳定性进行比较。
二、实验结果在完成2024年度数值分析上机实验后,我们得到了以下实验结果:1.方程求根我们实现了二分法、牛顿法和割线法,并对比了它们的收敛速度和稳定性。
结果表明,割线法的收敛速度最快,但在一些情况下可能会出现振荡;二分法和牛顿法的收敛速度相对较慢,但稳定性较好。
2.插值与拟合我们实现了拉格朗日插值和最小二乘拟合,并对比了它们的拟合效果和精度。
结果表明,拉格朗日插值在小区间上拟合效果较好,但在大区间上可能出现振荡;最小二乘拟合在整体上拟合效果较好,但可能出现过拟合。
数值分析课程实验报告-二分法和牛顿迭代法

用二分法和牛顿迭代法求方程的根
算法名称用二分法和牛顿迭代法求方程的根
学科专业机械工程
作者姓名xxxxxx
作者学号xxxBiblioteka xx作者班级xxxxxxxx
xx大学
二〇一五年十二月
《数值分析》课程实验报告
实验名称
用二分法和牛顿迭代法求方程的根
成绩
一、问题背景
在科学研究与工程计算中,常遇到方程(组)求根问题。若干个世纪以来,工程师和数学家花了大量时用于探索求解方程(组),研究各种各样的方程求解方法。对于方程f(x)=0,当f(x)为线性函数时,称f(x)=0为线性方程;当f(x)为非线性函数时,称式f(x)=0为非线性方程。对于线性方程(组)的求解,理论与数值求法的成果丰富;对于非线性方程的求解,由于f(x)的多样性,尚无一般的解析解法。当f(x)为非线性函数时,若f(x)=0无解析解,但如果对任意的精度要求,设计迭代方程,数值计算出方程的近似解,则可以认为求根的计算问题已经解决,至少能够满足实际要求。
fx=subs(ff,x,xk);
fa=subs(ff,x,a);
k=k+1;
iffx==0
y(k)=xk;
break;
elseiffa*fx<0
b=xk;
else
a=xk;
end
y(k)=xk;
end
plot(y,'.-');
gridon
(2)牛顿迭代法程序:
functionx=newton(xx,n)
对二分法和牛顿迭代法的观察和分析我们可以知道,二分法的优点是方法比较简单,编程比较容易,只是二分法只能用于求方程的近似根,不能用于求方程的复根,且收敛速度慢。而牛顿迭代法的收敛速度明显大于二分法的速度。
数值计算方法方程求根

数值计算⽅法⽅程求根数值计算⽅法实验报告实验内容:⽅程求根实验室:专业班级:学号:姓名: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)对原方程变形为x=arctanX+π,令f(x)=x-arctanx-π,f ’(x)=221x x+ (2)选定初值x 0=4.5,构造牛顿迭代公式2211arctan x x x x x x n n +---=+π(3)在VC++6.0中编写程序如下并运行: #include<stdio.h> #include<math.h> #define ESP 1e-6 #define PI 3.1415926 void main() {double x0,x1,f,f1,a,b; printf("INPUT x0:"); scanf("%lf",&x0); a=floor(x0/PI); do {f=x0-atan(x0)-a*PI; f1=x0*x0/(1+x0*x0); x1=x0-f/f1; b=x0; x0=x1; }while(fabs(x0-b)<=ESP); printf("%f\n",x0); }2实验步骤1.1a)程序编译出错:b)找到出错位置:c)修改为“x1=0.2-0.1*exp(x0)”后调试运行为:调试成功,运行程序得出结果。
1.2a)编译运行出错:b)找到出错位置c)修改为“f=x0-atan(x0)-a*PI;”,调试运行。
运行得出结果。
3实验结论(数据及分析结果)(1)对于方程e x+10x-2=0,输入初值为0时结果如下:因为x∈(0.1),φ’(x)=-0.1e x<1,所以该迭代格式收敛。
(2)对于方程x=tgx,输入初值4.5时运行结果如下:当输入x为100时:牛顿迭代是局部收敛的,故迭代在方程的根的附近是收敛的,所以初值的选择对牛顿迭代的收敛性有影响,若初值选在根的附近则迭代收敛,若初值选择离根远则发散。
4实验小结(收获体会)通过这次实验,基本掌握了利用C语言解决数值计算中的方程求根问题,从最初的编写算法到调试再到得出结果,虽然有困难但是通过翻阅资料,查工具书等,最终顺利完成了任务,同时也加深了对于迭代法的认识。
数值分析实验报告(计算二次方程的根)
《数值分析》课程实验报告【实验内容与要求】为了精确计算所有情况下的二次方程0a 2=++c bx x的根,设a 0≠,04b 2>-ac ,构造算法和程序。
并计算下列二次方程的根:1.,032x2=--x2. ,010001.10000x2=++x3.0100001.100000x2=+-x【算法说明】1. 在a 不等于0的情况下,首先判断ac 4b 2-是否大于0,若ac 4b 2-小于0,则无实数根,若ac 4b2-大于0,则有两个不同的实数根21,x x 。
2. 在ac 4b 2-大于0的情况下,若,0b >则a b b 2ac4-x 21+-=acb b 4c 2x 22-+-=若,0b <则a b b 2ac4--x 21-=acb b 4-c 2x 22--=【源程序】#include<stdio.h> #include<math.h> void main() {double a,b,c;double x1,x2; double k;printf("请输入a,b,c: \n");scanf("%lf%lf%lf",&a,&b,&c);k=b*b-4*a*c;printf("%lf\n",k);if(a!=0)//a不为0{//判断b2-4ac是否大于0if(k<0){printf("无实数根");}else if(k>0)//当有实数根时{//判断b是否大于0if(b>0){x1=(-b+sqrt(k))/(2*a);x2=(2*c)/(-b+sqrt(k));printf("x1=%lf\nx2=%lf\n",x1,x2);}else if(b<0){x1=(-b-sqrt(k))/(2*a);x2=(2*c)/(-b-sqrt(k));printf("x1=%lf\nx2=%lf\n",x1,x2);}}}}【实验结果】该图为二次方程032x 2=--x 的两根 即:,0000000.164b 2>=-ac 000000.3,000000.1x 21=-=x该图为二次方程010001.10000x 2=++x 的两个根即:,0999999984b 2>=-ac999980.9999-,000100.0x 21=-=x该图为二次方程0100001.100000-x 2=+x 的两个根即:,0000000.9999999984b 2>=-ac 966146.99999,000010.0x 21=-=x【实验结果分析与说明】二次方程在04,0a 2>-≠ac b的情况下,若ac b 4b 2-≈,那么若,0b >则 024,-24b -x 2221≈-+-=≈--=a acb b x a b a ac b ,若,0b <则 aa acb b x a ac b b-24,024b -x 2221≈-+-=≈--=。
数值分析实验报告——非线性方程求根
数值分析实验报告——非线性方程求根一、实验目的: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.通过比较,发现割线法和牛顿法的收敛速度较快,精确程度较高,因此选择割线法进行求解。
六、实验总结:通过本次实验,我掌握了求解非线性方程的常用方法,并使用数值分析软件实现了二分法、割线法和牛顿法。
数值分析原理实验报告
一、实验目的通过本次实验,掌握数值分析的基本原理和方法,了解数值分析在科学和工程领域的应用,培养动手能力和分析问题的能力。
二、实验内容1. 二分法求方程根(1)原理:二分法是一种在实数域上寻找函数零点的算法。
对于连续函数f(x),如果在区间[a, b]上f(a)f(b)<0,则存在一个根在区间(a, b)内。
二分法的基本思想是将区间[a, b]不断二分,缩小根所在的区间,直到满足精度要求。
(2)实验步骤:① 输入函数f(x)和精度要求;② 初始化区间[a, b]和中间点c=a+(b-a)/2;③ 判断f(c)与f(a)的符号,若符号相同,则将区间缩小为[a, c],否则缩小为[c,b];④ 重复步骤②和③,直到满足精度要求;⑤ 输出根的近似值。
2. 牛顿法求方程根(1)原理:牛顿法是一种在实数域上寻找函数零点的算法。
对于可导函数f(x),如果在点x0附近,f(x0)f'(x0)≠0,则存在一个根在点x0附近。
牛顿法的基本思想是通过泰勒展开近似函数,然后求解近似方程的根。
(2)实验步骤:① 输入函数f(x)和精度要求;② 初始化迭代次数n=0,近似根x0;③ 计算导数f'(x0);④ 求解近似方程x1=x0-f(x0)/f'(x0);⑤ 判断|x1-x0|是否满足精度要求,若满足,则停止迭代;否则,将x0更新为x1,n=n+1,返回步骤③。
3. 雅可比迭代法解线性方程组(1)原理:雅可比迭代法是一种解线性方程组的迭代算法。
对于线性方程组Ax=b,雅可比迭代法的基本思想是利用矩阵A的对角线元素将方程组分解为多个一元线性方程,然后逐个求解。
(2)实验步骤:① 输入系数矩阵A和常数向量b;② 初始化迭代次数n=0,近似解向量x0;③ 计算对角线元素d1, d2, ..., dn;④ 更新近似解向量x1=x0-A/d1, x2=x0-A/d2, ..., xn=x0-A/dn;⑤ 判断|x1-x0|是否满足精度要求,若满足,则停止迭代;否则,将x0更新为x1, x2, ..., xn,n=n+1,返回步骤③。
数值分析实验报告
数值分析实验报告实验目的:通过对数值分析实验的进行,掌握牛顿法解方程的根的求解过程和方法,通过编程实现牛顿法。
实验原理:牛顿法是一种迭代法,通过不断迭代逼近根的过程来求解方程的根。
假设f(x)在[x_0,x]中连续且有一阶连续导数,则根据泰勒展开公式,有下面的公式成立:f(x)=f(x_0)+f'(x_0)(x-x_0)+R(x)其中f(x)是方程的函数,f'(x_0)是f(x)在x_0处的导数,R(x)是无穷小量。
当x接近于x_0时,可以忽略R(x)的影响,即认为R(x)足够小可以忽略。
假设x_0是方程的一个近似根,可以得到如下的迭代公式:x_1=x_0-f(x_0)/f'(x_0)x_2=x_1-f(x_1)/f'(x_1)...在迭代的过程中,如果迭代的结果与上一次迭代的结果的误差小于设定的阈值,则可以认为找到了方程的根。
实验步骤:1.确定方程和初始近似根x_0。
2.计算f(x_0)和f'(x_0)。
3.使用迭代公式计算x的近似值x_i,直到满足终止条件(比如误差小于设定的阈值)。
4.输出计算得到的方程的根。
实验结果和分析:在实验中,我们选择了方程f(x)=x^2-2作为实验对象,初始近似根选择为x_0=1根据上述的迭代公式,可以依次计算得到x_1=1.5,x_2=1.4167,x_3=1.4142,直到满足终止条件。
通过实验计算,可以得到方程f(x)=x^2-2的两个根为x=-1.4142和x=1.4142,与理论解x=±√2比较接近,说明牛顿法可以有效地求解方程的根。
总结:通过本次实验,掌握了牛顿法解方程根的原理和实现方法,实验结果与理论解相近,验证了牛顿法的有效性。
在实际应用中,牛顿法常用于求解非线性方程和优化问题,具有较高的精度和收敛速度,但在选择初始近似根时需要谨慎,否则可能会导致迭代结果发散。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数值分析》实验报告班级信科1501 学号150803114 姓名梁恩昊日期2017.10.3实验一________ 方程求根_______一、实验目的:掌握二分法、Newt on法、不动点迭代法、弦截法求方程的根的各种计算方法、并实施程序调试和运行,学习应用这些算法于实际问题。
二、实验内容:二分法、Newt on法、不动点迭代法、弦截法求方程的根、程序的调试和运行,给出实例的计算结果。
观察初值对收敛性的影响。
三、实验步骤:①、二分法:定义:对于区间[a, b]上连续不断且f (a)・f (b) <0的函数y=f (x),通过不断地把函数f (x)的零点所在的区间一分为二,使区间的两个端点逐步逼近零点,进而得到零点近似值的方法叫二分法。
实现方法:首先我们设一方程400*(x A4)-300*(x A3)+200*(x A2)-10*x-仁0 ,并求其在区间[0.1,1]上的根,误差限为e=10A-4。
PS:本方法应用的软件为matlab。
disp('二分法')a=0.1;b=1;tol=0.0001;n0=100;fa=400*(a.A4)-300*(a.A3)+200*(a.A2)-10*a-1;for i=1: n0 p=(a+b)/2;fp=400*(p.A4)-300*(p.A3)+200*(pA2)-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;程序调试:A«^SK»■ J^+JK KL::-L4*«r-j.I JX p«I K*bl >r2ffp"iDb* p. 4)^J &6" p> 31+2D0» ■ p. Z E ]. if fji-=< 11 f*b. i 'b-» i /2 ■ <t *)14±JP •図二好去求谭才程的Mhh)dljp pj4U. ' i)勺巩妙.*nd:if e&*fp 'O E=P*194 b=1>rnd.;If UsuCSr rp=Ql II»Ife-Sl IlTil^SXr&li 4-llpi WI nsns' 「二〒迭代垢归*i X出方程茁霍r “二泌曲二讨;t3HS芳壮甘训壮匕«. n$9_曲乜竹Tfl-n:Uk r>\运行结果:用二分法求得方程的根p=0.1108二分迭代次数为:14②Newton 法Vllw M Faim0.1BQ^1104MiaawEeaE7«■IMMM sitaLWJOr-CA UJM宀li > aihJ H^.ul 囈鬥收i-1 严 f rt*b>F2, .fp=-;00rlp ■jJ-MKhri-p - 3)4 200. p. ■?” if fp=:!| I ahi lh-3l Z'<t^ll•HL13JI 均一-蹙車啤*||?星:必屮样iiusC 二特为t "tt F ' ••bcA&k 卜曲it 忸4=>.llAt fe^F.4H4 :'if i—rOtt ""(f p—-fl 11 I' ②讥=dlTpC r 二一:启Tf; 7■尢詳国••舉■亡远-" □ * * SI ■ ■ Q ■ 113知祢硝—■福鼻耕■ |ibhb-irfpte电R曰昌昌曰曰定义:取定初值xO,找到函数对应的点,然后通过该点作函数切线,交x轴,得到新的横坐标值,然后找函数对应的点,做切线,得到新的横坐标值,重复上述步骤,多次迭代,直到收敛到需要的精度。
实现方法:我们与二分法一样,先设一方程400*(x A4)-300*(x A3)+200*(x A2)-10*x -仁0 ,并求其在区间[O.1,1] 上的根。
PS:本方法应用的软件为matlab。
syms x;diff(400*(x.A4)-300*(x.A3)+200*(x.A2)-10*x-1) %求导方程函数文件:function Newton=fun(a)Newton=400*(a.A4)-300*(a.A3)+200*(a.A2)-10*a-1;endfunction Newton2=dfun(b)Newton2=1600*bA3-900*bA2+400*b-10; %fun 函数的导数end主程序:x0=1;while 1x1=x0-fun(x0)/dfun(x0);if abs(x1-x0)<1e-8 || abs(fun(x1))<1e-10 break;end x0=x1; enddisp('用牛顿法求得的方程的根为:x=') disp(xl)程序调试:运行结果:用牛顿法求得的方程的根为:x=0.1108③ 、不动点迭代法:采用不动点迭代法计算x3+4x2-10=0,在区间[1,2]上的一个根PS :本方法应用的软件为 matlab 。
不动点迭代法程序: 函数文件:fun ctio n [y, n]=BDD(x,eps) if nargin==1 eps=1.0e-6;elseif nargin<1 error return end x1=gg(x); n=1;while (norm(x1-x)>=1e-6)&&(n<=10000) x=x1; x1=gg(x); n=n+1;-Lorrm' a nd 虚 ndcwWorksc^iceJCIjP Select u . VaAuoiM; wh iU 】T L=nr[l- f'jn (xO).' dfrm I'xQ ]if absixl-xflK le-B 11| ibs fur ':Ki ' I c ]e-]0 bl-=Eik q end h Ait Ji , enddivpl Fill ff- 153175*肋料加 >diT13^1>阳*科議rr 讦的万朝的博沟孟num却anb d?扫iM pz L 匸一出mffi 出ffiFR uQU30.1 lfl?Id 1QO町.111 OBl.DDDZ-e-M 4.11GBC.1WBConruiTisnd HiMHiry -« □ * X■™d:-x J=1话ih 111 =a J-£un' z.0 df un xOif IH L-T O * c I e-3 || abs—tE?M ;ETLd- B O=W ], tjud山和r 匡牛帧1我弓涉方竈片y=x;M函数:function f=gg(x)f(1)=sqrt(2.5-(xA3)/4);结果如下:>> BDD(1)n =21ans =1.3652④、弦截法:定义:弦截法是求非线性方程近似根的一种线性近似方法。
它是以与曲线弧AB对应的弦AB 与x轴的交点横坐标作为曲线弧AB与x轴的交点横坐标的近似值□来求出方程的近似解。
该方法一般通过计算机编程来实现。
弦截法的原理是以直代曲即用弦 (直线) 代替曲线求方程的近似解,也就是利用对应的弦与轴的交点横坐标来作为曲线弧与轴的交点横坐标的近似值。
实现方法:我们与二分法一样,先设一方程400*(x A4)-300*(x A3)+200*(x A2)-10*x -仁0 ,并求其在区间[0.1,1] 上的根。
PS:本方法应用的软件为matlab。
函数文件:function[p1,err,k,y]=secant(f,p0,p1,delta,max1) % f 是非线性函数%p0,p1 是初始值%delta 是给定允许误差%max是迭代次数的上限%p1是所求得的方程的近似解%err 是p1-p0 的误差估计%k 是所需要的迭代次数%y=f(p1)K=0,p0,p1,feval('f',p0),feval('f',p1)for k=1:max1 p2=p1-feval('f',p1)*(p1-p0)/(feval('f',p1)-feval('f',p0));err=abs(p2-p1);p0=p1;p1=p2;k,p1,err,y=feval('f',p1)if(err<delta)|(y==0),break,endendM文件:seca nt('400*(xA4)-300*(xA3)+200*(xA2)-10*x-1=0',0,1,1.0e-4,100);disp('用弦截法求得的方程的根为:x=')disp(p1)运行结果:用弦截法求得的方程的根为:x=0.1108四、实验中遇到的问题及解决方法:MATLAB运用不熟练,于是翻开以前的课本与ppt,并结合网上查阅的资料,才又掌握了一些基础的运用方法。
一开始忘了怎么创建函数文件,于是实现二分法的程序时变得十分麻烦。
后来复习过后,运用在牛顿法上,就简单了许多。
二分法与牛顿法是比较容易掌握并实现的,而后两个方法则是查阅了很多资料,却仍然似懂非懂,程序也是大部分参考了资料。
我将在此之后继续钻研它们,直到能熟练运用为止。