内容发布更新时间 : 2025/1/8 16:22:55星期一 下面是文章的全部内容请认真阅读。
实验一 迭代格式的比较
一、 问题提出
设方程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
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( \}
运行结果如下: