数值计算方法实验报告课案
本科生实验报告
实验课程 数值计算与方法
学院名称
专业名称
学生姓名
学生学号
指导教师
实验地点
实验成绩
二〇一六 年 四 月 二〇一六年 五 月
目录
实验一:舍入误差与数值稳定2
1.1 目的与要求2
1.2 舍入误差和数值稳定性2
1.2.1 概要2
1.2.2 程序和实例2
实验二:方程求根5
2.2 二分法5
2.2.1 算法5
2.2.2 程序与实例5
实验三 牛顿迭代法7
2.3.1 算法7
实验三 牛顿迭代法10
2.3.1 算法10
实验四: 列主元高斯消去法13
4.1 算法13
4.2 程序与实例14
实验五:牛顿插值多项式16
5.1 算法16
5.2 程序与实例16
实验一:舍入误差与数值稳定
1.1 目的与要求
(1)通过上机编程,复习巩固以前所学程序设计语言及上机操作指令;
(2)通过上机计算,了解舍入误差所引起的数值不稳定性。
1.2 舍入误差和数值稳定性
1.2.1 概要
舍入误差在计算方法中是一个很重要的概念。在实际计算中如果选用了不同的算法,由于舍入误差的影响,将会得到截然不同的结果。因此,选取稳定的算法在实际计算中是十分重要的。
1.2.2 程序和实例
对n=0,1,2,…,40,计算定积分
算法1 利用递推公式
取 ≈0.182322
算法2 利用递推公式
(n=420,39,…,1)
注意到
取
算法1 C语言程序如下:
#include
#include
void main()
{
double y_0 = log(6.0/5.0),y_1; //定义两个变量y_1,y_2的值//
int n=1; //定义循环变量//
printf("y[0]=%-20f",y_0); //输出y[0]的值//
while(1) //用while循环进行递推运算//
{
y_1 = 1.0/n-5*y_0; //计算y[n]的值,y_0表示y[n+1],y[1]表示y[n]//
printf("y[%d]=%-20f",n,y_1); //输出计算的y[n]值,输出的数值不足20位的补齐空格//
if(n>=40)break; //n>=40,跳出循环//
y_0 = y_1; //将y_1的值给y_0成为下一次计算的y[n-1]//
n++; //n逐渐叠加//
if(n%2==0)printf("\n"); //每两个为一组换行//
}
}
算法2 C语言程序如下
#include
#include
void main()
{
double y_0=(1/205.0+1/246.0)/2,y_1; //定义两个双精度变量y_0,y_1,并给y_赋值//
int n=40; //赋值n=40//
printf("y[40]=%-20f",y_0); //将y以20的域宽输出,并输出y_0的值//
while(1)
{
y_1=1/(5.0*n)-y_0/5.0; //利用递推公式肌算y1//
printf("y[%d]=%-20f",n-1,y_1); //输出计算次数n-1级y_(n-1)的值//
if(n<=1