《计算机数值方法B》实验指导书 下载本文

《计算机数值方法》

实验指导书

计算机科学与技术与学院计算机科学与技术系

目 录

实验一 方程求根 ....................................................... 1 实验二 线性方程组的直接解法 ........................................... 3 实验三 线性方程组的迭代解法 ........................................... 8 实验四 代数插值 ....................................................... 9

实验一 方程求根

【目的与要求】

1.了解方程求根的基本方法、基本原理、误差估计; 2.能够按照工程实际要求,选择适当的算法; 3.通过编写程序,进行算法设计和数值求解。 【实验内容】

1. 熟悉使用二分法、迭代法、牛顿法、割线法等方程求根的基本方法、基本原理、误差估计的相关理论。

2. 选择方程求解方法中的两种方法求方程:f(x)=x3+4x2-10=0在[1,2]内的一个实根,且要求满足精度|x*-xn|<0.5×10-5。 【示例程序】

增值寻根法又叫做逐步搜索法,是求解方程根的一种方法,也是初步确定方程隔根区间的一种方法。增值寻根法的基本思想是:从初值x0开始, 按规定的一个初始步长h来增值:

xn+1= xn+h n=0,1,2,3…… 同时计算f(xn+1)可能遇到三种情形: (1) f(xn+1)=0,此时,xn+1即为方程的根x*; (2) f(xn+1)* f(xn)>0,说明[xn+1, xn]内无根; (3) f(xn+1)* f(xn)<0,说明[xn+1, xn]内有根;

搜索过程,可从a开始,也可从b开始,这时应取更小的步长h,直到有根区间的长度|xn+1-xn|

基于增值寻根法,设计程序如下: #include double fun(double x){

double y=x*x;

- 1 -

}

return y*x+4*y-10;

void main(void) { }

double x0=-4,x; double h=1; double step=0; x=x0;

while(h>0.000001){

cout<<\ h=\ ------\ }

cout<<\

while(true){ } h=h/10;

step++; if(fun(x)==0){ }

else if(fun(x)*fun(x+h)>0){

x+=h; continue;

cout<<\h=0; break;

}else if(fun(x)*fun(x+h)<0){ }

cout<<\cout<<\break;

- 2 -