1条回答 默认 最新
- 技术专家团-Joel 2021-10-27 19:46关注
你好同学,代码供参考:
z = 2; for i = 1:30 n = i+1; z = 2^(n-1/2)*sqrt(1-sqrt(1-4^(1-n)*z^2)); fprintf('迭代%d次,z=%.8f,误差%.8f%%\n', i, z, abs(z-pi)/pi*100); end
结果
迭代1次,z=2.82842712,误差9.96836838% 迭代2次,z=3.06146746,误差2.55046416% 迭代3次,z=3.12144515,误差0.64131489% 迭代4次,z=3.13654849,误差0.16056070% 迭代5次,z=3.14033116,误差0.04015469% 迭代6次,z=3.14127725,误差0.01003958% 迭代7次,z=3.14151380,误差0.00250995% 迭代8次,z=3.14157294,误差0.00062749% 迭代9次,z=3.14158773,误差0.00015687% 迭代10次,z=3.14159142,误差0.00003922% 迭代11次,z=3.14159235,误差0.00000980% 迭代12次,z=3.14159258,误差0.00000245% 迭代13次,z=3.14159263,误差0.00000064% 迭代14次,z=3.14159265,误差0.00000004% 迭代15次,z=3.14159265,误差0.00000026% 迭代16次,z=3.14159261,误差0.00000147% 迭代17次,z=3.14159291,误差0.00000819% 迭代18次,z=3.14159413,误差0.00004684% 迭代19次,z=3.14159655,误差0.00012414% 迭代20次,z=3.14159655,误差0.00012414% 迭代21次,z=3.14167427,误差0.00259777% 迭代22次,z=3.14182968,误差0.00754485% 迭代23次,z=3.14245127,误差0.02733069% 迭代24次,z=3.14245127,误差0.02733069% 迭代25次,z=3.16227766,误差0.65842421% 迭代26次,z=3.16227766,误差0.65842421% 迭代27次,z=3.46410162,误差10.26577908% 迭代28次,z=4.00000000,误差27.32395447% 迭代29次,z=0.00000000,误差100.00000000% 迭代30次,z=0.00000000,误差100.00000000%
可见随着迭代次数增加,最终z并没有收敛到pi,而是越来越趋于0.
这是因为4的-n次方快速收敛到了0,而根号里面一个1减去一个接近于1的数,两个相近的数相减会导致误差传递,同时大数2的n次方乘以相减之后的小数,最终结果的谬误就更大了
有帮助望采纳呢本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
- ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
- ¥15 手机接入宽带网线,如何释放宽带全部速度
- ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
- ¥15 ETLCloud 处理json多层级问题
- ¥15 matlab中使用gurobi时报错
- ¥15 这个主板怎么能扩出一两个sata口
- ¥15 不是,这到底错哪儿了😭
- ¥15 2020长安杯与连接网探
- ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么