(50G) (49G+) Trapezoidal rule integration in RPL - Printable Version +- HP Forums ( https://www.hpmuseum.org/forum)+-- Forum: HP Software Libraries ( /forum-10.html)+--- Forum: General Software Library ( /forum-13.html)+--- Thread: (50G) (49G+) Trapezoidal rule integration in RPL ( /thread-5149.html) |

(50G) (49G+) Trapezoidal rule integration in RPL - Marcio - 11-17-2015 11:55 AM
Hello, I have been using this code for years now and due to its simplicity, it has never failed. << \(\rightarrow\) M << M SIZE OBJ\(\rightarrow\) DROP DROP 'p' STO 0 'A' STO 2 p FOR i 'M(i,1)' \(\rightarrow\)NUM 'M(i-1,1)' \(\rightarrow\)NUM - 'M(i,2)' \(\rightarrow\)NUM 'M(i-1,2)' \(\rightarrow\)NUM + x 'A' \(\rightarrow\)NUM + 'A' STO NEXT 'A' \(\rightarrow\)NUM 2 / "AREA" \(\rightarrow\)TAG >> 'A' 'p' PURGE PURGE >> Although not optimized and is actually FORTRAN translated into RPL, this code is fast calculating the area under a curve in accordance with the trapezoidal rule: \[ \int_{x_1}^{x_n} y(x) dx \approx \frac{1}{2} \sum_{k=1}^{n-1} (x_{k+1}-x_{k})(y_{k+1}+y_{k}) \] Marcio RE: [HP-50G/49G+] Trapezoidal rule integration in RPL - Thomas Klemm - 11-17-2015 05:56 PM
You'd have to use a list of vectors with this program for the HP-48: Code: `\<< 0 SWAP 2` Example: { [ 2 1 ] [ 4 5 ] [ 7 8 ] } Area = 25.5 Cheers Thomas RE: [HP-50G/49G+] Trapezoidal rule integration in RPL - Marcio - 11-17-2015 06:35 PM
Shorter than I thought possible. Thanks! Back in 2007-8 when I purchased the 50G, I had lots of data in txt files that I needed to integrate to calculate the amount of material passing through pipes etc, well, and I if remember correctly, when txt data is imported into the 50g, it is transformed into a list of vectors. As I didn't know to operate with lists, I designed a simple program to convert lists to arrays so that the program I posted would work flawlessly. Later on I merged those two into one and was very happy my 50g would handle such large amounts of data and all I needed extra was an SD card. Marcio RE: [HP-50G/49G+] Trapezoidal rule integration in RPL - Thomas Klemm - 11-17-2015 07:04 PM
If you're willing to add \([x_1, 0]\) at the beginning and \([x_n, 0]\) at the end of the list you can use: Code: `\<< 2` Example: { [ 2 0 ] [ 2 1 ] [ 4 5 ] [ 7 8 ] [ 7 0 ] } Area = 25.5 Compare it to this post. Cheers Thomas RE: [HP-50G/49G+] Trapezoidal rule integration in RPL - Marcio - 11-17-2015 07:13 PM
... and RPL shows its power! Not even high-level languages such as the one Matlab uses could have used so few commands to do exactly the same thing. Thanks |