gpt4 book ai didi

c++ - 求根而不是函数的渐近线

转载 作者:太空宇宙 更新时间:2023-11-04 13:14:40 26 4
gpt4 key购买 nike

我编写了一个程序,通过各种方法从数值上求出具有无理根的函数的根。对于线性插值等方法,需要找到一个根所在的大概范围,为此我写了这段代码:

bool fxn1 = false;
bool fxn2 = false;
vector<float> root_list;

if(f_x(-100) < 0)
{
fxn2 = true;
}
for(float i = -99.99; i < 100.01; i += 0.01)
{

fxn1 = fxn2;
if(f_x(i) < 0)
{
fxn2 = true;
}
else
{
fxn2 = false;
}
if((fxn1 == false && fxn2 == true) || (fxn1 == true && fxn2 == false))
{
root_list.push_back(i-0.01);
root_list.push_back(i);
}
}

但是,对于非连续函数(即具有渐近线的函数),当函数在渐近线任一侧从正值切换为负值时,也会触发此代码。有没有办法让程序区分根和渐近线?

提前致谢

最佳答案

如果函数 f(x) 收敛于 [a,b] 内的一个点,则中间点 (a + b )/2 应该比 ab 更接近零。

这个观察导致了以下过程:

Let mid = (a + b) / 2
If |f(mid)| < |f(a)| AND |f(mid)| < |f(b)| Then
Algorithm has converged to a root
Else
Algorithm has converged to an asymptote
End

在此伪代码中,|.| 表示浮点绝对值。

关于c++ - 求根而不是函数的渐近线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37922607/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com