C 如何找到其分析形式未知的函数的根,而该函数是一组列表值?

C 如何找到其分析形式未知的函数的根,而该函数是一组列表值?,c,algorithm,function,C,Algorithm,Function,为了求函数的根,我们通常可以使用二分法或牛顿法。对于函数f(x),只有当我们有f(x)的x依赖性的解析表达式时,这才是可能的 我试图找到这样一个函数的根,我不知道函数的确切形式,相反,我有一个表格数据,在特定的x范围内,每个x值的f(x)值。我正在用C写我的程序,我正在使用for循环,通过使用对分法求解非线性方程并将数据制成表格,来计算x的每个值的f(x)。现在我需要找到函数f(x)的根 有人能帮我找到解决这个问题的合适方法或算法吗 提前谢谢 从符号变化的位置可以知道根必须位于两点之间 取几个附

为了求函数的根,我们通常可以使用二分法或牛顿法。对于函数f(x),只有当我们有f(x)的x依赖性的解析表达式时,这才是可能的

我试图找到这样一个函数的根,我不知道函数的确切形式,相反,我有一个表格数据,在特定的x范围内,每个x值的f(x)值。我正在用C写我的程序,我正在使用for循环,通过使用对分法求解非线性方程并将数据制成表格,来计算x的每个值的f(x)。现在我需要找到函数f(x)的根

有人能帮我找到解决这个问题的合适方法或算法吗


提前谢谢

从符号变化的位置可以知道根必须位于两点之间

取几个附近的点,用一个多项式穿过它们,然后用牛顿法求出多项式的根

从你的描述来看,你应该能够在这个新的点上计算你的函数。如果是这样的话,我建议你计算这一点的值,加上两个最近的邻居,计算一条抛物线,求出它的根。如果你的函数是光滑的,并且在根上有一个非零的导数,这一步将使你对根的估计更精确几个数量级


(你可以再重复一次,甚至更精确),但是在这一点上增加的精度可能与函数值的估计中的数值误差相符合。

<代码>对于x < /代码>的每一个值是<代码> x <代码>谨慎>代码>计算每个x值的f(x)为什么,你刚才说你已经有了每个x值的f(x)值的表格数据。因此,如果你有它们,只需找到
x=0
的行。你通过构造一个函数
g(x)
来猜测或近似
f(x)
,该函数对于给定的
{x[1],x[2],…}
集合
f(x[i])
给出了相同的结果
f(x[i])=g(x[i])
。在我看来,你能做的最好的事情就是找到
g(x)
的根,并希望
f(x)
有相似的根。但是如果你不知道更多关于f(x),那完全是猜测。如果你不能为每个x计算f(x),但是你只有一些x的列表值,你可以执行二进制搜索来找到这两个值,比如说f(x_a)0,然后使用一些插值来更好地估计该范围内的x。如果你能,以某种方式,计算每一个x的f(x),但这很耗时,你仍然可以使用类似于二分法或任何其他近似函数导数的方法。是的,我可以通过解另一个非线性方程来计算每一个x值的f(x)。例如,在二分法中,需要两个x(a和b)值,然后通过检查条件f(a)*f(b)来计算根。我是否正确理解值
y=f(x)
是通过求解某个方程
0=g(x,y)
来获得的?然后通过直接求解标量方程
0=g(x,0)
也可以找到根。