求助各位吧友,我想通过一个程序求解Q,就是通过不断循环使a+
vb吧
全部回复
仅看楼主
level 5
halo◎º
楼主
求助各位吧友,我想通过一个程序求解Q,就是通过不断循环使a+b+c+d逼近48000000000000,但是运行结果总是随着q的取值变化,想知道是哪里出了问题
2022年07月20日 14点07分
1
level 15
初音✨七奈
你这是用的穷举法啊
其实应该也可以,关键问题是你的求根区间有问题啊,你就在(Q,Q+1]这么一个小范围内穷举么(严格来说甚至不算穷举,你只试了其中的1000个数)
首先,你应该设法确定求根区间(有的方法可能不需要事先确定区间,从一个点就可以逐步趋近根的位置,但是以我有限的知识,我感觉那个方法对你这个方程比较难用);然后,穷举并不是一个好的方法,我个人建议改用二分法
暂时先标记一下你这个帖子,现在有点晚了,有机会我可能会试试自己解决一下这个问题
2022年07月20日 16点07分
2
halo◎º
感谢大佬,我回头学一下二分法
2022年07月21日 01点07分
初音✨七奈
我自己试过了,“那个方法”其实也不算难用,我说的就是牛顿切线法,关键就是要自己计算出导数公式而已;这样理论上就不需要预先确定求根区间了,任意给Q一个初始值都能计算出结果,不过你这里给的最终误差限似乎太小了,毕竟Double最多也只有15位有效数字
2022年07月21日 03点07分
初音✨七奈
顺便,我求了一个结果大约是162,是正确的么?
2022年07月21日 03点07分
halo◎º
@初音✨七奈
感谢大佬,我也算出来是162,没问题
2022年07月21日 03点07分
1