我用数值方法解决了一个分析上无法解决的问题。我正在根据所需的 Y 值搜索 X。f(x)=y 是可能的,x=f^-1(y) 是不可能的。
目前该算法进行二进制搜索。它从 X=50% 开始,计算 Y,返回 Y_err=Y-Y_demand。它以 5% 的间隔在 Y_err 缩小的方向上不断步进,直到 Y_err 改变符号,然后它减小步进,并朝相反方向步进。这行得通,但令人尴尬的是缓慢且效率低下。
下面是 x=f^-1(y) 的示例图表。我为非线性部分选择了一个具有高系数的。
它因系数而异,但始终具有这种伪抛物线形状。它当然是非线性的,甚至 9 阶多项式近似也不能提供令人满意的精度。
为简单起见,假设拐点位于 X=50%,并且只寻找 X>50% 的解决方案。
我应该如何进行?我希望尽可能优化。有哪些好的算法?谢谢。
编辑:感谢您指出这实际上不是二进制搜索。我已经更新了代码,相比之下现在有了更好的结果。
我不确定牛顿的方法是否适用于此,或者至少我不知道如何应用它。我能做的就是单向试验和错误。当我有更多时间时,我会尝试学习和实施 regula falsi。