东北大学数值分析实验报告 下载本文

内容发布更新时间 : 2024/5/2 13:46:59星期一 下面是文章的全部内容请认真阅读。

实验一 迭代格式的比较

一、 问题提出

设方程f(x

3*- 3x –1=0 有三个实根 x1=1.8793 ,

*x*=-0.34727 ,x求 f(x)=023=-1.53209现采用下面三种不同计算格式,

*的根 x1 或x*2

1、 x =

3x?1 x2x3?1

2、 x =

3

3、 x = 33x?1 二、要求

1、编制一个程序进行运算,最后打印出每种迭代格式的敛散情况; 2、用事后误差估计xk?1?xk??次数;

3、初始值的选取对迭代收敛有何影响; 4、分析迭代收敛和发散的原因。 三、目的和意义

1、通过实验进一步了解方程求根的算法; 2、认识选择计算格式的重要性; 3、掌握迭代算法和精度控制; 4、明确迭代收敛性与初值选取的关系。

四、程序设计流程图

五、源程序代码 #include #include float one(float x0) {

x1=(3*x0+1)/(x0*x0); return(x1); }

float two(float x0) {

x2=(pow(x0,3)-1)/3; return(x2); }

float three(float x0) {

x3=pow(3*x0+1,0.33333); return(x3); }

void main() {

float x,x0; float x1,x2,x3; int k1,k2,k3;

printf(please input x0=\; scanf(\,&x); x0=x; x1=one(x0);

printf(\第一个公式迭代结果:\\n\while(fabs(x0-x1)>1e-5) {

printf(\x0=x1; x1=one(x0); k1++; }

printf(\printf( \x0=x;

x2=two(x0);

printf(\第二个公式迭代结果为:\\n\while(fabs(x0-x2)>1e-5) {

printf(\x0=x; x1=two(x0); k2++; }

printf(\printf( \x0=x;

x3=three(x0);

printf(\第三个公式迭代结果为:\\n\while(fabs(x0-x3)>1e-5) {

printf(\x0=x;

x1=three(x0); k3++; }

printf(\printf( \}

运行结果如下: