文档库 最新最全的文档下载
当前位置:文档库 › 理学院《程序设计与算法语言》实验预备知识一:编写第一个程序--简易方法

理学院《程序设计与算法语言》实验预备知识一:编写第一个程序--简易方法

理学院《程序设计与算法语言》实验预备知识一:编写第一个程序--简易方法
理学院《程序设计与算法语言》实验预备知识一:编写第一个程序--简易方法

信计系电科专业《程序设计与算法语言》实验预备知识

预备知识一用VC6.0开发环境编写第一个程序

1-1 在磁盘上新建一个文件夹,用于存放C程序,文件夹的名字可以是学号,如D:\3050888。

1-2 编程示例,在屏幕上显示一个短句“Hello World!”。

源程序

# include

int main( )

{

printf("Hello World! \n");

}

运行结果

Hello World!

作为本课程的第一个实验,在Visual C++编程环境下,以上述C语言源程序为例,介绍运行一个C程序的基本步骤,请大家按照以下步骤操作。

(1)启动VC++

执行“开始”—>“程序”—>“Microsoft Visual Studio 6.0”—> “Microsoft Visual C++ 6.0”,进入VC++编程环境(如图1.1所示)。

图1.1 VC++窗口

(2)新建文件

执行“文件/File”—>“新建/New”,单击“文件/Files”选项卡(如图1.2所示),先在“文件/File name”栏中输入test,把C源(程序)文件命名为test.cpp,在“目录/Location”框中选择你已经建立的文件夹,如,D:\3050888,然后选中“C++ Sourse Files”,单击“确定”按钮,在D:\3050888下就新建了文件test.cpp,并显示编辑窗口和信息窗口(如图1.3所示)。

图1.2 新建文件

(3)编辑和保存

在编辑窗口(如图1.3所示)中输入源程序,然后执行“文件/File ”—>“保存/Save ”或“文件/File ”—>“另存为/Save As ”,保存源文件。

图1.3 编辑源程序

(4)编译

执行“编译/Build ”—>“编译/Compile ”或Ctrl + F7(如图1.4所示),在“产生工作区”对话框中(如图1.5所示)选择“是/Y ”,开始编译,并在信息窗口显示编译信息(如图1.6所示)。

编辑窗口

信息窗口

1.单击Files 标签

2.单击C++ Source File

3.单击C++ Source File 输入文件名,注:保证扩

展名是.C 5.单击,选择磁盘

6.单击,选择文件夹

7.单击,选择二级文件夹

8.单击OK ,关闭对话框

9.单击OK

4.单击文件夹选择按钮

图1.4 编译源程序

图1.5 产生一个工作区

图1.6 编译正确

图1.6信息窗口中出现的“test.obj - 0 error(s), 0 warning(s)”,表示编译正确,没有发现(语法)错误和警告,并生成了目标文件test.obj。

如果显示有错误error(s),指程序中存在致命的错误,必须要改正;如果显示有警告

warning(s),虽然不影响生成目标文件,但通常也应该改正。

(5)连接

执行“编译/Build”—>“构件/Build”或F7,也可用“重建全部/Rebuild All”,开始连接,并在信息窗口显示连接信息(如图1.7所示)。

图1.7信息窗口中出现的“test.exe - 0 error(s), 0 warning(s)”表示连接成功,产生了可执行文件test.exe。

图1.7 连接成功并产生运行文件

(6)运行

执行“编译/Build”—>“执行/Execute”或Ctrl + F5(如图1.8所示),自动弹出运行窗口(如图1.9所示),显示运行结果“Hello World!”,其中“Press any key to continue”提示读者按任何键退出DOS窗口,返回到VC++编辑窗口。

图1.8 运行程序

图1.9 运行窗口

另外,上述功能也可以使用“编译连接”工具栏完成,它提供了常用的编译、连接以及运行操作命令。下表是编译、连接以及运行命令的功能列表。

“编译连接”工具栏

编译连接工具栏按钮命令及功能描述

Compile

Build

Go

(7)关闭程序工作区

执行“文件/File”—>“关闭工作区/Close Workspace”(如图1.10所示),在出现的对话框(如图1.11所示)中选择“是/Y”,关闭工作区。

图1.10 关闭程序工作区

图1.11 关闭所有文档窗口

(8)打开文件

如果要再次打开C源文件,可以执行“文件/File”—>“打开/Open”,在文件夹D:\3050888下选择文件test.cpp;或者在D:\3050888文件夹下,直接双击文件test.cpp。

(9)查看C源文件、目标文件和可执行文件的存放位置

经过编辑、编译、连接和运行后,在文件夹D:\3050888(如图1.12所示)和D:\3050888\Debug (如图1.13所示)中存放着有关的文件,其中源文件test.cpp在文件夹D:\3050888中,目标文件test.obj和可执行文件test.exe都在文件夹D\3050888\Debug中。

图1.12 文件夹“D:\3050888”

图1.13 文件夹“D:\3050888\debug ”

1-5 调试示例,在屏幕上显示一个短句“Welcome to You!”。

源程序(有错误的程序) # include int mian( ) {

printf(Welcome to You! \n") }

运行结果(改正后程序的运行结果)

Welcome to You!

(1)按照实验内容1-2中介绍的步骤,打开源程序error1_1.cpp 。 (2)编译,执行“编译/Build ”—>“编译/Compile ”,信息窗口中显示编译出错信息(如下图1.14所示)。

(3)找出错误,在信息窗口中双击第一条出错信息,编辑窗口就会出现一个箭头指向程序出错的位置(如图1.14所示),一般在箭头的当前行或上一行,可以找到出错语句。图1.14中箭头指向第4行,出错信息指出Welcome 是一个未定义的变量,但Welcome 并不是变量,出错的原因是Welcome 前少了一个双引号。

人为制造三个错误:

错误1:main 不对

错误2:(后少了双引号

错误3:语句末少分号

图1.14 编译产生的错误信息

(4)改正错误,在Welcome 前加上双引号后,重新编译,信息窗口显示本次编译的出错信息,第一条出错信息是“missing ';' before '}'”,双击该出错信息,箭头指向最后一行,出错信息指出在右大括弧 }前少了分号。

(5)再次改正错误,在 }前补上一个分号后重新编译信息窗口显示编译正确(如图1.15所示)。

图1.15 编译正确

(6)连接,执行“编译/Build ”—>“构件/Build ”或F7。信息窗口显示连接出错信息(如图1.16所示)。仔细观察、分析后发现,主函数名main 拼写错误,被误写为“mian ”。

错误信息

可以向右拖动翻滚

图1.16 连接产生的错误信息

(7)改正错误,把“mian”改为“main”后,重新连接,信息窗口显示连接正确(如图1.17所示)。

图1.17 连接正确

(8)运行,执行“编译/Build”—>“执行/Execute”或Ctrl + F5 ,自动弹出运行窗口(如图1.18所示),显示运行结果,与题目要求的结果一致,程序调试结束,读者按任意键返回。

图1.18 程序运行窗口

1-6 改错,改正下列程序中的错误,在屏幕上显示以下3行信息。(源程序error1_2.cpp) *************

Welcome

*************

源程序(有错误的程序)

# include

void mian( )

{

printf("*************\n");

printf(" Welcome\n")

printf("*************\n);

}

附:

C语言上机实验常见错误汇集

1.在源码中遗失“;”

调试器错误信息:syntax error : missing ';'

2.缺少命名空间使用定义:即缺少“using namespace std;”

调试器错误信息:例:error C2065: 'cout' : undeclared identifier

例如cout/cin/endl/<>等在命名空间中定义的符号和标示符无法使用。

3.变量未定义就直接使用

调试器错误信息:例:error C2065: 'i' : undeclared identifier

C++语言中,变量的使用必需遵循先声明定义,后使用的原则。

4.在程序中使用中文标示符,如将英文”;”错误输入成了”;”

调试器错误信息:error C2018: unknown character '0xa3'

在C++中,除程序注释可以采用中文外,其余字符要求使用英文。不少同学在建立工程或程序名称时也使用中文名称,建议改掉这种习惯。

5.在使用输入输出流的时候错误使用了标示符“>>”“<<”,例cout>>a;

调试器错误信息:例:error C2676: binary '>>' : 'class std::basic_ostream >' does not define this operator or a conversion to a type acceptable to the predefined operator

对于流操作的方向搞错是一个普遍错误,问题本来并不复杂,可能是由于没有认真看书的原因。6.定义的变量类型与使用不对应,如声明为float,但实际给与了一个double的值,例:

float pi=3.412345245656245;

调试器错误信息:warning C4305: 'initializing' : truncation from 'const double' to 'float'

7.变量在赋值之前就使用,例:int a, b, c; c=a+b; cin>>a>>b;

调试器错误信息:warning C4700: local variable 'a' used without having been initialized

出现这种错误主要是对面向过程的程序执行没有理解。

8.在一个工程中包含多于一个的main函数

error C2556: 'int __cdecl main(void)' : overloaded function differs only by return type from 'void __cdecl main(void)'

E:\temp\alskdf\ldid.cpp(4) : see declaration of 'main'

E:\temp\alskdf\ldid.cpp(15) : error C2371: 'main' : redefinition; different basic types

在上机课中始终有同学犯这种错误,原因可能是从来没有上过机。

9.在函数定义的()后面使用分号

例:void chang();

{

}

调试器错误信息:error C2447: missing function header (old-style formal list?)

10.函数声明/定义/调用参数个数不匹配.

例:void chang(int a,int b, float c)

{

}

void main()

{

chang(3,4);

}

调试器错误信息:error C2660: 'chang' : function does not take 2 parameters

数学知识点学练考-算法与程序框图

数学知识点学练考-算法与程序框图 【教法探析】 【一】创设情境: 算法能够用自然语言来描述,但为了使算法的程序或步骤表达得更为直观,我们更经常地用图形方式来表示它。 差不多概念: 〔1 序的开始和结束,因此一个完整的流程图的首末两端必须是起止框。 〔2 算法中的任何需要输入、输出的位置。 〔3 的图形符号。 〔4 个出口,它是惟一的具有两个或两个以上出口的符号,在只有两个出口的情形中,通常都分成“是”与“否”〔也可用“Y”与“N”〕两个分支。 〔5〕流程线::程序框与程序框间的连接线。 〔6〕连接点::连接程序框界点。

在学习这部分知识的时候,要掌握各个图形的形状、作用及使用规那么,画程序框图的规那么如下: 〔1〕使用标准的图形符号。 〔2〕框图一般按从上到下、从左到右的方向画。 〔3〕除判断框外,大多数流程图符号只有一个进入点和一个退出点。判断框具有超过一个退出点的惟一符号。 〔4〕判断框分两大类,一类判断框“是”与“否”两分支的判断,而且有且仅有两个结果;另一类是多分支判断,有几种不同的结果。 〔5〕在图形符号内描述的语言要特别简练清晰。 【二】算法的差不多逻辑结构: 1〕顺序结构:顺序结构描述的是是最简单的算法结构,语句与语句之间,框与框之间是按从上到下的顺序进行的。 2〕条件结构:一些简单的算法能够用顺序结构来表示,然而这种结构无法对描述对象进行逻辑判断,并依照判断结果进行不同的处理。因此,需要有另一种逻辑结构来处理这类问题,这种结构叫做条

件结构。它是依照指定条件选择执行不同指令的操纵结构。 【学法导引】 例1:一个三角形的三边分别为2、3、4,利用海伦公式设计一个算法,求出它的面积,并画出算法的程序框图。 算法分析:这是一个简单的问题,只需先算出p 的值,再将它代入公式,最后输出结果,只用顺序结构就能够表达出算法。 程序框图: 练习1积的框图。 例23个数为三边边长的三角形是否存在,画出那个算法的程序框图。 算法分析:判断分别以这3个数为三边边长的三角形是否存在,只需要验收这3个数当中任意两个数的和是否大于第3个数,这就需要用到条件结构。 程序框图: a+b>c,a+c>b,b+c>a 否同时成立? 是 课堂小结: 本节课要紧讲述了程序框图的差不多知识,包括常用的图形符号、算法的差不多逻辑结构,算法的差不多逻辑结构有三种,即顺序 结构、条件结构和循环结构。其中顺序结构是最简单的结构,也是最

数值计算实验课题目

数值实验课试题 本次数值实验课结课作业,请按题目要求内容写一篇文章。按题目要求 人数自由组合,每组所选题目不得相同(有特别注明的题目除外)。试题如下: 1)解线性方程组的Gauss 消去法和列主元Gauss 消去法(2人)/*张思珍,巩艳华*/ 用C 语言将不选主元和列主元Gauss 消去法编写成通用的子程序,然后用你编写的程序求解下列84阶的方程组 ???? ?????? ? ??=??????????? ????????????? ? ?1415151515768 168 168 168 1681684 8382321 x x x x x x 参考书目: 1.《计算机数值方法》,施吉林、刘淑珍、陈桂芝编 2.《数值线性代数》,徐树方、高立、张平文编 3.《数值分析简明教程》,王能超编 2)解线性方程组的平方根法(4人)/*朱春成、黄锐奇、张重威、章杰*/ 用C 语言将平方根法和改进的平方根法编写成通用的子程序,然后用你编写的程序求解对称正定方程组b Ax =,其中 (1)b 随机的选取,系数矩阵为100阶矩阵 ?????? ???? ? ? ?101 1101 1101 1101 1101110 ; (2)系数矩阵为40阶的Hilbert 矩阵,即系数矩阵A 的第i 行第j 列元素为 1 1-+= j i a ij ,向量b 的第i 个分量为∑=-+ = n j i j i b 1 1 1. 参考书目: 1.《计算机数值方法》,施吉林、刘淑珍、陈桂芝编 2.《数值线性代数》,徐树方、高立、张平文编

