Here's the code:

yan = FunctionInterpolation[x^2, {x, -1, 1}];
FullSimplify[yan[x] > -1, -1 < x < 1]

Needless to say, what I expect to see in the output is "True", but FullSimplify doesn't seem to work. What function should I turn to?

@J.M. @belisarius @acl

囧…A very simple solution suddenly struck me, it is:

yan = FunctionInterpolation[x^2, {x, -1, 1}];
MinValue[{yan[x], -1 < x < 1},x]>-1
  • $\begingroup$ Huh? "seems not to work" is correct? I just delete it because of my language sense…OK, let me add it back. $\endgroup$ – xzczd Aug 6 '12 at 5:55
  • $\begingroup$ "doesn't seem to work" as you added is more standard, but in my opinion "seems not to work" is also acceptable and understandable. $\endgroup$ – Mr.Wizard Aug 6 '12 at 6:10
  • $\begingroup$ In fact I've become confused after I searched the Internet, so I turned to the standard form to be on the safe side 囧. $\endgroup$ – xzczd Aug 6 '12 at 6:47

The following is basically the same @acl did, but using the package InterpolatingFunctionAnatomy which (in principle) will behave better than peeking at the internal structures when Mma version changes.

yan = FunctionInterpolation[x^2, {x, -1, 1}];

yin = InterpolatingPolynomial[Transpose[Flatten /@
                                 InterpolatingFunctionValuesOnGrid@yan}], x];
FullSimplify[yin > -1, -1 < x < 1]
  • $\begingroup$ very nice. how come I have less votes than you though, despite being first and explaining details?! Not fair! :) $\endgroup$ – acl Aug 5 '12 at 19:38
  • $\begingroup$ @acl That was because I forgot to upvote your answer. Easy to correct! :D $\endgroup$ – Dr. belisarius Aug 5 '12 at 19:40
  • $\begingroup$ really, I was joking! $\endgroup$ – acl Aug 5 '12 at 19:48
  • 1
    $\begingroup$ In fact, you don't need to load the package if you remember the actual syntax being used internally; in this case, it's yan["Coordinates"] and yan["ValuesOnGrid"] that can be used directly. Still, this works only because the original function was well approximated by a polynomial. In general, a polynomial interpolant can be more oscillatory than the piecewise polynomial interpolant used by InterpolatingFunction[]; be careful! $\endgroup$ – J. M. is in limbo Aug 5 '12 at 23:48
  • $\begingroup$ @J.M. yes, it was intended just for this case $\endgroup$ – Dr. belisarius Aug 5 '12 at 23:52

You can do this by explicitly constructing the InterpolatingPolynomial corresponding to yan, and then using FullSimplify:

yin = InterpolatingPolynomial[Transpose[Flatten /@ {yan[[3]],yan[[4]]}],x];
FullSimplify[yin > -1, -1 < x < 1]

Why does this work? Because yan actually has a list of points:


Mathematica graphics

so I can extract them with Transpose[Flatten /@ {yan[[3]],yan[[4]]}] and use them to construct a polynomial, which does the same thing as the interpolation function but which FullSimplify can now handle.

Maybe there's a better way to construct the InterpolatingPolynomial but this works.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.