Say you have coefficients from several such polynomials, and evaluate on some fixed grid. Suppose also that you want to predict coefficients of unknown cubics, when presented with data values taken from that same grid. Could proceed as below. We start with a random polynomial generator that picks the coefficients from some min/max pair, and uses n+1 values from a regular grid ranging between given low and high x values.
randomCubicData[min_, max_, n_, lo_, hi_] :=
With[{coeffs =
RandomReal[{min, max}, 4]}, {Map[Prepend[#, 1] &,
Map[#^Range[1, 3] &, Range[lo, hi, (hi - lo)/n]]].coeffs,
coeffs}]
We'll create 50 of these.
SeedRandom[1111];
polys = Table[randomCubicData[-10, 10, 12, -1, 1], {50}];
Now we train a table of predictor functions using neural networks, so that each recognizes a specific coefficient.
predfuncs =
Table[Predict[polys[[All, 1]] -> polys[[All, 2, j]],
Method -> "NeuralNetwork", PerformanceGoal -> "Quality"], {j, 1,
4}];
We'll test this on a new random set of data values.
newpoly = randomCubicData[-10, 10, 12, -1, 1]
(* Out[56]= {{-15.5634949867, -12.6095452135, -10.5331162716, \
-9.13038531929, -8.19752951479, -7.5307260163, -6.92615198204, \
-6.17998457022, -5.08840093906, -3.44757824677, -1.05369365157,
2.29707568834, 6.80855261472}, {-6.92615198204, 3.84840149645,
2.54868079605, 7.33762230426}} *)
Note that the second list gives us the cubic coefficietns we are seeking. We'll see how close the predictors come.
Map[#[newpoly[[1]]] &, predfuncs]
(* Out[57]= {-6.98190050885, 4.07123180591, 1.88071818377, 7.32489701602} *)
Seems pretty good. I have not tried to test for robustness to noise, nor have I tried to extend to handle varying grids. But this should give an idea at least of how one might use NNs for the task at hand.