playground:playground

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
playground:playground [2021/10/01 02:49]
jojo1973 [Example 1: Bound function on closed interval]
playground:playground [2021/10/11 13:50] (current)
jojo1973 created
Line 1: Line 1:
-===== Numerical integration ===== +Have fun!
- +
-Numeric integration of symbolic expressions is performed in **newRPL** via the ''[[manual:chapter6:solvers:cmd_numint|NUMINT]]'' command which implements the [[https://en.wikipedia.org/wiki/Adaptive_Simpson%27s_method|Adaptive Simpson's method]]. +
- +
-''[[manual:chapter6:solvers:cmd_numint|NUMINT]]'' accepts four arguments: +
- +
-  * the mono-variate function to integrate, either in __symbolic__ or __program__ form; +
-  * the lower integration limit; +
-  * the upper integration limit; +
-  * the error tolerance. +
- +
-If the **function** to integrate is expressed in symbolic form it must respect a precise syntax: +
- +
-  * it must be written as an equation; +
-  * the left side must be in the form ''//func//(//var//)'' where ''//var//'' is the integrating variable and ''//func//'' is the function's name; +
-  * the right side is a function, expressed in terms of ''//var//''+
- +
-For example valid expressions are: +
- +
-<code> +
-'F(X)=X*LN(X)' +
-'G(Z)=Z^2-2*COS(Z)' +
-'VEL(T)=ACC*T' +
-</code> +
- +
-As shown above, the functions may refer to global or local variables; the function's name is only descriptive and bears no relevance to the calculation. +
- +
-Alternatively, the function can be written as a program which __accepts exactly one numeric argument and returns exactly one numeric result__. The expressions above can be rewritten as: +
-<code> +
-« DUP LN * » +
-« DUP SQ SWAP COS 2 * - » +
-« 'ACC' RCL * » +
-</code> +
- +
-The **integration limits** can be either real or complex __finite__ numbers; symbolic constants are accepted and silently converted to numerical values. +
- +
-The **error tolerance** is a real number used to specify the required precision of the calculation: when two successive iterations differ by a value which is less than the tolerance the calculation stops. +
- +
----- +
- +
-==== Angles and trigonometric expressions ==== +
- +
-When a real number is input to a trigonometric function **newRPL** assumes that it is an angle expressed in the current angular mode; however the trigonometric functions are meant to process quantities expressed in radians. In other words the following transformations are implicitly applied: +
- +
-  * in ''[[manual:chapter6:flags:cmd_rad|RAD]]'' mode $ θ=θ_{r}\, $; +
-  * in ''[[manual:chapter6:flags:cmd_deg|DEG]]'' mode $ θ=\frac{\pi}{180}{θ_°}\, $; +
-  * in ''[[manual:chapter6:flags:cmd_grad|GRAD]]'' mode $ θ=\frac{\pi}{200}{θ_g}\, $. +
- +
-where $θ_{r}\,$, $θ_{°}$ and $θ_{g}$ are the quantities entered by the user and $θ$ is what is actually fed to the trigonometric functions. +
- +
-From this, two important consequences derive: +
- +
-  - the antiderivative changes according to the angular mode. Let's consider e.g. the function $ f(θ)=\sin{θ} $ and apply the transformations above:\\ \\ +
-    * in ''[[manual:chapter6:flags:cmd_rad|RAD]]'' mode $ f(θ_r) $ is equivalent to $ f(θ) $ which differentiates to $ f(θ_r)\,dθ_r=\sin{θ}\,d{θ} $ and whose antiderivative is $ F(θ)=-\cos{θ}\, $; +
-    * in ''[[manual:chapter6:flags:cmd_deg|DEG]]'' mode $ f(θ_°) $ is actually $ f\left(\frac{\pi}{180}θ_°\right) $ which differentiates to $ f\left(\frac{\pi}{180}θ_°\right)\,dθ_°=\frac{180}{\pi}\sin{θ}\,d{θ} $ and whose antiderivative is $ F(θ)=-\frac{180}{\pi}\cos{θ}\, $; +
-    * in ''[[manual:chapter6:flags:cmd_grad|GRAD]]'' mode $ f(θ_g) $ is actually $ f\left(\frac{\pi}{200}θ_g\right) $ which differentiates to $ f\left(\frac{\pi}{200}θ_g\right)\,dθ_g=\frac{200}{\pi}\sin{θ}\,d{θ} $ and whose antiderivative is $ F(θ)=-\frac{200}{\pi}\cos{θ}\, $;\\ \\ +
-  - no inverse transformation is applied to the resulting output: this is mathematically correct, but can be disconcerting if one is not immediately aware of the implicit variable substitution. +
-\\ +
-In conclusion, unless the user knows exactly what he/she is doing it's advisable **to perform numeric integration of trigonometric expressions in ''[[manual:chapter6:flags:cmd_rad|RAD]]'' mode**. +
- +
----- +
- +
-==== Example 1: Bound function on closed interval ==== +
- +
-|  pic  |  $$ \int^{2}_{0} x^{10}e^{\left(4x^{3}-3x^{4}\right)} \,dx $$  | **Input:**\\ <code>16 SETPREC +
-'F(X)=X^10*EXP(4*X^3-3*X^4)' +
-+
-+
-tol +
-NUMINT</code>  || +
-|  :::  |  tol=10<sup>-4</sup>   | **7.258 3**76 114 514 225 ...  |  Δ = -1.9·10<sup>-5</sup> +
-|  :::  |  tol=10<sup>-8</sup>   | **7.258 395 17**3 115 920 ...  |  Δ = 2.5·10<sup>-9</sup> +
-|  :::  |  tol=10<sup>-12</sup>  | **7.258 395 170 61**5 141 ...  |  Δ = 8.5·10<sup>-13</sup> +
-|  :::  |  Exact at the precision shown  | **[[https://www.wolframalpha.com/input/?i=integrate+x%5E10*exp%284*x%5E3-3*x%5E4%29+from+0+to+2+to+16+digits|7.258 395 170 614 291]]** ...  |   Δ ≤ 10<sup>-16</sup> +
- +
----- +
- +
-==== Example 2: XXX ==== +
- +
----- +
- +
-==== Example 3: XXX ==== +
- +
----- +
- +
-==== Example 4: XXX ==== +
  • playground/playground.1633081755.txt.gz
  • Last modified: 2021/10/01 02:49
  • by jojo1973