统计专业数值分析上机实习

上传人:工**** 文档编号:468304628 上传时间:2023-01-27 格式:DOC 页数:86 大小:1.79MB
返回 下载 相关 举报
统计专业数值分析上机实习_第1页
第1页 / 共86页
统计专业数值分析上机实习_第2页
第2页 / 共86页
统计专业数值分析上机实习_第3页
第3页 / 共86页
统计专业数值分析上机实习_第4页
第4页 / 共86页
统计专业数值分析上机实习_第5页
第5页 / 共86页
点击查看更多>>
资源描述

《统计专业数值分析上机实习》由会员分享,可在线阅读,更多相关《统计专业数值分析上机实习(86页珍藏版)》请在金锄头文库上搜索。

1、上机实验李雪娇 章社生武汉理工大学统计系二零一二年二月前言 数值分析(numerical analysis)是研究分析用计算机求解数学计算问题的数值计算方法及其理论的学科,是数学的一个分支,它以数字计算机求解数学问题的理论和方法为研究对象。运用数值分析解决问题的过程:实际问题数学模型数值计算方法程序设计上机计算求出结果。数值分析这门学科有如下特点:1.面向计算机;2.有可靠的理论分析;3.要有好的计算复杂性;4.要有数值实验;5.要对算法进行误差分析。其主要内容有插值法,函数逼近,曲线拟合,数值积分,数值微分,解线性方程组的直接方法,解线性方程组的迭代法,非线性方程求根,常微分方程的数值解法。

2、数值计算离不开好的计算方法,也离不开好的编程能力。人类社会已经迈入电子计算机时代,熟练地运用计算机进行科学计算,是广大科技工作者的一项基本技能。本书基于MATLAB软件和C语言给出各种算法的程序代码,在理论知识和实际应用间建立起桥梁。本书以一个学生的角度编写,贴近大学生的思维方式,能够激励学生独立思考问题和创新的意识;把基础理论的研究、方法构造的思路与利用MATLAB和C语言有机地结合起来。虽然现在很多软件具有数值计算的能力,但是使用者不能根据自己的实际情况来进行操作,存在着固有的局限性。本书详细地给出各种算法的代码(除特别说明外,每节中的例题指令是独立完整的,因此读者可以很容易地在自己机器上

3、实践),读者可以根据自己的使用情况加以修改,留给了读者巨大的自我创新空间。本书利用算法编程分析、算法语言实现与说明文字配合的方式,旨在培养读者的科学精神和创新思维习惯,重视培养读者的收集处理信息的能力、获取知识的能力和分析解决问题的能力。对于那些经过大学基本数学教程的读者来说,通过本书,MATLAB精良完善的计算指令,自然易读的程序将使他们感悟“教程”数学的基础地位和局限性,看到从“理想化”简单算例通向科学研究和工程设计实际问题的一条途径。本书参加编写的还有李雪娇,阮向奎,肖先国,张维,张亮,江斌,朱海清,陈晓静,曹亮成,高丽莎,李营,于建华,郑洋,陈攀,马超,郑晓亮,劳展杰。限于编著者水平,

4、书中难免有怒当或失误之处,敬请广大读者朋友批评指正。 目录第一章 秦九韶算法5第二章 插值方法92.1 泰勒插值92.2 拉格朗日插值122.3 埃尔米特插值152.4 分段插值182.5 牛顿插值公式232.6 埃特金(Aitken)算法252.7 三次埃乐米特插值公式27第三章 数值积分293.1数值积分各公式的导出293.2各积分公式的复化形式303.3 龙贝格积分373.4两点高斯公式及其复化公式393.5三点导数公式41第四章 常微分方程的差分方法434.1一步欧拉方法434.2二步欧拉方法454.3隐式欧拉方法及其改进方法464.4 龙格-库塔方法484.5 四阶亚当姆斯方法52第

5、五章 方程求根的方法555.1 二分法555.2 简单迭代法575.3 牛顿法595.4 弦截法61第六章 线性方程组求根的方法636.1 雅克比迭代法636.2 高斯-塞德尔迭代法646.3 高斯消元法666.4追赶法686.5 矩阵行范数706.6 矩阵的列范数716.7 矩阵的2范数726.8 矩阵的特征根根736.9主元消元法746.10 高斯消元法3750章引论; 1章 1)牛顿插值公式-江斌;2)三次埃尔米特插值-郑洋;3)三次样条函数;4)直线拟合-郑晓亮;5)多项式拟合-郑晓亮;6)多元回归;2.4埃特金算法-肖先国2章1)龙贝格积分-江斌, 陈晓静;2)随机抽样积分法;2)二

6、维重积分计算;3)三维重积分计算;4)三点导数公式-高丽莎;5)五点导数公式-高丽莎;6)中点加速法求导数-高丽莎3章1)二阶亚当姆斯方法-张亮;2)三阶亚当姆斯方法-张亮;3)四阶亚当姆斯方法-张亮;4)预报校正亚当姆斯方法-张亮;5)高阶方程差分法;6)方程组差分法-于建华;7)二阶线性边值问题差分法;4章F(x,y)=0计算5章1)矩阵的行范数-朱海清;2)矩阵的列范数-朱海清;3)矩阵的2-范数-朱海清;4)最大特征根计算-曹亮成;5);最大特征根的特征向量计算-曹亮成;6)最小特征根计算-曹亮成;7);最小特征根的特征向量计算-曹亮成;6章1)追赶法-曹亮成-张亮-伟文;2)LU分解

