I am trying to interpolate my dataset, which is a list of points. Thus I have two interpolated functions of my x data and y data:
datax={19.668, 18.5235, 17.581, 16.7985, 16.1445, 15.595, 15.1315, 14.7395,
14.4075, 14.1265, 13.8885, 13.6875, 13.518, 13.3765, 13.2585, 13.162,
13.083, 13.0205, 12.9715, 12.935, 12.909, 12.892, 12.8835, 12.8815,
12.885, 12.8935, 12.906, 12.9215, 12.9395, 12.9595, 12.98, 13.001,
13.022, 13.0425, 13.0615, 13.0785, 13.094, 13.1065, 13.1165, 13.1235,
13.1265, 13.126, 13.122, 13.1135, 13.1005, 13.0835, 13.062, 13.0355,
13.005, 12.97, 12.9305, 12.8865, 12.838, 12.786, 12.7295, 12.6695,
12.606, 12.539, 12.469, 12.396, 12.32, 12.242, 12.1615, 12.079,
11.995, 11.9095, 11.823, 11.7355, 11.647, 11.558, 11.469, 11.38,
11.291, 11.2025, 11.1145, 11.0275, 10.9415, 10.8565, 10.7725, 10.69,
10.609, 10.53, 10.453, 10.3775, 10.304, 10.233, 10.164}
datay={0.161158, 0.17188, 0.183499, 0.196057, 0.209601, 0.224179, 0.239842,
0.256644, 0.274639, 0.293882, 0.314433, 0.336349, 0.359688, 0.384507,
0.410862, 0.43881, 0.468401, 0.499684, 0.532704, 0.567499, 0.604103,
0.642541, 0.682831, 0.724979, 0.768983, 0.814829, 0.862489, 0.911922,
0.963073, 1.01587, 1.07023, 1.12604, 1.1832, 1.24156, 1.30096,
1.36126, 1.42226, 1.48377, 1.54559, 1.6075, 1.66927, 1.73069,
1.79152, 1.85153, 1.91048, 1.96817, 2.02436, 2.07887, 2.13148,
2.18203, 2.23035, 2.27629, 2.31974, 2.36058, 2.39873, 2.43413,
2.46673, 2.49651, 2.52347, 2.54761, 2.56897, 2.58759, 2.60354,
2.61689, 2.62772, 2.63613, 2.64222, 2.64609, 2.64786, 2.64765,
2.64558, 2.64177, 2.63633, 2.6294, 2.62109, 2.61152, 2.6008, 2.58906,
2.57639, 2.5629, 2.5487, 2.53389, 2.51855, 2.50278, 2.48667, 2.47028,
2.45371}
fx=Interpolation[datax]
fy=Interpolation[datay]
I can then plot these together using ParametricPlot:
ParametricPlot[{fx[x], fy[x]}, Evaluate@{x,Sequence @@ First@Interpolation[datax]["Domain"]}]
And it gives me a nice interpolated version of my original data.
My issue is, now I need to find a specific y-value corresponding to x_o=1.4 on this parametric plot, which I've found to be impossible (?).
So what I'm doing is the following:
First, plot each interpolated function separately:
Plot[{fx[x], fy[x]}, Evaluate@{x,
Sequence @@ First@Interpolation[datax]["Domain"]}]
Which gives me my two interpolated functions:
Next, I Find the X-value of my fy interpolated function:
xroot = x /. FindRoot[fy[x] == 1.4, {x, 35}][[1]]
(*36.6362*)
And now I need to find the corresponding Y-value of my fx interpolated function.
My issue is, I have no idea how to find a y-value given an x-value! I have tried:
FindRoot[InverseFunction[fx[x]] == sol, {x, 3}]
But I get the error:
"The function value {-36.6362+InverseFunction[17.581]} is not a `list of numbers with dimensions {1} at {x} = {3.`}"`
Does anyone know how to find a y-value given x_o for an interpolated data set? or is there an easier way of doing this??
Thanks so much for your time!
ParametricPlot[{datax,datay},{x,0,16.5}]
, other parts are undefinedfm
,fr
$\endgroup$datax
anddatay
? If so, then $x_0 = 0.14$ is outside of your domain and I don't think you can calculate the corresponding $y_0$ with the information you have. If, on the other hand, you want to calculate the $x_0$ for which $y=0.14$, then tryInverseFunction[Interpolation@Transpose@{datax, datay}][1.4]
, which returns13.1814
. $\endgroup$