3.《数值分析简明教程》,王能超编 3)三对角线方程组的追赶法(3人)/*黄佳礼、唐伟、韦锡倍*/ 用C 语言将三对角线方程组的追赶法法编写成通用的子程序,然后用你编写的程序求解如下84阶三对角线方程组 ???? ?????? ? ??=??????????? ????????????? ? ?1415151515768 168 168 168 16816 84 8382321 x x x x x x 参考书目: 1.《计算机数值方法》,施吉林、刘淑珍、陈桂芝编 2.《数值分析简明教程》,王能超编 4)线性方程组的Jacobi 迭代法(3人)/*周桂宇、杨飞、李文军*/ 用C 语言将Jacobi 迭代法编写成独立的子程序,并用此求解下列方程组, 精确到小数点后5位 ???? ? ??=????? ??????? ? ?-149012 2111221 3 2 1 x x x 参考书目: 1.《计算机数值方法》,施吉林、刘淑珍、陈桂芝编 2.《数值线性代数》,徐树方、高立、张平文编 3.《数值分析简明教程》,王能超编 5)线性方程组的Gauss-Seidel 迭代法(3人)/*张玉超、范守平、周红春*/ 用C 语言将Gauss-Seidel 迭代法编写成独立的子程序,并用此求解下列方程组,精确到小数点后5位 ???? ? ??=????? ??????? ? ?--39721 1111112 3 2 1 x x x 参考书目: 1.《计算机数值方法》,施吉林、刘淑珍、陈桂芝编 2.《数值线性代数》,徐树方、高立、张平文编 3.《数值分析简明教程》,王能超编 6)解线性方程组的最速下降法法(2人)/*赵育辉、阿热孜古丽*/ 用C 语言将最速下降法编写成通用的子程序,然后用你编写的程序求解对称

数值分析实验报告1

