计算方法实验指导书h1Word格式.docx

上传人:b****2 文档编号:1314443 上传时间:2023-04-30 格式:DOCX 页数:29 大小:55.16KB
下载 相关 举报
计算方法实验指导书h1Word格式.docx_第1页
第1页 / 共29页
计算方法实验指导书h1Word格式.docx_第2页
第2页 / 共29页
计算方法实验指导书h1Word格式.docx_第3页
第3页 / 共29页
计算方法实验指导书h1Word格式.docx_第4页
第4页 / 共29页
计算方法实验指导书h1Word格式.docx_第5页
第5页 / 共29页
计算方法实验指导书h1Word格式.docx_第6页
第6页 / 共29页
计算方法实验指导书h1Word格式.docx_第7页
第7页 / 共29页
计算方法实验指导书h1Word格式.docx_第8页
第8页 / 共29页
计算方法实验指导书h1Word格式.docx_第9页
第9页 / 共29页
计算方法实验指导书h1Word格式.docx_第10页
第10页 / 共29页
计算方法实验指导书h1Word格式.docx_第11页
第11页 / 共29页
计算方法实验指导书h1Word格式.docx_第12页
第12页 / 共29页
计算方法实验指导书h1Word格式.docx_第13页
第13页 / 共29页
计算方法实验指导书h1Word格式.docx_第14页
第14页 / 共29页
计算方法实验指导书h1Word格式.docx_第15页
第15页 / 共29页
计算方法实验指导书h1Word格式.docx_第16页
第16页 / 共29页
计算方法实验指导书h1Word格式.docx_第17页
第17页 / 共29页
计算方法实验指导书h1Word格式.docx_第18页
第18页 / 共29页
计算方法实验指导书h1Word格式.docx_第19页
第19页 / 共29页
计算方法实验指导书h1Word格式.docx_第20页
第20页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

计算方法实验指导书h1Word格式.docx

《计算方法实验指导书h1Word格式.docx》由会员分享,可在线阅读,更多相关《计算方法实验指导书h1Word格式.docx(29页珍藏版)》请在冰点文库上搜索。

计算方法实验指导书h1Word格式.docx

了解舍入误差所引起的数值不稳定性。

验证性

教师指导,学生独立完成

测控技术与仪器

必修

方程求根—1

(二分法)

2-4

学生根据给定的要求,编写二分法程序,并调试通过;

通过实验输入不同的参数,了解该方法的特点。

完成实习报告。

掌握方程求根的二分法的算法;

熟悉二分法的特点。

综合性

根据实验指导书要求,学生独立完成,教师解惑

3

方程求根—2

(牛顿迭代法)

学生根据给定的要求和牛顿迭代法的算法,编写牛顿迭代法程序,并调试通过;

通过实验输入不同的参数了解牛顿迭代法的特点。

掌握方程求根的牛顿迭代法的算法;

熟悉牛顿迭代法的特点。

4

线性方程组数值解法

(列主元高斯消去法)

4-6

熟悉掌握列主元高斯消去法算法;

学生根据给定的要求编写列主元高斯消去法程序,并调试通过;

编程能力强的在完成上面任务的基础上,还可以选做本章其他方法。

熟悉列主元高斯消元法解线性方程组的算法;

掌握二维数组、函数、输入输出语句的使用;

掌握列主元高斯消去法的编程。

设计性

5

插值法

(拉格朗日插值法)

熟悉拉格朗日插值多项式;

学生编写、录入程序,并调试通过;

通过实验了解该方法的特点。

掌握拉格朗日插值多项式,注意其特点。

选修

6

曲线拟合

(最小二乘法)

熟悉最小二乘法的算法;

编写最小二法进行曲线拟合的程序,并调试通过;

用程序解决实际问题。

了解最小二乘法的基本原理;

熟悉最小二乘算法;

掌握最小二乘进行曲线拟合的编程;

通过程序解决实际问题。

7

数值积分

(龙贝格算法)

熟悉龙贝格求积的算法;

自编或录入龙贝格求积程序,并调试通过,体会该程序的巧妙处;

掌握龙贝格求积的算法;

