对于VBA的人来说,这是一个很简单的问题。我在某些函数上运行Newton方法,有时我会猜测,我只能假设Exp()函数溢出(并停止代码)。你们有什么建议可以简单地处理这个案子吗?(也许是某种错误处理?)
如果牛顿的方法失败了,因为这或任何一种爆破,我想继续我的二分法在这一点下面。
顺便说一句,我曾想过也许用日志来降低这种情况的可能性,但老实说,我还没有完全理解一些数学,我想先处理牛顿方法失败的情况。
免责声明:我是一个完整的VBA初学者,所以任何建议都会被阅读和感谢。提前谢谢。
编辑:我被要求发布代码。首先,谢谢你的阅读。不幸的是,由于业务原因,我无法发布整个代码,但我可以给出非常简单的概要。我创建了一个模块和一个函数。在这个函数中,我有:
Newtons Method Loop
Bisection Loop
在牛顿方法循环中,我追踪到了一个点,在这个点上,我对大约28,000左右的东西有一个下一次的猜测,我给一个变量h赋值Exp(28,000)或环形交叉。调试器在此时中断;我的代码本质上是退出的,而函数应该返回的任何值都会产生# value!在我的牢房里。
我知道这不是很多信息,但我希望(并认为)应该足够了。如果我错了,请纠正我。
编辑2:如果其他方法都失败了,我将显式捕获太大的值,但我不知道是否有更健壮和优雅的解决方案。
发布于 2011-06-13 14:29:45
一段时间前,有一个关于VBA中大于长的数字的问题发布。
接受的答案指向一个名为大数算法的链接。我只是尝试使用该示例实现exp(28000)示例,但是在处理了几个循环之后收到了一个“类型不匹配”错误。然而,这可能是我仓促执行的错误。如果到目前为止你还没有线索,我就从那里开始。
https://stackoverflow.com/questions/6331416
复制相似问题