实验一误差分析 实验1.1(病态问题) 实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。通过本实验可获得一个初步体会。 数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。 问题提出:考虑一个高次的代数多项式 显然该多项式的全部根为1,2,…,20共计20个,且每个根都是单重的。现考虑该多项式的一个扰动 其中ε(1.1)和(1.221,,,a a 的输出b ”和“poly ε。 (1(2 (3)写成展 关于α solve 来提高解的精确度,这需要用到将多项式转换为符号多项式的函数poly2sym,函数的具体使用方法可参考Matlab 的帮助。 实验过程: 程序: a=poly(1:20); rr=roots(a); forn=2:21 n form=1:9 ess=10^(-6-m);

ve=zeros(1,21); ve(n)=ess; r=roots(a+ve); -6-m s=max(abs(r-rr)) end end 利用符号函数:(思考题一)a=poly(1:20); y=poly2sym(a); rr=solve(y) n

很容易的得出对一个多次的代数多项式的其中某一项进行很小的扰动,对其多项式的根会有一定的扰动的,所以对于这类病态问题可以借助于MATLAB来进行问题的分析。 学号:06450210 姓名:万轩 实验二插值法

曲线拟合的数值计算方法实验

曲线拟合的数值计算方法实验 【摘要】实际工作中,变量间未必都有线性关系,如服药后血药浓度与时间的关系;疾病疗效与疗程长短的关系;毒物剂量与致死率的关系等常呈曲线关系。曲线拟合(curve fitting)是指选择适当的曲线类型来拟合观测数据,并用拟合的曲线方程分析两变量间的关系。曲线直线化是曲线拟合的重要手段之一。对于某些非线性的资料可以通过简单的变量变换使之直线化,这样就可以按最小二乘法原理求出变换后变量的直线方程,在实际工作中常利用此直线方程绘制资料的标准工作曲线,同时根据需要可将此直线方程还原为曲线方程,实现对资料的曲线拟合。常用的曲线拟合有最小二乘法拟合、幂函数拟合、对数函数拟合、线性插值、三次样条插值、端点约束。 关键词曲线拟合、最小二乘法拟合、幂函数拟合、对数函数拟合、线性插值、三次样条插值、端点约束 一、实验目的 1.掌握曲线拟合方式及其常用函数指数函数、幂函数、对数函数的拟合。 2.掌握最小二乘法、线性插值、三次样条插值、端点约束等。 3.掌握实现曲线拟合的编程技巧。 二、实验原理 1.曲线拟合 曲线拟合是平面上离散点组所表示的坐标之间的函数关系的一种数据处理方法。用解析表达式逼近离散数据的一种方法。在科学实验或社会活动中,通过 实验或观测得到量x与y的一组数据对(X i ,Y i )(i=1,2,...m),其中各X i 是彼此不同的。人们希望用一类与数据的背景材料规律相适应的解析表达式,y=f(x,c)来反映量x与y之间的依赖关系,即在一定意义下“最佳”地逼近或 拟合已知数据。f(x,c)常称作拟合模型,式中c=(c 1,c 2 ,…c n )是一些待定参 数。当c在f中线性出现时,称为线性模型,否则称为非线性模型。有许多衡量拟合优度的标准,最常用的一种做法是选择参数c使得拟合模型与实际观测值在

汇编语言第一章预备知识

第一章预备知识 汇编语言是面向机器的低级语言: 和其他计算机语言相比,能够充分利用计算机硬件特性;随机器的不同而不同。 学习汇编语言必须做到: 了解特定机器的硬件;了解其数据类型的表示方法;了解其指令系统等。 本章的内容包括: 什么是汇编语言; 汇编源程序举例; 汇编和调试过程; 寄存器组 1.1 机器语言与汇编语言 人们用计算机语言操纵计算机,和计算机交流信息。一般来说,计算机语言可以分为以下几类: 低级语言是面向机器的,为特定机器提出的; 高级语言是面相人的,接近于自然语言,为了方便人们使用提

出的。 一、 机器语言 机器指令:能够被计算机识别,并能直接加以执行的语句。 机器语言:由机器指令构成的集合。 机器指令也叫做硬指令,不同类型的CPU 都有自己特有的、一定数量的基本指令,组成其特有的机器语言。 机器指令用二进制代码来表示,这样才能够被计算机识别并直接执行。 机器指令的一般形式为:例如:

完成操作:MOV AX, 7FH; 7FH →AX 操作码指出了运算的种类,如数据传送、加减运算等。地址码指出了参与运算的操作数和运算结果的存放位置。 用机器语言编程,就意味着要用二进制数0和1编写程序。这样做效率很低,而且容易出错。但为了能够充分利用硬件特性,在一些时候仍然需要用低级语言编程,因此人们想办法对机器语言进行改进,提出了汇编语言。此后很少直接使用机器语言了。 二、 汇编语言 从本质上看,汇编语言是一种符号化的机器语言: 用助记符表示机器指令的操作码; 用变量代替操作数的存放地址; 用在语句前加一个标号,来代表该指令的存放地址。 汇编语言的主要操作与机器指令一一对应,是一种用符号书写的(不再是二进制代码)、并遵循一定语法规则的计算机语言。例如: 1011 1000 0111 1111 0000 0000 操作码:1011,MOV 目的操作数:1000,AX 源操作数:0000 0000 0111 1111,立即数

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

本科实验报告 课程名称:计算机数值方法 实验项目:方程求根、线性方程组的直接解 法、线性方程组的迭代解法、代数插值和最 小二乘拟合多项式 实验地点:行勉楼 专业班级: ******** 学号: ********* 学生姓名: ******** 指导教师:李誌,崔冬华 2016年 4 月 8 日

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 : 定义控制台应用程序的入口点。// #include "stdafx.h" #include"iostream"

心得体会 使用不同的方法,可以不同程度的求得方程的解,通过二分法计算的程序实现更加了解二分法的特点,二分法过程简单,程序容易实现,但该方法收敛比较慢一般用于求根的初始近似值,不同的方法速度不同。面对一个复杂的问题,要学会简化处理步骤,分步骤一点一点的循序处理,只有这样,才能高效的解决一个复杂问题。

高一数学必修三,算法与程序框图知识点及题型

第二节算法与程序框图 一、基础知识 1.算法 (1)算法通常是指按照一定规则解决某一类问题的明确和有限的步骤. (2)应用:算法通常可以编成计算机程序,让计算机执行并解决问题. 2.程序框图 程序框图又称流程图,是一种用程序框、流程线及文字说明来表示算法的图形.3.三种基本逻辑结构 (1)顺序结构 (2)条件结构

(3)循环结构 三种基本逻辑结构的适用情境 (1)顺序结构:要解决的问题不需要分类讨论. (2)条件结构:要解决的问题需要分类讨论. (3)循环结构:要解决的问题要进行许多重复的步骤,且这些步骤之间有相同的规律.考点一顺序结构和条件结构

[例1] (2019·沈阳质检)已知一个算法的程序框图如图所示,当输出的结果为0时,输入的实数x 的值为( ) A .-3 B .-3或9 C .3或-9 D .-3或-9 [解析] 当x ≤0时,y =????12x -8=0,x =-3;当x >0时,y =2-log 3x =0,x =9.故x =-3或x =9,选B. [答案] B [例2] 某程序框图如图所示,现输入如下四个函数,则可以输出的函数为( ) A .f (x )=cos x x ????-π 2

C .f (x )=|x | x D .f (x )=x 2ln(x 2+1) [解析] 由程序框图知该程序输出的是存在零点的奇函数,选项A 、C 中的函数虽然是奇函数,但在给定区间上不存在零点,故排除A 、C.选项D 中的函数是偶函数,故排除D.选B. [答案] B [解题技法] 顺序结构和条件结构的运算方法 (1)顺序结构是最简单的算法结构,语句与语句之间、框与框之间是按从上到下的顺序进行的.解决此类问题,只需分清运算步骤,赋值量及其范围进行逐步运算即可. (2)条件结构中条件的判断关键是明确条件结构的功能,然后根据“是”的分支成立的条件进行判断. (3)对于条件结构,无论判断框中的条件是否成立,都只能执行两个分支中的一个,不能同时执行两个分支. [题组训练] 1.半径为r 的圆的面积公式为S =πr 2,当r =5时,计算面积的流程图为( ) 解析:选D 因为输入和输出框是平行四边形,故计算面积的流程图为D. 2.运行如图所示的程序框图,可输出B =______,C =______.

数值计算实验报告

(此文档为word格式,下载后您可任意编辑修改!) 2012级6班###(学号)计算机数值方法 实验报告成绩册 姓名:宋元台 学号: 成绩:

数值计算方法与算法实验报告 学期: 2014 至 2015 第 1 学期 2014年 12月1日课程名称: 数值计算方法与算法专业:信息与计算科学班级 12级5班 实验编号: 1实验项目Neton插值多项式指导教师:孙峪怀 姓名:宋元台学号:实验成绩: 一、实验目的及要求 实验目的: 掌握Newton插值多项式的算法,理解Newton插值多项式构造过程中基函数的继承特点,掌握差商表的计算特点。 实验要求: 1. 给出Newton插值算法 2. 用C语言实现算法 二、实验内容 三、实验步骤(该部分不够填写.请填写附页)

1.算法分析: 下面用伪码描述Newton插值多项式的算法: Step1 输入插值节点数n,插值点序列{x(i),f(i)},i=1,2,……,n,要计算的插值点x. Step2 形成差商表 for i=0 to n for j=n to i f(j)=((f(j)-f(j-1)(x(j)-x(j-1-i)); Step3 置初始值temp=1,newton=f(0) Step4 for i=1 to n temp=(x-x(i-1))*temp*由temp(k)=(x-x(k-1))*temp(k-1)形成 (x-x(0).....(x-x(i-1)* Newton=newton+temp*f(i); Step5 输出f(x)的近似数值newton(x)=newton. 2.用C语言实现算法的程序代码 #includeMAX_N) { printf("the input n is larger than MAX_N,please redefine the MAX_N.\n"); return 1; } if(n<=0) { printf("please input a number between 1 and %d.\n",MAX_N); return 1; } printf("now input the (x_i,y_i)i=0,...%d\n",n); for(i=0;i<=n;i++) { printf("please input x(%d) y(%d)\n",i,i);

算法与程序框图 习题含答案

算法与程序框图习题(含答案) 一、单选题 1.执行如图所示的程序框图输出的结果是() A.B.C.D. 2.已知某程序框图如图所示,则执行该程序后输出的结果是 A.B. C.D. 3.下图是把二进制的数化成十进制数的一个程序框图,则判断框内应填入的条件是()

A.B.C.D. 4.我国元朝著名数学家朱世杰在《四元玉鉴》中有一首待:“我有一壶酒,携着游春走,遇店添一倍,逢有饮一斗,店友经三处,没有壶中酒,借问此壶中,当原多少酒?”用程序框图表达如图所示,即最终输出的,问一开始输入的() A.B.C.D. 5.中国有个名句“运筹帷幄之中,决胜千里之外”.其中的“筹”原意是指《孙子算经》中记载的算筹,古代是用算筹来进行计算,算筹是将几寸长的小竹棍摆在平面上进行运算,算筹的摆放形式有纵横两种形式,如下表: 表示一个多位数时,像阿拉伯计数一样,把各个数位的数码从左到右排列,但各位数码的筹式需要纵横相间,个位,百位,万位用纵式表示,十位,千位,十万位用横式表示,以此类推,例如2268用算筹表示就是=||丄|||.执行如图所示程序框图,若输人的x=1, y = 2,则输出的S用算筹表示为 A.B.C.D. 6.在中,,,边的四等分点分别为,靠近,执行下图算法后结果为() A.6 B.7 C.8 D.9 7.宋元时期名著《算学启蒙》中有关于“松竹并生”的问题:松长五尺,竹长五尺,若输入的分别是5,2,则输出的=()

A.B.C.D. 8.如图所示的程序框图,输出的 A.18B.41 C.88D.183 9.执行图1所示的程序框图,则S的值为()

图1 A.16B.32 C.64D.128 二、填空题 10.我国南北朝时期的数学家张丘建是世界数学史上解决不定方程的第一人,他在《张丘建算经》中给出一个解不定方程的百鸡问题,问题如下:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一.百钱买百鸡,问鸡翁母雏各几何?用代数方法表述为:设鸡翁、鸡母、鸡雏的数量分别为,,,则鸡翁、鸡母、鸡雏的数量即为方程组 的解.其解题过程可用框图表示如下图所示,则框图中正整数的值为______. 11.运行如图所示的程序,若输入的是,则输出的值是__________.

数值分析实验报告1

实验一 误差分析 实验(病态问题) 实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。通过本实验可获得一个初步体会。 数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。 问题提出:考虑一个高次的代数多项式 )1.1() ()20()2)(1()(20 1∏=-=---=k k x x x x x p 显然该多项式的全部根为1,2,…,20共计20个,且每个根都是单重的。现考虑该多项式的一个扰动 )2.1(0 )(19=+x x p ε 其中ε是一个非常小的数。这相当于是对()中19x 的系数作一个小的扰动。我们希望比较()和()根的差别,从而分析方程()的解对扰动的敏感性。 实验内容:为了实现方便,我们先介绍两个Matlab 函数:“roots ”和“poly ”。 roots(a)u = 其中若变量a 存储n+1维的向量,则该函数的输出u 为一个n 维的向量。设a 的元素依次为121,,,+n a a a ,则输出u 的各分量是多项式方程 01121=+++++-n n n n a x a x a x a 的全部根;而函数 poly(v)b =

的输出b 是一个n+1维变量,它是以n 维变量v 的各分量为根的多项式的系数。可见“roots ”和“poly ”是两个互逆的运算函数。 ;000000001.0=ess );21,1(zeros ve = ;)2(ess ve = ))20:1((ve poly roots + 上述简单的Matlab 程序便得到()的全部根,程序中的“ess ”即是()中的ε。 实验要求: (1)选择充分小的ess ,反复进行上述实验,记录结果的变化并分析它们。 如果扰动项的系数ε很小,我们自然感觉()和()的解应当相差很小。计算中你有什么出乎意料的发现表明有些解关于如此的扰动敏感性如何 (2)将方程()中的扰动项改成18x ε或其它形式,实验中又有怎样的现象 出现 (3)(选作部分)请从理论上分析产生这一问题的根源。注意我们可以将 方程()写成展开的形式, ) 3.1(0 ),(1920=+-= x x x p αα 同时将方程的解x 看成是系数α的函数,考察方程的某个解关于α的扰动是否敏感,与研究它关于α的导数的大小有何关系为什么你发现了什么现象,哪些根关于α的变化更敏感 思考题一:(上述实验的改进) 在上述实验中我们会发现用roots 函数求解多项式方程的精度不高,为此你可以考虑用符号函数solve 来提高解的精确度,这需要用到将多项式转换为符号多项式的函数poly2sym,函数的具体使用方法可参考Matlab 的帮助。

数值计算方法实验5

实验报告 学院(系)名称: 主程序部分列选主元部分

实验结果: 一.列主元消去法 输入各个数据,最终使用列选主元法,得到结果为:x1=x2=x3=1二.高斯-赛德尔迭代法 输入各个数据,输出每一步迭代数据,最终结果为:x1=0.285716,附录(源程序及运行结果) 一.列主元高斯消去法 #include #include void print(double a[3][3],int n,double b[3]){ printf("输出矩阵:\n"); for(int i=0;ifabs(d)){ d=a[i][k]; l=i; } i++; } printf("选出主元:%lf\n",d); if(d==0) printf("矩阵奇异!\n"); else if(l!=k){ for(int j=k;j

专题:算法与程序框图[学生版]

专题:算法与程序框图 1.如下图,程序框图所进行的求和运算是( ) A.23111222+++ (10) 12+ B.11123+++ (110) + C.111246+++ (118) + D.111246+++ (120) + 2.在可行域内任取一点,规则如下程序框图所示,则能输出数对(x,y)的概率为( ) A.14 B.2π C.4π D.8 π 3.已知程序框图如下图所示,若输入n=6,则该程序运行的结果是( ) A.2 B.3 C.4 D.15 4.流程线的功能是( ) A.表示算法的起始和结束 B.表示算法输入和输出的信息 C.赋值、计算 D.按照算法的顺序连接程序框 6.在一个算法中,如果需要反复执行某一处理步骤,最好采用的逻辑结 构是( ) A.顺序结构 B.条件结构 C.循环结构 D.顺序结构 或条件结构 9.已知某算法的程序框图如图所示,若将输出的(x,y)值依次记为 1122()()x y x y ,,,,…()n n x y ,,,… (1)若程序运行中输出的一个数组是(9,t),则t= ; (2)程序结束时,共输出(x,y)的组数为 .

10.下边程序框图给出的程序执行后输出的结果是. 4.下图是一个算法的程序框图,则输出S的值是. 2.如下程序框图,则最后输出的结果是( ) A.5 049 B.4 850 C.2 450 D.2 550 4.如果下边程序运行后输出的结果是132,那么在程序中UNTIL后面的“条件”应为( ) A.i>11 B.i>=11 C.i<=11 D.i<11 6.阅读下边的程序框图,运行相应的程序,则输出s的值为( ) A.-1 B.0 C.1 D.3

(完整版)数值计算方法上机实习题答案

1. 设?+=1 05dx x x I n n , (1) 由递推公式n I I n n 1 51+-=-,从0I 的几个近似值出发,计算20I ; 解:易得:0I =ln6-ln5=0.1823, 程序为: I=0.182; for n=1:20 I=(-5)*I+1/n; end I 输出结果为:20I = -3.0666e+010 (2) 粗糙估计20I ,用n I I n n 51 5111+- =--,计算0I ; 因为 0095.05 6 0079.01020 201 020 ≈<<≈??dx x I dx x 所以取0087.0)0095.00079.0(2 1 20=+= I 程序为:I=0.0087; for n=1:20 I=(-1/5)*I+1/(5*n); end I 0I = 0.0083 (3) 分析结果的可靠性及产生此现象的原因(重点分析原因)。 首先分析两种递推式的误差;设第一递推式中开始时的误差为000I I E '-=,递推过程的舍入误差不计。并记n n n I I E '-=,则有01)5(5E E E n n n -==-=-Λ。因为=20E 20020)5(I E >>-,所此递推式不可靠。而在第二种递推式中n n E E E )5 1(5110-==-=Λ,误差在缩小, 所以此递推式是可靠的。出现以上运行结果的主要原因是在构造递推式过程中,考虑误差是否得到控制, 即算法是否数值稳定。 2. 求方程0210=-+x e x 的近似根,要求4 1105-+?<-k k x x ,并比较计算量。 (1) 在[0,1]上用二分法; 程序:a=0;b=1.0; while abs(b-a)>5*1e-4 c=(b+a)/2;

(完整版)哈工大-数值分析上机实验报告

实验报告一 题目:非线性方程求解 摘要:非线性方程的解析解通常很难给出,因此线性方程的数值解法就尤为重要。本实验采用两种常见的求解方法二分法和Newton法及改进的Newton法。 前言:(目的和意义) 掌握二分法与Newton法的基本原理和应用。 数学原理: 对于一个非线性方程的数值解法很多。在此介绍两种最常见的方法:二分法和Newton法。 对于二分法,其数学实质就是说对于给定的待求解的方程f(x),其在[a,b]上连续,f(a)f(b)<0,且f(x)在[a,b]内仅有一个实根x*,取区间中点c,若,则c恰为其根,否则根据f(a)f(c)<0是否成立判断根在区间[a,c]和[c,b]中的哪一个,从而得出新区间,仍称为[a,b]。重复运行计算,直至满足精度为止。这就是二分法的计算思想。

Newton法通常预先要给出一个猜测初值x0,然后根据其迭代公式 产生逼近解x*的迭代数列{x k},这就是Newton法的思想。当x0接近x*时收敛很快,但是当x0选择不好时,可能会发散,因此初值的选取很重要。另外,若将该迭代公式改进为 其中r为要求的方程的根的重数,这就是改进的Newton法,当求解已知重数的方程的根时,在同种条件下其收敛速度要比Newton法快的多。 程序设计: 本实验采用Matlab的M文件编写。其中待求解的方程写成function的方式,如下 function y=f(x); y=-x*x-sin(x); 写成如上形式即可,下面给出主程序。 二分法源程序: clear %%%给定求解区间 b=1.5; a=0;

%%%误差 R=1; k=0;%迭代次数初值 while (R>5e-6) ; c=(a+b)/2; if f12(a)*f12(c)>0; a=c; else b=c; end R=b-a;%求出误差 k=k+1; end x=c%给出解 Newton法及改进的Newton法源程序:clear %%%% 输入函数 f=input('请输入需要求解函数>>','s') %%%求解f(x)的导数 df=diff(f);

算法与程序框图练习题(整理)

算法与程序框图练习题 1、 2、 A 、若某程序图如图所示,则该程序运行后输出的k的值是_____________ . 阅读右边的程序框图,运行相应的程序,若输出x的值为-二,则输出y的值()0.5 B、1 C、2 D、4 3如右框图,当4■.,:|.■时,乜等于( ) A 、B、8 C、10 D、11 /输人X2轴X、/ x.-xMx.-x 4、5、 「开始i k=k+ 1 a=4k 否 输出k b=k4 a>b? 是 阅读右边的程序框图, A、3 B、4 执行右面的程序框图, A、8 B、5 输入 1 1 :| F = 11亠釘 L “ c结東J 运行相应的程序,则输出:的值为() C、5 如果输入的 D、6 n是4,则输出的P是, 6、执行如图所示的程序框图, /SX^7 [P口暑十 广 [x ■!. p- 1 L f Z1S7 7

7、右图中,门,二:,心为某次考试三个评阅人对同一道题的独立评分,-r,为该题的最终得分,当V- = - 一二 时,p等于()A、11B、10 C、8 D、7 &若执行如图2所示的框图,输入为=?,I 】- '+_则输出的数等于 9、若执行如图3所示的框图,输入人-, '| -—-—,则输出的数等 于 10、执行右面得程序框图,如果输入 的 A、120 B、720 11、执行如图所示的程序框图,若输入 12、执行如图所示的程序框图,输出 的 13、如图所示,程序框图(算法流程 图) :'是6,那么输出的是() C1440D、5040 A的值为2,则输出的P值为() A、 1 s值为()A、-3B、 幵始 1 现二2 -J-1 f 1 >-1^.t 1 否 的输出结果是

数值分析实验报告总结

数值分析实验报告总结 随着电子计算机的普及与发展,科学计算已成为现代科 学的重要组成部分,因而数值计算方法的内容也愈来愈广泛和丰富。通过本学期的学习,主要掌握了一些数值方法的基本原理、具体算法,并通过编程在计算机上来实现这些算法。 算法算法是指由基本算术运算及运算顺序的规定构成的完 整的解题步骤。算法可以使用框图、算法语言、数学语言、自然语言来进行描述。具有的特征:正确性、有穷性、适用范围广、运算工作量少、使用资源少、逻辑结构简单、便于实现、计算结果可靠。 误差 计算机的计算结果通常是近似的,因此算法必有误差, 并且应能估计误差。误差是指近似值与真正值之差。绝对误差是指近似值与真正值之差或差的绝对值;相对误差:是指近似值与真正值之比或比的绝对值。误差来源见表 第三章泛函分析泛函分析概要 泛函分析是研究“函数的函数”、函数空间和它们之间 变换的一门较新的数学分支,隶属分析数学。它以各种学科

如果 a 是相容范数,且任何满足 为具体背景,在集合的基础上,把客观世界中的研究对象抽 范数 范数,是具有“长度”概念的函数。在线性代数、泛函 分析及相关的数学领域,泛函是一个函数,其为矢量空间内 的所有矢量赋予非零的正长度或大小。这里以 Cn 空间为例, Rn 空间类似。最常用的范数就是 P-范数。那么 当P 取1, 2 ,s 的时候分别是以下几种最简单的情形: 其中2-范数就是通常意义下的距离。 对于这些范数有以下不等式: 1 < n1/2 另外,若p 和q 是赫德尔共轭指标,即 1/p+1/q=1 么有赫德尔不等式: II = ||xH*y| 当p=q=2时就是柯西-许瓦兹不等式 般来讲矩阵范数除了正定性,齐次性和三角不等式之 矩阵范数通常也称为相容范数。 象为元素和空间。女口:距离空间,赋范线性空间, 内积空间。 1-范数: 1= x1 + x2 +?+ xn 2-范数: x 2=1/2 8 -范数: 8 =max oo ,那 外,还规定其必须满足相容性: 所以

【高职高考】【代数】第一章预备知识

第一章 预备知识 §1.1方程与方程组 方程 含有未知数的等式叫方程 使方程左右两边相等的未知数的值,叫方程的解 一元一次方程 形如0(0)ax b a +=≠的方程叫一元一次方程 0(0)ax b a +=≠的解是b x a =- 一元一次方程求解 例1 解方程5337x x -=+ 解:由5373x x -=+得 ∴5373 210 5 x x x x -=+== 一元二次方程 形如20(0)ax bx c a ++=≠的方程叫一元二次方程 一元二次方程求解 例2 解方程2 90x -= 解: 由2 90x -=得 29 3,3 x x x ==-= 例3 解方程2 250x x -= 解:由2 250x x -= 得(25)0x x -= 0,250 5 0,2x x x x ∴=-=== 例4 解方程2 560x x -+= 解:可由十字相乘法得 256(2)(3)x x x x -+=-- 2560x x -+= 即(2)(3)0x x --= 20,30x x -=-= 得2,3x x == 若上述方法都不容易做,就用公式法 一元二次方程2 0(0)ax bx c a ++=≠的求根公式是

2b x a -±= ?20(0)ax bx c a ++=≠的根的判别式 (1)当0?>时,一元二次方程20(0)ax bx c a ++=≠有两个不相等的实数根,反之,当一元二次方程有两个不相等的实数根时,0?> (2)当0?=时,一元二次方程20(0)ax bx c a ++=≠有两个相等的实数根,反之,当一元二次方程有两个相等的实数根时,0?= (3)0?<时,一元二次方程20(0)ax bx c a ++=≠没有实数根,反之,当一元二次方程没有实数根时,0?< 例5 解方程2 2410x x -+= 解:2,4,1a b c ==-= 22 x == = = 原方程的解为122222 x x == 例6 当k 是什么值时,一元二次方程2(1)230k x kx k -+++= (1)有两个不相等的实数根 (2)有两个相等的实数根 (3)没有实数根 解:1,2,3a k b k c k =-==+ 22222 2 4(2)4(1)(3)44(23)44812812 b a c k k k k k k k k k k ?=-=-?-?+=-+-=--+=-+ (1)由8120k ?=-+>,所以32 k < , 又10a k =-≠,得1k ≠ 即当3 2 k < 且1k ≠时,原方程有两个不相等的实数根 (2)由8120k ?=-+=,得3 2 k = 所以当3 2 k =原方程有两个相等的实数根 (3)由8120k ?=-+<,得3 2 k > 所以当3 2 k >原方程没有实数根 一元二次方程根与系数的关系

数值分析实验报告1

实验一 误差分析 实验1.1(病态问题) 实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。通过本实验可获得一个初步体会。 数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。 问题提出:考虑一个高次的代数多项式 )1.1() ()20()2)(1()(20 1∏=-=---=k k x x x x x p 显然该多项式的全部根为1,2,…,20共计20个,且每个根都是单重的。现考虑该多项式的一个扰动 )2.1(0 )(19=+x x p ε 其中ε是一个非常小的数。这相当于是对(1.1)中19x 的系数作一个小的扰动。我们希望比较(1.1)和(1.2)根的差别,从而分析方程(1.1)的解对扰动的敏感性。 实验内容:为了实现方便,我们先介绍两个Matlab 函数:“roots ”和“poly ”。 roots(a)u = 其中若变量a 存储n+1维的向量,则该函数的输出u 为一个n 维的向量。设a 的元素依次为121,,,+n a a a ,则输出u 的各分量是多项式方程 01121=+++++-n n n n a x a x a x a 的全部根;而函数 poly(v)b = 的输出b 是一个n+1维变量,它是以n 维变量v 的各分量为根的多项式的系数。可见“roots ”和“poly ”是两个互逆的运算函数。 ;000000001.0=ess );21,1(zeros ve = ;)2(ess ve =

高一数学算法初步知识点与题型总结

第十一章 算法初步与框图 一、知识网络 ※知识回顾 1.算法的概念:算法通常是指按一定规则解决某一类问题的明确和有限的步骤. 2.程序框图又称流程图,是一种用程序框、流程线及文字说明来表示算法的图形. 3.程序框图的三种基本逻辑结构是顺序结构、条件结构、循环结构. 4.算法的描述方式有:自然语言、程序框图、程序语言. 5.算法的基本特征:①明确性:算法的每一步执行什么是明确的;②顺序性:算法的“前一步”是“后一步”的前提,“后一步”是“前一步”的继续;③有限性:算法必须在有限步内完成任务,不能无限制的持续进行;④通用性:算法应能解决某一类问题. ※典例精析 例1.如图所示是一个算法的程序框图,则该程序框图所表示的功能是 解析:首先要理解各程序框的含义,输入a,b,c三个数之后,接着判断a,b的大小,若b小,则把b 赋给a,否则执行下一步,即判断a与c的大小,若c小,则把c赋给a, 否则执行下一步,这样输出的a是a,b,c三个数中的最小值.所以该程序框图所表示的功能是求a,b,c三个数中的最小值. 评注: 求a,b,c三个数中的最小值的算法设计也可以用下面程序框图来表示. 例2.下列程序框图表示的算法功能是() (1)计算小于100的奇数的连乘积 (2)计算从1开始的连续奇数的连乘积 (3)计算从1开始的连续奇数的连乘积,当乘积大于100时,计算奇数的个数 (4)计算成立时的最小值 解析:为了正确地理解程序框图表示的算法,可以将执行过程分解,分析每一步执行的结果.可以看出 程序框图中含有当型的循环结构,故分析每一次循环的情况,列表如下: 第一次:; 第二次:; 第三次:,此时不成立,输出结果是7,程序框图表示的算法功能是求使 成立时的最小值. 选D. 算 法 初 步 算法与程序框图 算法语句 算法案例 算法概念 框图的逻辑结构 输入语句 赋值语句 循环语句 条件语句 输出语句 顺序结构 循环结构 条件结构

第1章高等数学规划预备知识

第1章 预备知识 §1.1 基本概念与术语 1.1.1 数学规划问题举例 例1 食谱(配食)问题 ● 假设市场上有n 种不同的食物,第j 种食物每个单位的销售价为),,2,1(n j c j 。 ● 人体在正常生命活动过程中需要m 种基本的营养成分。为了保证人体的健康,一个人 每天至少需要摄入第i 种营养成分),,2,1(m i b i 个单位。 ● 第j 种食物的每个单位包含第i 种营养成分ij a 个单位。 食谱(配食)问题就是要求在满足人体基本营养需求的前提下,寻找最经济的配食方案(食谱)。 建立食谱的数学模型 引入决策变量i x :食谱中第i 种食物的单位数量 i n i i x c 1 min s.t.m i b x a i j n j ij ,,2,1 ,1 n j x j ,,2,1 ,0 例2 选址与运输问题 ● 假设某大型建筑公司有m 个项目在不同的地点同时开工建设.记工地的位置分别为 m i b a P i i i ,,2,1 ),,( . ● 第i 个工地对某种建筑材料的日用量是已知的(比如水泥的日用量(单位:t )为i D ). ● 该公司准备分别在),(111y x T 和),(222y x T 两个地点建造临时料场,并且保证临时料 场对材料的日储量(单位:t )分别为1M 和2M . 如何为该公司确定临时料场的位置,并且制订每天的材料供应计划,使建筑材料的总体运输负担最小? 建立选址与运输问题的数学模型 引入决策变量:位置变量),(k k y x ,从临时料场向各工地运送的材料数量 ),,2,1 ;2,1(m i k z ki . 211 22)()(min k m i i k i k ki b y a x z s.t.2,1 ,1 k M z k m i ki

相关文档
相关文档 最新文档