掌握该算法的编程,了解该程序的巧妙设计处。

8

常微分方程的数值解法

(改进欧拉方法)

熟悉改进欧拉方法;

自编或录入改进欧拉程序,并调试通过;

有能力的还可完成龙格-库塔程序。

掌握改进欧拉算法;

掌握改进欧拉算法的编程。

实验报告的要求:

(实验项目,例:

)实验一舍入误差与数值稳定性

班级:

学号:

姓名:

一、目的和要求

二、实习内容

三、算法

四、实验步骤

五、实验结果

六、分析和讨论

七、心得(*可选)

①调试过程中遇到的问题和解决对策;

②经验体会等。

实验一舍入误差与数值稳定性

目的与要求:

1)通过上机编程,复习巩固以前所学程序设计语言及上机操作指令和方法;

2)通过上机运算,了解舍入误差所引起的数值不稳定性和大数吃小数的情况。

实验内容:

1)数值稳定与不稳定的计算公式

2)实验习题一的第1小题。

(大数吃小数的问题)

思考:

1)什么是数值稳定与不稳定的计算公式?

2)习题一的第1小题:

怎样是正确的?

其他(略)

(见课本P185-187)

实验二方程求根1——二分法

1)通过对二分法的编程练习,掌握方程求根的二分法的算法;

2)通过对二分法的上机运算,进一步体会二分法的特点。

算法:

1)准备:

计算f(x)在有根区间[a,b]端点处的值f(a),f(b)。

2)二分:

计算f(x)在区间中点c=

处的函数值f(c)。

3)判断

•若f(c)与f(a)异号,则根位于区间[a,c]内,以c代替b;

•若f(c)与f(a)同号,则根位于区间[c,b]内,以c代替a;

反复执行步2和步3,直到区间[a,b]长度缩小到允许误差范围之内或f(c)=0,此时区间中点c即可作为所求的根。

 

计算:

fa=f(a),fb=f(b),fab=fa*fb

c=(a+b)/2,fc=f(c)

|fc|<

DELTA||b-a<

EPS?

(1)fa*fc<

0or

(2)fc*fb<

0?

b=c

fb=fc

a=c

fa=fc

输出c

y

n

(1)

(2)

输入a,b,EPS,DELTA

fab<

提示无根

准备

二分

判断

1)二分法的编程实现。

2)进行有根区间和误差限的比较和讨论。

编程要求:

1)根的容许误差限EPS用输入语句输入。

2)根的区间a,b要求用输入语句输入。

3)输入初始值后,在开始二分法之前,先估算二分次数并输出。

实验步骤:

1)完成二分法的程序设计及录入;

2)完成程序的编译和链接,并进行修改;

3)用书上的例子对程序进行验证,并进行修改;

4)对比估算次数与实际二分次数;

5)输入不同的区间初值a,b,查看二分次数的变化;

6)输入不同的误差限,查看二分次数的变化;

7)完成实验报告。

(实验报告的编写见下一页)

实验报告方程求根——二分法

学号:

流程图:

1.经编译、链接及例子验证结果正确的源程序:

#include<

stdio.h>

math.h>

#defineEPS5e-6

#defineDELTA1e-6

voidmain()

{

floata=1,b=2,c,fa,fb,fc,fab;

fa=a*a*a+a*a-3*a-3;

fb=b*b*b+b*b-3*b-3;

fab=fa*fb;

while

(1)

{

if(fab>

0)

{

printf("

wugen"

);

break;

}

c=(a+b)/2;

fc=c*c*c+c*c-3*c-3;

if(fabs(fc)<

DELTA)break;

if(fa*fc<

b=c;

fb=fc;

elseif(fc*fb<

a=c;

fa=fc;

if(b-a<

EPS)break;

}

printf("

c=%f,fc=%f"

c,fc);

}

2.实例验证结果:

1)方程:

f(x)=x3+x2-3x-3=0

2)输入初始参数:

a=1,b=2,EPS=5e-6

3)结果输出:

3.改变a,b的值为:

a=0,b=2,EPS不变,仍为5e-6,其结果为:

