《数值计算方法》实验报告2-方程求根

合集下载

数值分析综合实验报告

数值分析综合实验报告

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

二、实验内容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)矩形法:计算简单,但精度较低。

数值分析课程实验报告-二分法和牛顿迭代法

数值分析课程实验报告-二分法和牛顿迭代法
《数值分析》课程实验报告
用二分法和牛顿迭代法求方程的根
算法名称用二分法和牛顿迭代法求方程的根
学科专业机械工程
作者姓名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)
对二分法和牛顿迭代法的观察和分析我们可以知道,二分法的优点是方法比较简单,编程比较容易,只是二分法只能用于求方程的近似根,不能用于求方程的复根,且收敛速度慢。而牛顿迭代法的收敛速度明显大于二分法的速度。

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

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

《数值分析》实验报告实验一方程求根一、实验目的:掌握二分法、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语言解决数值计算中的方程求根问题,从最初的编写算法到调试再到得出结果,虽然有困难但是通过翻阅资料,查工具书等,最终顺利完成了任务,同时也加深了对于迭代法的认识。

方程求根

方程求根
对于方程 ,先将它改写成 的形式,即需要针对所给的函数 构造合适的迭代函数 。可令 ,这是相应的迭代公式是

运用前述加速技巧,对于迭代过程①,其加速公式具有如下形式:
记 ,上面两个式子可以合并写成
这种迭代公式通常称为简化的Newton公式,其相应的迭代函数是

需要注意的是,由于 是 的估计值,而 ,这里的 实际上是 的估计值。如果 代替②中的 ,则得到如下形式的迭代函数:
x(1)=0;
y(1)=0;
fori=1:10
x(i+1)=(x(i)+1)^(1/3);
y(i+1)=2*(y(i)^3)-1;
end
x
y
2、
eps=10^(-5);
x=ones(1,10);
y=ones(1,10);
x(1)=0;
y(1)=0.5;
fori=1:10
x(i+1)=x(i)-(x(i).^3-x(i)-1)/(3*x(i).^2-1);
y(i+1)=y(i)-(y(i).^3-y(i)-1)/(3*y(i).^2-1);
if(abs(x(i+1)-x(i))<eps&&abs(y(i+1)-y(i))<eps)
break;
end
end
x
y
三、指导教师评语及成绩:
评语
评语等级



及格
不及格
1.实验报告按时完成,字迹清楚,文字叙述流畅,逻辑性强
2.实验方案设计合理
3.实验过程(实验步骤详细,记录完整,数据合理,分析透彻)
4实验结论正确.
成绩:

数值分析实验报告(计算二次方程的根)

数值分析实验报告(计算二次方程的根)

《数值分析》课程实验报告【实验内容与要求】为了精确计算所有情况下的二次方程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≈-+-=≈--=。

数值计算方法实验报告

