$Version
(* "13.3.1 for Mac OS X ARM (64-bit) (July 24, 2023)" *)
Clear["Global`*"]
Use arbitrary precision rather than machine precision.
xData = {0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6,
0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.} // SetPrecision[#, 15] &;
y2Data = {1.05513, 1.12104, 1.19859, 1.2887, 1.39235, 1.51062, 1.64465,
1.79568, 1.96503, 2.1541, 2.36438, 2.59745, 2.85498, 3.13873, 3.45051,
3.79223, 4.16587, 4.57346, 5.01706, 5.4988} // SetPrecision[#, 15] &;
num = Length[xData];
mat = Transpose[xData^# & /@ Range[0, num - 1]];
solMat = LinearSolve[mat, y2Data];
(poly2[z_] = solMat . z^Range[0, num - 1])//N
(* 0.79949 + 15.0472 z - 426.711 z^2 + 7694.19 z^3 - 91979.9 z^4 +
784617. z^5 - 4.98164*10^6 z^6 + 2.42031*10^7 z^7 -
9.16522*10^7 z^8 + 2.73726*10^8 z^9 - 6.49034*10^8 z^10 +
1.22439*10^9 z^11 - 1.83343*10^9 z^12 + 2.1636*10^9 z^13 -
1.98557*10^9 z^14 + 1.38648*10^9 z^15 - 7.1114*10^8 z^16 +
2.52421*10^8 z^17 - 5.53586*10^7 z^18 + 5.64823*10^6 z^19 *)
However, you can get this result directly using InterpolatingPolynomial
poly3[z_] = InterpolatingPolynomial[Transpose[{xData, y2Data}], z];
poly2[x] - poly3[x] // Simplify
(* 0.*10^-4 + 0.*10^-4 x + 0.*10^-4 x^2 + 0.*10^-4 x^3 + 0.*10^-4 x^4 +
0.*10^-4 x^5 + 0.*10^-4 x^6 + 0.*10^-4 x^7 + 0.*10^-4 x^8 + 0.*10^-4 x^9 +
0.*10^-4 x^10 + 0.*10^-4 x^11 + 0.*10^-4 x^12 + 0.*10^-4 x^13 +
0.*10^-4 x^14 + 0.*10^-4 x^15 + 0.*10^-4 x^16 + 0.*10^-4 x^17 +
0.*10^-4 x^18 + 0.*10^-4 x^19 *)
Plot[poly3[x], {x, Min[xData], Max[xData]},
Epilog -> {Red, AbsolutePointSize[4],
Point[Transpose[{xData, y2Data}]]}]
f
. For example, if your code isexpr = Sum[z^i, {i, 3}];
, putf[z_] := Evaluate[expr]
. $\endgroup$f=Function[z, "Out[1042]"]
$\endgroup$poly2
is the thing you're wanting to turn into a function, then you can just dof[z_] = poly2
. Notice theSet
rather thanSetDelayed
. $\endgroup$