数值计算方法上机报告.doc
文本预览下载声明
数值计算方法上机报告
列主元素高斯消去法
程序说明
程序设计思想
主要思想是通过初等变换消去方程组系数矩阵主对角线以下的元素,而使方程组化为等价的上三角方程组,再通过回代求出方程组的解。为避免在消元过程确定乘数时所用除数是零或绝对值小的数,通过列选主元,将绝对值大的元素行交换到主对角线上。
列选主元是当消元到第k步时,从k列的以下(包括)的各元素中选出绝对值最大的,行交换到的位置上。交换系数矩阵中的两行(包括常数项),只相当于两个方程的位置交换了,因此,列选主元不影响解的结果。
列选主元消元所得系数矩阵已经是上三角矩阵,因此只要记录其换行次数即可轻易求得该方程组系数矩阵的行列式值。
由于并非所有方程组都有惟一解,因此对于奇异方程组,程序针对消元后的系数矩阵进行检测,发现全零行则不予继续求解,而是输出无惟一解信息提示。
程序流程图
程序使用说明
本程序使用的是列主元素消去法,是一种直接法,理论上可用于精确求解所有线性代数方程组,是解低阶稠密矩阵方程组及某些大型稀疏方程组(如大型带状方程组)的有效方法。作为直接法,它的优点是可以预先估计计算的工作量。由于列选主元比全选主元运算量小,且一般可以满足精度要求,因此列选主元法是十分常用的计算机算法。
使用时只需要在程序所在文件夹创建一个in.txt文件,在其中依次输入方程组的阶次和增广矩阵,执行本程序就可以自动在程序所在文件夹建立一个out.txt文件输出方程组的解和其系数矩阵行列式的值。
详细使用说明见程序注释。
计算结果
本程序我运行并验证过,已经没有问题了。有in、out,in1、out1,in2、out2三次运行结果保存下来了。针对老师给定的题目的运行结果存在了out2中,结果如下:
编程特色与创新
本程序做到了精约明了,重复利用了一些变量数组,还排除了奇异方程组的干扰,并顺便求解了系数矩阵的行列式值。
LU分解法
程序说明
程序设计思想
本程序用的LU分解法属于矩阵分解法,是高斯消去法的一种变形。如果一个线性方程组主子式不为零,则可将方程组的系数矩阵惟一分解为一个单位下三角阵L和一个上三角阵U,之后两次回代即可得解。
程序流程图
程序使用说明
本程序使用的是LU分解法,是一种直接法,理论上可用于精确求解所有线性代数方程组,是解低阶稠密矩阵方程组及某些大型稀疏方程组(如大型带状方程组)的有效方法。作为直接法,它的优点是可以预先估计计算的工作量。
使用时只需要在程序所在文件夹创建一个in.txt文件,在其中依次输入方程组的阶次和增广矩阵,执行本程序就可以自动在程序所在文件夹建立一个out.txt文件,依次输出l矩阵、u矩阵、该方程组的解向量及其系数矩阵的行列式值。
详细使用说明见程序注释。
计算结果
本程序我运行并验证过,已经没有问题了。有in、out,in1、out1,in2、out2三次运行结果保存下来了。针对老师给定的题目的运行结果存在了out2中,结果如下:
编程特色与创新
本程序做到了精约明了,重复利用了一些变量数组,还排除了奇异方程组的干扰,并顺带求出了系数矩阵的行列式值。输出结果都用了文字说明,一目了然。
拉格朗日插值
程序说明
程序设计思想
用插值基函数构造某个简单函数作为不便于处理或计算的函数的近似值,然后通过处理简单函数获得不便处理或计算的函数的近似结果。
程序流程图
程序使用说明
本程序使用的是拉格朗日插值法,只需要创建一个in.txt文件,在其中依次输入插值多项式的次数、已知点的横纵坐标、和待估点的横坐标。执行本程序就可以自动建立一个out.txt文件输出待估点的纵坐标。
特别要注意输入数据的格式,一定要输入的点数比插值多项式的次数多一。
详细使用说明见程序注释。
计算结果
我用的验证性函数1是,输入的插值横坐标是1,(out.txt)输出结果为-1;验证性函数2是,输入的插值横坐标是0.5,(out1.txt)输出结果为-1.875。而针对给定的题目2次插值的结果(out2.txt,out3.txt)为18.8638和18.3638,由于给了4个点,因此可以进行3次插值,结果(out4.txt,out5.txt)为18.3254和17.7883
编程特色与创新
本程序十分简短,主要是因为拉格朗日插值基函数十分有规律,由于核心算法十分简单,因此也没必要做何创新。
二次多项式曲线拟合
程序说明
程序设计思想
要求误差平方和最小的拟合称为曲线拟合的最小二乘法。
程序流程图
程序使用说明
使用时只需要在程序所在文件夹创建一个in.txt文件,在其中依次输入观测所得(已知)数据个数及其值、拟合多项式次数和待求点的横坐标,执行本程序就可以自动在程序所在文件夹建立一个out.txt文件,依次输出带有有文字提示的结果。(输出格式如下面的计算结果所示。)
详细使用说明
显示全部