数值计算方法实验报告
2如果f[(a+b)/2]<0,则区间((a+b)/2,b)内存在零点,(a+b)/2≥a;
3如果f[(a+b)/2]>0,则区间(a,(a+b)/2)内存在零点,(a+b)/2≤b;
返回①重新循环,不断接近零点。通过每次把f(x)的零点所在区间收缩一半的方法,使区间内的两个端点逐步逼近函数零点,最终求得零点近似值。
{
int z[10];
int maxi,maxj;
initdata();
for(int i=1;i<=N;i++)
z[i]=i;
for(int k=1;k<N;k++)
{
maxi=k;maxj=k;float maxv=abs(a[k][k]);
for(i=k;i<=N;i++)
for(int j=k;j<=N;j++)
34;请输入矩阵阶数:"<<endl;
cin>>N;
cout<<"请输入矩阵各项:"<<endl;
for(int i=1;i<=N;i++)
for(int j=1;j<=N+1;j++)
{
cin>>a[i][j];
}
cout<<endl;
}
void main()
{
for(i=1;i<=N;i++)
{
float t=a[i][k];a[i][k]=a[i][maxj];a[i][maxj]=t;

《数值分析实验》实验

《数值分析实验》实验

数值分析实验实验1 方程求根一、实验目的:1.掌握常用的求非线性方程近似根的数值方法,用所学方法求非线性方程满足指定精度要求的数值解,比较各种方法的异同点并进行收敛性分析。

2.通过对二分法与牛顿迭代法作编程练习与上机运算,进一步体会二分法与牛顿迭代法的不同特点。

3.编写割线迭代法的程序,求非线性方程的解,并与牛顿迭代法作比较。

二、实验内容:1.用二分法求方程0104)(23=-+=x x x f 在1.5附近的根。

2.用牛顿迭代法求方程033)(23=--+=x x x x f 在1.5附近的根。

3.用简单迭代法求解非线性方程3sin )1(2=-+x x 的根。

取迭代函数)1sin 3(*5.0)(2x x x --+=ϕ,精度取2101-⨯4.(选做)用牛顿法求下列方程的根: (1)02=-x e x ; (2)01=-x xe ; (3)02lg =-+x x 。

5.(选做)编写一个弦截法程序,求解题目4中的方程。

6.(选做)Matlab 函数fzero 可用于求解非线性方程的根。

例如,fzero(@(x) x^3+4*x^2-10, 1.5)可以求解题目1。

尝试用此方法求解实验中的其他题三、实验要求:1.程序要添加适当的注释,程序的书写要采用缩进格式。

2.程序要具在一定的健壮性,即当输入数据非法时,程序也能适当地做出反应,如插入删除时指定的位置不对等等。

3.程序要做到界面友好,在程序运行时用户可以根据相应的提示信息进行操作。

四、实验步骤1.按照实验内容和实验要求编写代码 2.编译并运行代码 3.检查是否发生错误五、实验源代码与实验结果实验1源代码:运行结果:实验2源代码:运行结果:实验3源代码:运行结果:4(1)的源代码:运行结果:4(2)的源代码:运行结果:4(3)的源代码:运行结果:5(3)的源代码:运行结果:六、实验心得体会通过本次实验我加深了对二分法、简单迭代法、牛顿迭代法和弦截法算法思想的了解,并对各个不同方法的优劣有了更深的理解。

数值计算方法实验报告

数值计算方法实验报告

数值计算⽅法实验报告《数值计算⽅法》实验报告实验题⽬⼆分法求⾮线性⽅程的根专业班级11级数学师范⼆班姓名李洪学号201102024056指导⽼师李梦联系电话188********⼀、实验⽬的熟悉⼆分法求⽅程近似根的数值⽅法,与⽤计算器解出的值进⾏⽐较,并学会误差分析。

⼆、实验原理⼆分法的基本思路是通过计算隔根区间的中点,逐步将隔根区间缩⼩,从⽽可得⽅程的近似根数列}{n x 。

(≤-+1*k x x ?)三、实验内容已知0)()3(3=-=-e x x f 在[]1,0上有⼀个实根*x ,0)1(0)0(>本实验中的⽤到的求根⽅法有①⼆分法,②计算器求根。

四、实验步骤1.输⼊:a ,b 值及精度控制?量;2.if 0)()(>b f a f then 返回第1步,重新输⼊a ,b 值else 转第3步;3.while ?>-b a 时做(1))(21b a x +=,计算)(x f ;if )(x f =0 then 输出x ,停机。

(2)if0)()(4.输出)(21b a x +=。

五、 Matlab 源程序1.erfen.m:function [c,err,yc]=erfen(f,a,b,delta)ya = feval(f,a);yb = feval(f,b);if ya * yb > 0 ,return,endmax1 = 1+round((log(b-a)-log(delta))/log(2));for k=1:max1c=(a+b)/2;yc=feval(f,c);if yc==0a=c;b=c;elseif yb * yc > 0b=c;yb=yc;elsea=c;ya=yc;endif b-aendc=(a+b)/2;err=abs(b-a);yc=feval(f,c);2.f.m:function f=f(x);f=x^3-exp(-x);六、运⾏结果七、计算机计算结果⼋、实验分析1、⼆分法和计算器均能解出⽅程的根。

计算机数值方法实验报告

计算机数值方法实验报告

本科实验报告课程名称:计算机数值方法实验工程:实验一:方程求根实验二:线性方程组的直接解法实验三:线性方程组的迭代解法实验四:代数插值和最小二乘法拟合多项式实验地点:逸夫302专业班级:学号:学生姓名:指导老师:2021年4 月15 日t2=t;t=(t1+t2)/2;}else if(f(t2)*f(t)<=0){t1=t;t=(t1+t2)/2;}}printf("the root is %f",t);getch();}迭代法:#include"stdio.h"#include"math.h"main(){float x,a,t;scanf("%f",&a);x=a;do{x=sqrt((10-x*x*x)/4);t=a;a=x;}while(fabs(a-t)>5e-6);printf("x=%f",a);getch();}运行结果:二分法:迭代法:实验结果和分析可包括:实验中的两种方法都存在不同程度的误差,由于数据进展了小数位数保存加上计算方法导致两种方法计算结果稍有偏向。

