计算方法实验指导书h1.docx

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

计算方法实验指导书h1.docx

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

计算方法实验指导书h1.docx

计算方法实验指导书h1

《计算方法》实验指导书

“计算方法”课程的任务有两个:

其一,掌握以计算机为计算工具的各类数值计算方法及与此相关的理论;其二,利用学到的计算机编程语言,将各类数值计算方法,编写计算程序、上机调试通过。

因此,本课程不仅具有数学的抽象性与严格性,还具有与计算机密切结合的实用性。

“计算方法”课程的上机实习,是实现上述课程教学目的的重要手段。

是将学到的计算机编程语言,结合具体任务,进行实践的必要过程。

是学生计算机能力培养的一个重要环节。

按照课程教学要求,本课程的总学时为:

48学时,其中理论教学为28学时,实验教学学时为20学时。

20学时的上机实习中,设计有8个实习内容,每个内容的学时安排如下:

实验1:

舍入误差与数值稳定性验证性(2学时)

实验2:

方程求根—1——二分法综合性(2-4学时)

实验3:

方程求根—2——牛顿迭代法综合性(2-4学时)

实验4:

线性方程组数值解法设计性(4-6学时)

实验5:

插值法设计性(2学时)

实验6:

曲线拟和综合性(4-6学时)

实验7:

数值积分设计性(2学时)

实验8:

常微分方程的数值解法设计性(2学时)

序号

项目

名称

实验课时

内容提要

教学要求

(了解观察、熟悉、掌握、熟练掌握及运用等)

实验

类别

实验方式

适用

专业

备注

1

舍入误差与数值稳定性

2

录入、编辑、调试程序,熟悉C语言;通过不同算法的选用,了解舍入误差与数值的稳定性。

熟悉C语言程序设计及上机操作;

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

验证性

教师指导,学生独立完成

测控技术与仪器

必修

2

方程求根—1

(二分法)

2-4

学生根据给定的要求,编写二分法程序,并调试通过;通过实验输入不同的参数,了解该方法的特点。

完成实习报告。

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

熟悉二分法的特点。

综合性

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

测控技术与仪器

必修

3

方程求根—2

(牛顿迭代法)

2-4

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

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

完成实习报告。

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

熟悉牛顿迭代法的特点。

综合性

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

测控技术与仪器

必修

4

线性方程组数值解法

(列主元高斯消去法)

4-6

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

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

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

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

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

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

设计性

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

测控技术与仪器

必修

5

插值法

(拉格朗日插值法)

2

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

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

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

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

设计性

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

测控技术与仪器

选修

6

曲线拟合

(最小二乘法)

4-6

熟悉最小二乘法的算法;

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

用程序解决实际问题。

完成实习报告。

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

熟悉最小二乘算法;

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

通过程序解决实际问题。

综合性

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

测控技术与仪器

必修

7

数值积分

(龙贝格算法)

2

熟悉龙贝格求积的算法;

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

掌握龙贝格求积的算法;

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

设计性

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

测控技术与仪器

选修

8

常微分方程的数值解法

(改进欧拉方法)

2

熟悉改进欧拉方法;

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

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

掌握改进欧拉算法;

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

设计性

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

测控技术与仪器

选修

实验报告的要求:

(实验项目,例:

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

班级:

学号:

姓名:

一、目的和要求

二、实习内容

三、算法

四、实验步骤

五、实验结果

六、分析和讨论

七、心得(*可选)

①调试过程中遇到的问题和解决对策;②经验体会等。

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

目的与要求:

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|

(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<0?

y

n

提示无根

准备

二分

判断

实验内容:

1)二分法的编程实现。

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

编程要求:

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

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

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

实验步骤:

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

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

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

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

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

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

7)完成实验报告。

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

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

班级:

学号:

姓名:

一、目的和要求

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

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

二、实习内容

1)二分法的编程实现。

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

三、算法

流程图:

计算:

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

计算:

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

|fc|

(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<0?

y

n

提示无根

准备

二分

判断

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即可作为所求的根。

 

四、实验步骤

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

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

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

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

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

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

7)完成实验报告。

五、实验结果

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

#include

#include

#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)

if(fa*fc<0)

{

b=c;

fb=fc;

}

elseif(fc*fb<0)

{

a=c;

fa=fc;

}

if(b-a

}

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|

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|

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’

算法失败

y

n

y

n

输入x0,EPS,DELTA,N

F0’=0?

n

y

|x1-x0|

实验内容:

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

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

编程要求:

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

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

实验步骤:

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

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

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

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

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

6)完成实验报告。

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

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

班级:

学号:

姓名:

一、目的和要求

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

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

二、实习内容

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

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

三、算法

流程图:

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’

算法失败

y

n

y

n

输入x0,EPS,DELTA,N

F0’=0?

n

y

|x1-x0|

算法:

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

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|

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

四、实验步骤

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

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

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

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

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

6)完成实验报告。

五、实验结果

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

#include

#include

#defineN100

#defineeps1e-6

#defineeta1e-8

voidmain()

{

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);

printf("a=%f\n",x);

}

2.实例验证结果:

1)方程:

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

2)输入初始参数:

x0=1,EPS=1e-6

3)结果输出:

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|

●若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)完成列主元高斯消去法解线性方程组的程序设计及录入、编辑;

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

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

n

y

li=1

yy=yy+li*y[i]

for(i=0;i<=n;i++)

编程要求:

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

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

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

实验步骤:

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

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

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

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

实验六:

曲线拟合——最小二乘法

目的与要求:

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)完成最小二乘法进行曲线拟合的程序设计及录入、编辑;

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

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

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

5)完成实验报告。

问题:

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

时间t(秒)

0

0.9

1.9

3.0

3.9

5.0

距离s(cm)

0

10

30

50

80

110

解题步骤:

(1)画草图

(2)确定拟合方程

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

(实验报告见下一页)

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

//显示结果

printf("y=%f",x[0]);

for(i=1;i

{

if(x[i]>=0)printf("+%f",x[i]);

elseprintf("%f",x[i]);

for(j=0;j

}

//计算误差

e=0;

for(i=0;i

{

p=x[0];

for(j=1;j<=m;j++)

{

l=1;

for(k=0;k

l=l*xx[i];

p+=l*x[j];

}

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

}//计算误差结束

printf("\nTheerroris%f.\n",e);//显示误差

}

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

班级:

学号:

姓名:

一、目的和要求

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)完成程序的编译和链接,并进行修改;

3)用书上P105例2的例

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

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

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

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