4.改变EPS的值为:

EPS=5e-4,a,b不变,仍为a=1,b=2,其结果为:

1.估算次数与实际二分次数的分析和讨论

2.输入不同的区间初值a,b,二分次数的变化情况

3.输入不同的误差限EPS,二分次数的变化情况

七、心得

实验三方程求根2——牛顿迭代法

1)通过对牛顿迭代法的编程练习,掌握方程求根的牛顿迭代法的算法;

2)通过对牛顿迭代法的上机运算,进一步体会牛顿迭代法的特点。

用迭代法的结构,增设4个工作单元F0,F0’,F1,F1’,并把用作终止迭代的误差控制改为两个|x1-x0|<

EPS或|f(x1)|<

DELTA。

1.准备:

选定初始值x0,计算F0=f(x0);

F0’=f’(x0),如果F0’=0,则输出“方法失败”并结束。

2.迭代:

对k=1,2,…,N,做:

1)x1=x0-F0/F0’,

2)计算F1=f(x1);

F1’=f’(x1)

3)若F1’=0,则输出“方法失败”并结束。

3.控制:

若|x1-x0|<

EPS或|F1|<

DELTA,则输出近似解x1和迭代次数k并结束;

否则,x0=x1;

F0=F1;

F0’=F1’。

4.k>

N时输出“经N次迭代无满足要求的近似解”结束。

F0=f(x0),F0’=f’(x0),k=0

x1=x0-F0/F0’,F1=f(x1),F1’=f’(x1),k=k+1,(可输出x1)

F1’=0||k>

N?

返出x1作为最终结果

x0=x1,F0=F1,

F0’=F1’

算法失败

输入x0,EPS,DELTA,N

F0’=0?

|x1-x0|<

EPT|||F1|<

DELTA?

1)牛顿迭代法的编程实现。

2)进行初值和误差限的比较和讨论。

2)根的初始值x0要求用输入语句输入。

1)完成牛顿迭代法的程序设计及录入;

4)分别输入两组不同的根的误差限,观察运算次数的变化;

5)分别取不同的初时值x0,观察运算结果的变化;

6)完成实验报告。

实验报告方程求根——牛顿迭代法

1.经编译、链接及例子验证结果正确的源程序:

#defineN100

#defineeps1e-6

#defineeta1e-8

floatx=1,x1,a,fx,fx1;

intk=0;

do

fx=x*x*x+x*x-3*x-3;

fx1=3*x*x+2*x-3;

a=x-fx/fx1;

x=a;

printf("

a=%f\n"

x);

while(fabs(fx/fx1)>

=eps);

x0=1,EPS=1e-6

3.改变初值x0的值为:

x0=1.5,EPS不变,仍为1e-6,其结果为:

4.改变初值x0的值为:

x0=0.1,EPS不变,仍为1e-6,其结果为:

5.改变EPS的值为:

EPS=5e-4,x0不变,仍为1,其结果为:

6.改变EPS的值为:

EPS=1e-3,x0不变,仍为1,其结果为:

1.输入不同的初值x0,迭代次数的变化情况

2.输入不同的误差限EPS,迭代次数的变化情况

实验四:

线性方程组数值解法——列主元高斯消去法

1)熟悉列主元高斯消元法解线性方程组的算法;

2)掌握列主元高斯消去法的编程。

列主元高斯消去法的编程实现。

消元:

对k=0,2,…,n-2,按下列步骤进行:

●选主元:

找出mє{k,k+1,…,n-1},使

●若|am,k|<

DELTA,则A奇异,结束程序,否则继续

●若m≠k,交换第k行与第m行对应的元素(换行):

●消元:

对i=k+1,…,n-1,计算l=lik=aik/akk;

对j=k+1,…,n-1,n,计算aij=aij-lik*akj=aij-l*akj

回代:

●若|ann|<

●xn-1=an-1,n/an-1,n-1

●对i=n-2,…,1,0,计算:

1)方程组的矩阵系数用二维数组表示,不用指针,且其值要求用输入语句输入。

(数组形式的完成,经检查后,有能力的可以改用指针方式)