不同的方法存在不同误差,可以不同程度的求得方程的解,不同的方法速度不同心得体会本次实验首先我学到了fabs〔〕是用于求绝对值的,而且我复习了二分法和迭代法的原理,虽然这两个是比拟小的程序,但还是考验了我的细心程度。

方程组〔2〕方程组〔3〕方程组〔4〕实验结果和分析三种解方程组方法的分析:从消元过程可以看出,对于n阶线性方程组,只要各步主元素不为零,经过n-1步消元,就可以得到一个等价的系数矩阵为上三角形阵的方程组,然后再利用回代过程可求得原方程组的解。

消元过程相当于分解A为单位下三角阵L与上三角阵U的乘积,解方程组Ly=b。

回代过程就是解方程组Ux=y。

其中的L为n阶单位下三角阵、U为上三角阵.。

在 A 的LU 分解中, L取下三角阵, U 取单位上三角阵,这样求解方程组Ax=d 的方法称为追赶法。

太原理工大学计算机数值方法实验报告

太原理工大学计算机数值方法实验报告
2、实验内容和原理:
(1)Gauss消元法:基本思想为:对于n阶线性方程组,只要各步主元素不为0,经过n-1步消元,就可以得到一个等价的的系数矩阵为上三角形矩阵的方程组,然后再利用回代过程即可求得原方程的解。时间复杂度约为O(n3)。
(2)Gauss列主元素消元法:基本思想:在用高斯消元法求解方程组时,用作除法的小主元素可能使舍入误差增加,因此需要考虑依次按列选主元素,然后换行使之变到主元素位置上,再进行消元计算。
m=m+A[i][j]*x0[j];
x1[i]=(A[i][n+1]-m)/A[i][i];
}lf\n",i,x1[i]);
return 0;
}
(2)高斯赛德尔迭代法:
#include<>
#include<>
int main()
{
double e,m,q,A[12][12],x0[12],x1[12];/*x[0]和x[1]分别表示第k次和第k+1次迭代结果,且初始x[0]=0*/
1、实验目的和要求:
(1)实验目的:使用雅可比迭代法或高斯-赛德尔迭代法对下列方程组进行求解。
10X1-X2-2X3=
-X1+10X2-2X3=
-X1-X2+5X3=
(2)实验要求:
1.应用C,C++或JAVA编出通用程序,源程序要有详细的注释和说明;
2.比较计算结果,对不同方法进行比较分析;
3.实验完成,提交实验结果并写出报告,分析计算结果是否符合问题的要求,找出计算成功的原因或计算失败的教训。
(1)实验目的:合理利用Gauss消元法、LU分解法求解下列方程组:
++=

计算方法上机2 方程求根

计算方法上机2 方程求根

实验报告名称方程求根班级:学号:姓名:成绩:1实验目的(1)通过对二分法与牛顿迭代法做编程练习和上机运算,进一步体会二分法和牛顿法的不同。

(2)编写割线迭代法的程序,求非线性方程的解,并与牛顿迭代法作比较。

2 实验内容求方程f(x)=x^3+x^2-3*x-3在1.5附近的根。

3实验步骤二分法算法给定区间(a,b),并设f(a)与f(b)符号相反,取ε为根的容许误差,δ为|f(x)|的容许误差。

①令c=(a+b)/2.②如果(c-a)<ε或|f(c)|<δ,则输出c,结束;否则执行③。

③如果f(a)*f(c)>0,则a=c;否则令b=c,重复①②③。

牛顿迭代法算法给定初始值x0,ε为根的容许误差,η为|f(x)|的容许误差,N为迭代次数的容许值。

①如果f(x0)’=0或迭代次数大于N,则算法失败,结束;否则执行②。

②计算x1=x0-f(x0)/f(x0)’.③令x0=x1,转向①。

4 程序设计二分法c语言程序设计:#include <stdio.h>#include <math.h>#define eps 5e-6#define delta 1e-6float Bisection(float a,float b,float(*f)(float)){float c, fc,fa=(*f)(a),fb=(*f)(b);int n=1;printf("二分次数\t\tc\t\tf(c)\n");while(1){if(fa*fb>0){printf("不能用二分法求解");break;}c=(a+b)/2,fc=(*f)(c);if(fabs(fc)<delta)break;else if(fa*fc<0){ b=c;fb=fc;}else{a=c;fa=fc;}if(b-a<eps)break;printf("%d\t\t%f\t\t%f\n",n++,c,fc);}return c;}float f(float x){return x*x*x+x*x-3*x-3;}void main(){float a=1,b=2;float x;x=Bisection(a,b,f);printf("\n方程的根是:%f",x);}牛顿法c语言程序设计:#include<stdio.h>#include<math.h>#define N 100#define eps 1e-6#define eta 1e-8float Newton(float(*f)(float),float(*f1)(float),float x0) {float x1,d;int k=0;do{x1=x0-(*f)(x0)/(*f1)(x0);if(k++>N||fabs((*f1)(x1))<eps){printf("\n Newton迭代散发");break;}d=fabs(x1)<1?x1-x0:(x1-x0)/x1;x0=x1;printf("x(%d)=%f\t",k,x0);}while(fabs(d)>eps&&fabs((*f)(x1))>eta);return x1;float f(float x){return x*x*x+x*x-3*x-3;}float f1(float x){return 3.0*x*x+2*x-3;}void main(){float x0,y0;printf("请输入迭代值x0\n");scanf("%f",&x0);printf("x(0)=%f\n",x0);y0=Newton(f,f1,x0);printf("方程的根为:%f\n",y0);}5实验结果及分析二分法的输出结果:牛顿法的输出结果:实验分析:上面程序取三个不同初值,得到同样的结果,但迭代次数不同,初值越接近所求的根,迭代次数越少。

【免费下载】数值计算方法 方程求根

【免费下载】数值计算方法 方程求根

计ห้องสมุดไป่ตู้方法实习报告
9.用艾特肯算法求方程 f(x)=x^3+4*x^2+10=0 在区间[1,2]内的根 的近似值(取 X0=1.5,g(x)= 10 ,精确到|Xk+1-Xk|<=10^-5,
x4
并与第 2,3,6 题的相应结果进行比较。
function guest(tolerance) k=0; x0=1.5; y0=sqrt(10/(x0+4)); z0=sqrt(10/(y0+4)); while(abs(z0-y0)>tolerance); x1=x0-(y0-x0)^2/(z0-2*y0+x0); y1=sqrt(10/(x1+4)); z1=sqrt(10/(y1+4)); z0=z1; y0=y1; k=k+1; end disp(z0); disp(k);
运行结果
1.36523 1
5
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电,力根通保据过护生管高产线中工敷资艺设料高技试中术卷资,配料不置试仅技卷可术要以是求解指,决机对吊组电顶在气层进设配行备置继进不电行规保空范护载高与中带资负料荷试下卷高问总中题体资,配料而置试且时卷可,调保需控障要试各在验类最;管大对路限设习度备题内进到来行位确调。保整在机使管组其路高在敷中正设资常过料工程试况中卷下,安与要全过加,度强并工看且作护尽下关可都于能可管地以路缩正高小常中故工资障作料高;试中对卷资于连料继接试电管卷保口破护处坏进理范行高围整中,核资或对料者定试对值卷某,弯些审扁异核度常与固高校定中对盒资图位料纸置试,.卷保编工护写况层复进防杂行腐设自跨备动接与处地装理线置,弯高尤曲中其半资要径料避标试免高卷错等调误,试高要方中求案资技,料术编试交写5、卷底重电保。要气护管设设装线备备置敷4高、调动设中电试作技资气高,术料课中并3中试、件资且包卷管中料拒含试路调试绝线验敷试卷动槽方设技作、案技术,管以术来架及避等系免多统不项启必方动要式方高,案中为;资解对料决整试高套卷中启突语动然文过停电程机气中。课高因件中此中资,管料电壁试力薄卷高、电中接气资口设料不备试严进卷等行保问调护题试装,工置合作调理并试利且技用进术管行,线过要敷关求设运电技行力术高保。中护线资装缆料置敷试做设卷到原技准则术确:指灵在导活分。。线对对盒于于处调差,试动当过保不程护同中装电高置压中高回资中路料资交试料叉卷试时技卷,术调应问试采题技用,术金作是属为指隔调发板试电进人机行员一隔,变开需压处要器理在组;事在同前发一掌生线握内槽图部内 纸故,资障强料时电、,回设需路备要须制进同造行时厂外切家部断出电习具源题高高电中中源资资,料料线试试缆卷卷敷试切设验除完报从毕告而,与采要相用进关高行技中检术资查资料和料试检,卷测并主处且要理了保。解护现装场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。

数值计算方法实验报告(例)

数值计算方法实验报告(例)

云南大学数学与统计学实验教学中心实验报告一、实验目的练习用数值方法求方程的根 二、实验内容求方程17)(3-+=x x x f 的实根三、实验环境TURBOC C四.实验方法 牛顿法牛顿法简述:牛顿法是一种特殊的迭代法,其迭代公式为:,2,1,0,)()(1='-=+k x f x f x x k k k k ,当数列{}k x 收敛时,其极限值x 即为方程的解。

定理:给定方程],[,0)(b a x x f ∈=1)设0)()(<b f a f ;2))(x f ''在],[b a 上不变号,且],[,0)(b a x x f ∈≠';3)选取],[0b a x ∈,满足0)()(00>''x f x f ;则牛顿法产生的序列{}k x 收敛于0)(=x f 在],[b a 内的唯一解x 。

五、实验过程1实验步骤1.编程: 用C 语言编出牛顿法的源程序。

2. 保存源程序。

3. 调试程序, 修改错误至能正确运行.4. 运行程序并输出计算结果. 2 关键代码及其解释f1为函数f 的导数,%f 是单精度类型,fabs (x1-x0)是等于|x1-x0| 3 调试过程写了多余的分号,没有定义x1.乘法用*表示,平方用r*r 表示。

\n 表示换行,/需与\区别。

每步完成用分号。

&x 表示x 出现的位置和取地址六、实验总结1.遇到的问题及解决过程在编写程序时要注意不要写多余的符号,并记住一些符号的应用,不要弄混了 2.产生的错误及原因分析Warning: Code has no effect in function main Error: Statement missing ; in function main 3.体会和收获。

1)牛顿法收敛速度快,但初值不容易确定,往往由于初值取得不当而使迭代不收敛或收敛慢,但若能保证)()(1+>K K x f x f (称为下山条件),则有可能收敛。

(完整word版)数值分析报告-二分法和牛顿法方程求根(word文档良心出品)

(完整word版)数值分析报告-二分法和牛顿法方程求根(word文档良心出品)

《数值分析》实验报告一**: **学号: PB********实验一一、实验名称方程求根二、实验目的与要求:通过对二分法和牛顿法作编程练习和上机运算,进一步体会它们在方程求根中的不同特点;比较二者的计算速度和计算精度。

三、实验内容:通过对二分法和牛顿迭代法作编程练习和上机运算,进一步体会它们在方程求根中的不同特点 。

(一)二分法算法:给定区间[a,b],并设f (a )与f (b )符号相反,取δ为根的容许误差,ε为值的容许误差。

(1)令c=(a+b)/2(2)如果(c-a)< δ或)(c f <ε,则输出c ,结束;否则执行(3)(3)如果f(a)f(c)<0,则令)()(,c f b f c b ←←;否则,则令)()(,c f a f c a ←←,重复(1),(2),(3)。

(二)牛顿迭代法:给定初值0x ,ε为根的容许误差,η为)(x f 的容许误差,N 为迭代次数的容许值。

(1)如果)(x f <η或迭代次数大于N ,则算法结束;否则执行(2)。

(2)计算)('/)(0001x f x f x x -=(3)若 < 或 < ,则输出 ,程序结束;否则执行(4)。

(4)令 = ,转向(1)。

四、实验题目与程序设计1、二分法3.1.1、用二分法求方程a. f(x)= x x tan 1--在区间[0,π/2]上的根,c. f(x)=6cos 22-++-x e x x 在区间[1,3]上的根。

源程序:3.1.1.a#include<stdio.h>#include<math.h>void main(){float a,b;double c,y,z;printf("plese input two number a and b:\n");scanf("%f%f",&a,&b);c=(a+b)/2;y=1/c-tan(c);printf("a=%f,b=%f,b-a=%f,c=%f,f(c)=%f\n",a,b,b-a,c,y);while(fabs(b-a)>0.00001|| fabs(y)>0.00001){z=1/a-tan(a);if(z*y<0)b=c;elsea=c;c=(a+b)/2;y=1/c-tan(c);printf("a=%f,b=%f,b-a=%f,c=%f,f(c)=%f\n",a,b,b-a,c,y);}x x 01-ε)(1x f ηx 1x 0x 1}输入0 1.5707563( /2~1.5705563)得到下表:由上表可以看出刚开始时f(c)取值幅度很大,但是经过一段历程之后,幅度变得平缓甚至基本接近与零,我们认为,x=0.8603是方程的根,结果与实际想要得到的值相当接近。

太原理工大学数值计算方法实验报告

太原理工大学数值计算方法实验报告

太原理工大学数值计算方法实验报告本科实验报告课程名称:计算机数值方法实验项目:方程求根、线性方程组的直接解法、线性方程组的迭代解法、代数插值和最小二乘拟合多项式实验地点:行勉楼专业班级: ******** 学号: *********学生姓名: ******** 指导教师:李誌,崔冬华2016年 4 月 8 日学生姓名实验成绩实验名称实验一方程求根实验内容和要求熟悉使用二分法、迭代法、牛顿法、割线法等方法对给定的方程进行根的求解。

选择上述方法中的两种方法求方程:f(x)=x3+4x2-10=0在[1,2]内的一个实根,且要求满足精度|x*-x n|<0.5×10-5(1)了解非线性方程求根的常见方法,如二分法、牛顿法、割线法。

(2)加深对方程求根方法的认识,掌握算法。

(3)会进行误差分析,并能对不同方法进行比较。

实验原理1.二分法:如果要求已知函数 f(x) = 0 的根 (x 的解),那先要找出一个区间 [a, b],使得f(a)与f(b)异号。

根据介值定理,这个区间内一定包含着方程式的根。

求该区间的中点m=(a+b)/2,并找出 f(m) 的值。

若 f(m) 与 f(a) 正负号相同,则取 [m, b] 为新的区间, 否则取 [a, m]。

重复第3步和第4步,直到得到理想的精确度为止。

2. 割线法是利用牛顿迭代法的思想,在根的某个领域内,函数有直至二阶的连续导数,并且不等于0,则在领域内选取初值x0,x1,迭代均收敛。

(1)在区间[m ,n]内输入初值x0,x1.(2)计算x2。

x2=x1-f(x1)*(x1-x0)/(f(x1)-f(x0))(3) x0=x1,x1=x2(4)判断是否达到精度,若是输出x1,若否执行(2)主要仪器设备HP计算机实验记录1.二分法// 方程求根(二分法).cpp : 定义控制台应用程序的入口点。

//#include "stdafx.h"#include"iostream"using namespace std;class Text{public:float x, y, a, b, c, n = 0;void Getab(){cout << "请输入计算区间:(以空格隔开)" << endl;cin >> a >> b;}float GetY(float x){y = x*x*x + 4 * x*x - 10;return y;}float Calculate(float a,float b){c = (a + b) / 2;n++;if (GetY(c) == 0 || ((b - a) / 2) < 0.000005){cout << c <<"为方程的解"<< endl;return 0;}if (GetY(a)*GetY(c) < 0){return Calculate(a,c);}if (GetY(c)*GetY(b)< 0){return Calculate(c,b);}}};int main(){cout << "方程组为:f(x)=x^3+4x^2-10=0" << endl;float a, b;Text text;text.Getab();a = text.a;b = text.b;text.Calculate(a, b);return 0;}2.割线法:// 方程求根(割线法).cpp : 定义控制台应用程序的入口点。

(完整word版)数值分析报告-二分法和牛顿法方程求根(word文档良心出品)

(完整word版)数值分析报告-二分法和牛顿法方程求根(word文档良心出品)

《数值分析》实验报告一**: **学号: PB********实验一一、实验名称方程求根二、实验目的与要求:通过对二分法和牛顿法作编程练习和上机运算,进一步体会它们在方程求根中的不同特点;比较二者的计算速度和计算精度。

三、实验内容:通过对二分法和牛顿迭代法作编程练习和上机运算,进一步体会它们在方程求根中的不同特点 。

(一)二分法算法:给定区间[a,b],并设f (a )与f (b )符号相反,取δ为根的容许误差,ε为值的容许误差。

(1)令c=(a+b)/2(2)如果(c-a)< δ或)(c f <ε,则输出c ,结束;否则执行(3)(3)如果f(a)f(c)<0,则令)()(,c f b f c b ←←;否则,则令)()(,c f a f c a ←←,重复(1),(2),(3)。

(二)牛顿迭代法:给定初值0x ,ε为根的容许误差,η为)(x f 的容许误差,N 为迭代次数的容许值。

(1)如果)(x f <η或迭代次数大于N ,则算法结束;否则执行(2)。

(2)计算)('/)(0001x f x f x x -=(3)若 < 或 < ,则输出 ,程序结束;否则执行(4)。

(4)令 = ,转向(1)。

四、实验题目与程序设计1、二分法3.1.1、用二分法求方程a. f(x)= x x tan 1--在区间[0,π/2]上的根,c. f(x)=6cos 22-++-x e x x 在区间[1,3]上的根。

源程序:3.1.1.a#include<stdio.h>#include<math.h>void main(){float a,b;double c,y,z;printf("plese input two number a and b:\n");scanf("%f%f",&a,&b);c=(a+b)/2;y=1/c-tan(c);printf("a=%f,b=%f,b-a=%f,c=%f,f(c)=%f\n",a,b,b-a,c,y);while(fabs(b-a)>0.00001|| fabs(y)>0.00001){z=1/a-tan(a);if(z*y<0)b=c;elsea=c;c=(a+b)/2;y=1/c-tan(c);printf("a=%f,b=%f,b-a=%f,c=%f,f(c)=%f\n",a,b,b-a,c,y);}x x 01-ε)(1x f ηx 1x 0x 1}输入0 1.5707563( /2~1.5705563)得到下表:由上表可以看出刚开始时f(c)取值幅度很大,但是经过一段历程之后,幅度变得平缓甚至基本接近与零,我们认为,x=0.8603是方程的根,结果与实际想要得到的值相当接近。

数值计算方法实验报告

数值计算方法实验报告

数值计算方法实验报告数值计算方法实验报告引言:数值计算方法是一种通过数学模型和计算机算法来解决实际问题的方法。

在科学研究和工程应用中,数值计算方法被广泛应用于求解方程、优化问题、模拟仿真等领域。

本实验报告将介绍数值计算方法的基本原理和实验结果。

一、二分法求根二分法是一种通过不断折半缩小搜索区间来求解方程根的方法。

在实验中,我们选取了一个简单的方程f(x) = x^2 - 4 = 0来进行求根实验。

通过不断将搜索区间进行二分,我们可以逐步逼近方程的根。

实验结果表明,通过二分法,我们可以得到方程的根为x = 2。

二、牛顿迭代法求根牛顿迭代法是一种通过不断逼近方程根的方法。

在实验中,我们同样选取了方程f(x) = x^2 - 4 = 0进行求根实验。

牛顿迭代法的基本思想是通过对方程进行线性近似,求得近似解,并不断迭代逼近方程的根。

实验结果表明,通过牛顿迭代法,我们可以得到方程的根为x = 2。

三、高斯消元法求解线性方程组高斯消元法是一种通过变换线性方程组的系数矩阵,将其化为上三角矩阵的方法。

在实验中,我们选取了一个简单的线性方程组进行求解实验。

通过对系数矩阵进行行变换,我们可以将其化为上三角矩阵,并通过回代求解得到方程组的解。

实验结果表明,通过高斯消元法,我们可以得到线性方程组的解为x = 1,y = 2,z = 3。

四、插值与拟合插值与拟合是一种通过已知数据点来构造函数模型的方法。

在实验中,我们选取了一组数据点进行插值与拟合实验。

通过拉格朗日插值多项式和最小二乘法拟合,我们可以得到数据点之间的函数模型。

实验结果表明,通过插值与拟合,我们可以得到数据点之间的函数关系,并可以通过该函数模型来进行预测和拟合。

结论:数值计算方法是一种通过数学模型和计算机算法来解决实际问题的方法。

通过本次实验,我们学习了二分法求根、牛顿迭代法求根、高斯消元法求解线性方程组以及插值与拟合的基本原理和应用。

这些方法在科学研究和工程应用中具有广泛的应用前景。

数值计算方法 方程求根

数值计算方法 方程求根

数值计算方法实验报告实验内容:方程求根实验室:专业班级:学号:姓名: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题的相应结果进行比较。

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

电子科技大学《数值计算方法》




fc=f2_1(c)%规定fc的值
if(abs(fc)<detla)
break
2.牛顿迭代法的核心程序
循环迭代程序
while(1)
x1=x0-func2_2_1(x0)/func2_2(x0)%输入计算x1的公式
k=k+1;%循环迭代
if(k>N|abs(x1)<eps)
disp('Newton method failed')
break
End%判断是否继续运行
if(abs(x1)<1)
d=x1-x0
else
d=(x1-x0)/x1
end
3.割线法的核心程序
循环迭代程序
while(1)
x2=x1-(func(x1)*(x1-x0))/(func(x1)-func(x0)) %输入迭代公式 k=k+1
if(k>N|abs(x2)<eps)
disp('Method failed')
Break%判断是否继续运行
end
if abs(x2)<1
d=x2-x1
else
d=(x2-x1)/x2
end
x0=x1 %将x1赋予x0
if(abs(d)<eps|abs(func2_2_1(x1))<delta)
break
end
end
六、实验结果及讨论:
1.运用二分法运算结果为
二分次数 c f(c)
1 1.5000
-1.8750
0.1719
2 1.7500
3 1.6250
-0.9434
-0.4094
4 1.6875
-0.1248
5 1.7188
0.0220
6 1.7344
-0.0518
7 1.7266
-0.0150
8 1.7305
9 1.7324
0.0035
-0.0057
10 1.7314
-0.0011
11 1.7319
0.0012
12 1.7322
4.5962e-005 13 1.7321
-5.3166e-004
14 1.7320
15 1.7320
-2.4286e-004
-9.8448e-005 16 1.7320
-2.6243e-005
17 1.7320
18 1.7321
9.8597e-006
经过18次运算后可得到有效数字为五位的根,计算过程复杂不便用于计算较大次数的迭代
过程。

图4是二分法运算结果向真值的逼近图
由图形可以看出:二分法在运算时越接近真值时越难确定真值的值,仍然需要大量的运算才
能得出稳定的结果。

2.运用牛顿迭代法的运算结果为:
迭代次数k 输出结果x(k)
1 3.0
2 2.2000
3 1.8302
4 1.7378
5 1.7321
6 1.7321
经过6次运算后可得到有效数字为五位的根,迭代速度较快,运算结果接近真值的速度较快,
程序较简便。

图5是牛顿迭代法运行结果的图形显示
图形显示:牛顿迭代法的运行程序迭代速度较快.
3运用割线法的运算结果为:
迭代次数k 输出结果x(k)
0 1.0
1 3.0
2 1.2857
3 1.4806
4 1.8439
5 1.7123
6 1.7307
7 1.7321
经过7次运算可以确定得到有效数字为五位的根,迭代次数较少,计算结果的收敛较强。

图6是割线法的运行结果的图形显示
图形显示:割线法程序的运行结果稳定性较好,收敛迭代较快。

讨论:通过观察二分法、牛顿迭代法以及割线法的程序编写以及运算结果,可以发现牛顿迭代法和割线法的程序编写更为简便实用,比较牛顿迭代法和割线法可以得出:割线法的调用方程较少,程序简单不易出现错误;牛顿迭代法则需要列出导数方程的求解调用程序,但运行程序较快。

心得体会:经过了这次编程学习,首先认识到了自己这方面还有很大的不足,需要认真学习,同时更加熟悉了二分法、牛顿迭代法以及割线法的用法和应要注意的事项,同时自己在图形的绘制、运用和分析上还需要努力
报告评分:
指导教师签字:。

相关文档
最新文档