 Promblem with integration - Printable Version +- HP Forums (https://www.hpmuseum.org/forum) +-- Forum: HP Calculators (and very old HP Computers) (/forum-3.html) +--- Forum: HP Prime (/forum-5.html) +--- Thread: Promblem with integration (/thread-5880.html) Promblem with integration - Annaguseva - 03-16-2016 02:14 PM In CAS, cannot integrate sin(x^2) or any other trigonometric function that involves x^(number): int(sin(x^2),x,0,8) Calculator gives out "integrate(...)" instead of answer. What's wrong? RE: Promblem with integration - toshk - 03-16-2016 05:28 PM (03-16-2016 02:14 PM)Annaguseva Wrote:  In CAS, cannot integrate sin(x^2) or any other trigonometric function that involves x^(number): int(sin(x^2),x,0,8) Calculator gives out "integrate(...)" instead of answer. What's wrong? in Home environment you find the answer , doesn't work in CAS but just press SHIFT>>ENTER to get the answer, some of the nifty tricks!!! Temperament Prime [attachment=3233] [attachment=3234] RE: Promblem with integration - Tim Wessman - 03-16-2016 06:34 PM Since there is no exact closed form answer here (not without using some stuff not supported in any calculator), it returns the input unevaluated. Two ways to get a numeric approximation. 1. Press SHIFT-ENTER (to run approx( ) on your last input) 2. Put a "." in one of your limits. int(sin(x^2),0.,8) <-- note the 0. and not just 0 Both of those will immediately evaluate a decimal result. The reason it works in HOME as stated already is that the X variable is an approximate valued number. Hence, it is just like putting the "0." in the second option as it triggers the approximate numerical calculation. RE: Promblem with integration - Annaguseva - 03-16-2016 07:03 PM Thank You! RE: Promblem with integration - toshk - 03-16-2016 07:49 PM (03-16-2016 06:34 PM)Tim Wessman Wrote:  Since there is no exact closed form answer here (not without using some stuff not supported in any calculator), it returns the input unevaluated. Two ways to get a numeric approximation. 1. Press SHIFT-ENTER (to run approx( ) on your last input) 2. Put a "." in one of your limits. int(sin(x^2),0.,8) <-- note the 0. and not just 0 Both of those will immediately evaluate a decimal result. The reason it works in HOME as stated already is that the X variable is an approximate valued number. Hence, it is just like putting the "0." in the second option as it triggers the approximate numerical calculation. there is a close form to these integrations (Mathematically) but not for someone who just want numerical answer directly. give a little push to Prime, and one can find the close form..or they shd be implemented into Prime if there is a need... http://www.wolframalpha.com/input/?i=int%28sin%28x^2%29,x,0,8%29 [attachment=3235] RE: Promblem with integration - Anders - 03-16-2016 10:07 PM The closed form for int(sin(x^2)x,0,x) is the Fresnel integral S(x) function or just S(x). S(x) is a variation of the Gauss error function (erf = int(e^-x^2)) and the imaginary error function (erfi = int(e^x^2)) that can be formulated in terms of erf(x) and erfi(x) with some complex math. However, S(x) is not supported on any handheld calculator that I am aware of. Given the limited flash memory on the Prime (or any calculator for that matter), I am not sure this is a top candidate to make it into the Prime's flash memory in some future release - there are many more important functions not yet implemented that have higher utility value. But if there is space then, sure go ahead. But implement erfi(x) first then S(C) and also the Fresnel integral C(x) function which is = int(cos(x^2)x,0,x). RE: Promblem with integration - parisse - 03-17-2016 06:54 AM If you add more special functions, then of course you can compute more antiderivatives symbolically, but this requires more work than just adding a table lookup for sin/cos(x^2), because you must also integrate expressions that can be reduced to these forms. This is an endless quest and I'm not convinced it is really usefull. My programming time is finite, I have to make choices, Fresnel integrals are not on the top list. RE: Promblem with integration - Wes Loewer - 03-17-2016 05:36 PM (03-16-2016 10:07 PM)Anders Wrote:  The closed form for int(sin(x^2)x,0,x) is the Fresnel integral S(x) function or just S(x). Since S(x) is itself defined as an integral, I would not have considered it a "closed form" solution. I realize that "closed" does not have a hard & fast definition, so that's just my opinion. You may or may not find this helpful: https://en.wikipedia.org/wiki/Closed-form_expression RE: Promblem with integration - Anders - 03-17-2016 11:09 PM Yes I used the "closed form" much more loosely defined than Wiki. I was thinking to express the result using named standard functions like erf, erfc, gamma... (these particular once are already implemented in Prime but are nonetheless not in closed form per Wiki). Anyway, I took another pass at this integration... You could express int(sin(x^2)x,0,x) only in terms of erf(x) (avoiding erfi(x), S(x) and C(x) altogether). After some complex math you get: int(sin(x^2),x,0,x) = (1+i)*√(pi/32)*( erf( (1+i)/√(2) * x) - i*erf( (1-i)/√(2) * x) ) So int(sin(x^2)x,0,8) = (1+i)*√(pi/32)*( erf( (1+i)/√(2) * 8.0) - i*erf( (1-i)/√(2) * 8.0)) should come out as 0.601721644935 [attachment=3244] Not sure if it's enough closed form though. RE: Promblem with integration - parisse - 03-18-2016 01:25 PM Seems to plot, the imaginary part cancels nicely. I'll have a look... RE: Promblem with integration - Anders - 03-18-2016 05:26 PM parisse, That would be great! To complete the picture with cos(x^2), using Euler and variable substitution you can do a similar complex math calculation and derive int(cos(^2)x,0,x) in terms of erf(x) symmetrically as: int(cos(x^2),x,0,x) = (1-i)*√(pi/32)*( erf( (1+i)/√(2) * x) + i*erf( (1-i)/√(2) * x) ) It turns out that the signs in front of the two i's are swapped otherwise the same. Very nice actually. [attachment=3255] RE: Promblem with integration - parisse - 03-19-2016 11:46 AM http://www-fourier.ujf-grenoble.fr/%7eparisse/xcasen.html#+int(sin(x^2))& This will only work for finite boundaries in definite integration. RE: Promblem with integration - salvomic - 10-29-2017 06:52 PM (03-16-2016 10:07 PM)Anders Wrote:  The closed form for int(sin(x^2)x,0,x) is the Fresnel integral S(x) function or just S(x). S(x) is a variation of the Gauss error function (erf = int(e^-x^2)) and the imaginary error function (erfi = int(e^x^2)) that can be formulated in terms of erf(x) and erfi(x) with some complex math. However, S(x) is not supported on any handheld calculator that I am aware of. Given the limited flash memory on the Prime (or any calculator for that matter), I am not sure this is a top candidate to make it into the Prime's flash memory in some future release - there are many more important functions not yet implemented that have higher utility value. But if there is space then, sure go ahead. But implement erfi(x) first then S(C) and also the Fresnel integral C(x) function which is = int(cos(x^2)x,0,x). (03-17-2016 06:54 AM)parisse Wrote:  If you add more special functions, then of course you can compute more antiderivatives symbolically, but this requires more work than just adding a table lookup for sin/cos(x^2), because you must also integrate expressions that can be reduced to these forms. This is an endless quest and I'm not convinced it is really usefull. My programming time is finite, I have to make choices, Fresnel integrals are not on the top list. I apologise if I reopen this post, but after a bit of time I wonder if there are some developments or thoughts about the implementation of Fresnel integrals S(x) and C(x) and erfi() in CAS (in the Prime) or if there is already any custom program (or App) to handle them simply and friendly. Thank you! Salvo EDIT: could it be so simple? There are warnings with the below code, therefore I'm wondering... Code: ```#cas erfi(x):= return -i*erf(i*x) #end``` *** Code: ```EXPORT Fresnel_S(x) // Fresnel integral S(x) BEGIN local t; RETURN int(SIN(t^2),t,0,x); END; EXPORT Fresnel_Sn(x) // Fresnel integral S(x) normalized π/2 BEGIN local t; RETURN int(SIN((π/2)*t^2),t,0,x); END; EXPORT Fresnel_C(x) // Fresnel integral C(x) BEGIN local t; RETURN int(COS(t^2),t,0,x); END; EXPORT Fresnel_Cn(x) // Fresnel integral C(x) normalized π/2 BEGIN local t; RETURN int(COS((π/2)*t^2),t,0,x); END;``` (above Fresnel integral S(x) and C(x) with and without normalisation with π/2 factor, following some authors...)