2)方程组的元数n要求用输入语句输入。

3)加入中间运算结果的显示,以便于检查程序。

4)列主元解方程组方法写成函数形式。

如:

voidColPivot(floata[10][11],intn,floatx[10])

1)完成列主元高斯消去法解线性方程组的程序设计及录入、编辑;

3)用书上P52例2的例子对程序进行验证,并进行修改;

4)用完成的程序解算习题中的题目。

实验五:

插值法——拉格朗日插值多项式

1)熟悉拉格朗日插值多项式,注意其特点。

2)掌握拉格朗日插值法的编程。

拉格朗日插值法的编程实现。

1)输入数据:

n,x[i],y[i](i=0,1,2,……,n-1),xx

2)初始化:

li=1,yy=0

3)计算:

i循环(外循环):

j循环(内循环)(j=0,1,2,…,n-1):

(i=0,1,2,…,n-1)

yy=0

li=li*(xx-x[j])/(x[i]-x[j])

i=j?

输出yy

for(j=0;

j<

=n;

j++)

输入n,x[],y[],xx

li=1

yy=yy+li*y[i]

for(i=0;

i<

i++)

1)插值节点个数n用输入语句输入。

2)用输入语句输入各节点的数据xi,yi(i=0,1,2,…,n)。

3)用输入语句输入待插值点的x值xx。

1)完成拉格朗日插值多项式进行插值的程序设计及录入、编辑;

实验六:

曲线拟合——最小二乘法

1)了解最小二乘法的基本原理,熟悉最小二乘算法;

2)掌握最小二乘进行曲线拟合的编程,通过程序解决实际问题。

1)最小二乘进行多项式拟合的编程实现。

2)用完成的程序解决实际问题。

1)输入数据节点数n,拟合的多项式次数m,循环输入各节点的数据xj,yj(j=0,1,…,n-1)

2)由xj求S;

由xj,yj求T:

Sk=

(k=0,1,2,…2*m)

Tk=

(k=0,1,2,…m)

3)由S形成系数矩阵数组ci,j:

c[i][j]=S[i+j](i=0,1,2,…m,j=0,1,2,…,m);

由T形成系数矩阵增广部分ci,m+1:

c[i][m+1]=T[i](i=0,1,2,…m)

4)对线性方程组CA=T[或

],用列主元高斯消去法求解系数矩阵A=(a0,a1,…,am)T

AX=B或[]

1)直接调用高斯消去法解方程组的函数。

2)数据节点数n,拟合次数m,及数据xj,yj(j=0,1,…,n-1)要求用输入语句输入。

3)数据使用数组方式,不用指针方式。

4)实验报告中写出计算公式,所有脚标要求与程序中的循环变量对应。

5)加入中间运算结果的显示,以便于检查程序。

1)完成最小二乘法进行曲线拟合的程序设计及录入、编辑;

3)用书上P105例2的例子对程序进行验证,并进行修改;

4)用完成的程序求解下面的实际问题。

5)完成实验报告。

问题:

作物体运动的观测实验,得出以下实验测量数据,用最小二乘拟合求物体的运动方程。

时间t(秒)

0.9

1.9

3.0

3.9

5.0

距离s(cm)

10

30

50

80

110

解题步骤:

(1)画草图

(2)确定拟合方程

(3)用完成的程序输入数据,求取拟合方程中的未知数,得出方程。

(实验报告见下一页)

显示拟合结果、计算误差的程序例子:

//显示结果

y=%f"

x[0]);

for(i=1;

i<

n;

i++)

if(x[i]>

=0)printf("

+%f"

x[i]);

elseprintf("

%f"

for(j=0;

j<

i;

j++)printf("

*x"

//计算误差

e=0;

for(i=0;

nn;

p=x[0];

for(j=1;

=m;

j++)

l=1;

for(k=0;

k<

j;

k++)

l=l*xx[i];

p+=l*x[j];

e+=(p-yy[i])*(p-yy[i]);

}//计算误差结束

\nTheerroris%f.\n"

e);

//显示误差

实验报告曲线拟合——最小二乘法

3)用书上P105例2的例

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2