7、-郑晓亮;3)平方根法-郑晓亮;4)改进平方根法-郑晓亮;松弛因子法-郑晓亮;5)主元消去法-黄伟文;6)矩阵条件数计算-李营,其后有学生名字的不要选。可以加上其它书已外的内容。本书参加编写的还有李雪娇,阮向奎,肖先国,张维,张亮,江斌,朱海清,陈晓静,曹亮成,高丽莎,李营,于建华,第一章 引论11 秦九韶算法秦九韶算法是一种将一元n次多项式的求值问题转化为n个一次式的算法。其大大简化了计算过程,即使在现代,利用计算机解决多项式的求值问题时,秦九韶算法依然是最优的算法。本章将通过秦九韶算法来了解递推的思想。递推化的基本思想是将一个复杂的计算过程归结为简单过程的多次重复,这种重复在算法上表现为循

8、环。例如,对给定的求解下列多项式的值 (1)先采用直接逐项求和的算法,我们用表示的次幂,表示式(1)右端前项的部分和,则有 (2)作为初值,令(3)利用初值(3)对k=1,2,.,直到n反复执行公式(2),最终得到的就是所要求的值。计算上述算法的计算量为2n次乘法,当n很大时,这种算法的效率不高。下面我们来介绍秦九韶算法。先将公式(1)按照降幂的次序重排为再进行降幂处理(4)从公式(4)中得到下列递推式 这一算法的计算量为n次乘法。可见,利用递推公式比利用直接求和的效率高出一半。下图为秦九韶算法的框架示意图。图1-1该算法看似简单,其最大的意义在于将求n次多项式的值转化为求n个一次多项式的值。

9、在人工计算时,利用秦九韶算法和其中的系数表可以大幅简化运算;对于计算机程序算法而言,加加法比乘法的计算效率要高很多,因此该算法仍有极大的意义,对于计算机来说,做一次乘法运算所用的时间比作一次加法运算要长得多,所以此算法极大地缩短了CPU运算时间。下面给出秦九韶算法的程序代码。matlab代码1.1clear all;x=input(多项式中x的取值);n=input(多项式的次数n);a=input(系数矩阵,按x降幂的顺序输入);v0=a(n+1);for i=1:n v1=v0*x+a(n+1-i); v0=v1;endp=v0C语言代码1.1#include#includevoid ma

10、in()float a100,v,x;int n,i,j;printf(输入多项式的次数和x的值);scanf(%d%f,&n,&x);printf(按照递增顺序输入多项式前的系数);for(i=0;i=n;i+)scanf(%f,&ai);v=an;j=1;while(j=n)v=x*v+an-j;j+=1;printf(多项式的值为%f,v);C语言代码1.1。1#include#include #includevoid main()int i,n;float *a,x,p;printf(* 多项式求值程序(秦九韶算法) *nn);printf(请输入待计算多项式的次数n:);scanf(

11、%d,&n);a=(float *)malloc(sizeof(float)*n);printf(请输入待计算的多项式的每项系数a0,a1,.,an:);for(i=0;i=n;i+)scanf(%f,&ai);printf(请输入待计算多项式的x的值:);scanf(%f,&x);p=an;for(i=1;i=n;i+)p=x*p+an-i;printf(p(%f)=%fnn,x,p);free(a);system(pause);实例:求解多项式的值。图1-2图1-31 2求解一元二次方程设一元二次方程为它的求根公式为C语言 (求解一元二次方程)#include#includevoid ma

12、in()float a,b,c,D,x1,x2,r,i;printf(* 一元二次方程的求解程序 *nn);printf(请输入方程的三个系数a(不为零),b,c,以【英文状态】下的逗号隔开,并按回车键确认:);scanf(%f,%f,%f,&a,&b,&c);D=b*b-4*a*c;if(fabs(D)1e-5)x1=(-b+sqrt(D)/(2*a);x2=(-b-sqrt(D)/(2*a);printf(该方程有两个不等实根: x1=%f x2=%fnn,x1,x2);elser=-b/(2*a);i=sqrt(-D)/(2*a);printf(该方程有两个共轭复根: x1=%f+%fi

13、,r,i);printf( x2=%f-%finn,r,i);system(pause);第二章 插值方法 插值法是函数逼近的一种重要方法,是数值计算的基本课题。它利用函数f (x)在某区间中若干点的函数值,作出适当的特定函数,在这些点上取已知值,在区间的其他点上用这特定函数的值作为函数f (x)的近似值。选用不同类型的插值函数,会有不同的插值效果。由于代数多项式的结构简单,数值计算和理论分析都很方便,实用上常取代数多项式作为插值函数,这就是所谓的代数插值。2.1 泰勒插值 泰勒插值是一种泰勒展开方法。已知泰勒多项式(1)与f(x)在点具有相同的导数值 因此,在点邻近会很好的逼近f(x)。不同该插值函数也存在着固有的缺点,要求提供f(x)在点处的各阶导数值,这项要求很苛刻。当函数f(x)的表达式简单时,泰勒插值会方便计算。现给出一次和二次泰勒插值的代码。matlab代码2.1.1clear all;%一次泰勒插值syms x;x0=input(已知的x0的取值);f=input(函数的形式,s);g=input(函数的一阶导数形式,s);f=inlin

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号