Wolfram mathematica 使用带插值的NSolve

Wolfram mathematica 使用带插值的NSolve,wolfram-mathematica,numerical-methods,interpolation,Wolfram Mathematica,Numerical Methods,Interpolation,我对Mathematica非常陌生,如果这有一个明显的答案,那么很抱歉,但是: 我试图用NSolve来找到两个函数之间的交点,其中一个函数是通过插值生成的,但它不会给我一个解决方案 以下是输入: data = Table[x, {x, 1, 25, 1}]; data2 = Table[x^.5, {x, 1, 25, 1}]; a1 = Interpolation[Transpose[{data, data2}]]; NSolve[a1[z] == 5 - z^.5, z] 以及输出: NS

我对Mathematica非常陌生,如果这有一个明显的答案,那么很抱歉,但是:

我试图用NSolve来找到两个函数之间的交点,其中一个函数是通过插值生成的,但它不会给我一个解决方案

以下是输入:

data = Table[x, {x, 1, 25, 1}];
data2 = Table[x^.5, {x, 1, 25, 1}];
a1 = Interpolation[Transpose[{data, data2}]];
NSolve[a1[z] == 5 - z^.5, z]
以及输出:

NSolve[InterpolatingFunction[][z] == 5 - z^0.5, z, Reals]

谢谢你的帮助

谢谢!我尝试了我的原始代码,只不过我将NSolve[a1[z]==f[z],…]更改为FindRoot[a1[z]-f[z],…],并且成功了。不过,我有两个问题。首先,为什么FindRoot在NSolve失败时工作?第二,为什么你的代码给了我2.50的两个无关的解决方案?两个示例函数的实际交叉点仅为6.25和6.25,这一点很容易从图形中看出。FindRoot和Solve、Solve和Resolve、Reduce和FindMinimum、Minimize和NMinimize以及Mathematica中的更多函数的工作方式略有不同。确切地说,为什么其中一个会起作用,而另一个不会起作用,这可能比你目前所了解的要先进一点。我的代码没有给你两个无关的解决方案,如果你看我的最后一行代码,我会告诉你根和值,如果你把根插入第一个函数,你会得到值,如果你把根插入第二个函数,你会得到值。我希望你能看到这个根确实起作用了。好了,我现在明白最后一行代码了。我看得不够仔细。多谢!
In[1]:= data = Table[x, {x, 1, 25, 1}];
data2 = Table[x^.5, {x, 1, 25, 1}];
a1 = Interpolation[Transpose[{data, data2}]];
r = z /. FindRoot[a1[z] - (5 - z^.5), {z, 1}];
{r, a1[r], 5 - r^.5}

Out[5]= {6.24994, 2.50001, 2.50001}