(50G) (49G+) Trapezoidal rule integration in RPL

11172015, 11:55 AM
(This post was last modified: 06152017 01:57 PM by Gene.)
Post: #1




(50G) (49G+) Trapezoidal rule integration in RPL
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(i1,1)' \(\rightarrow\)NUM  'M(i,2)' \(\rightarrow\)NUM 'M(i1,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}^{n1} (x_{k+1}x_{k})(y_{k+1}+y_{k}) \] Marcio 

11172015, 05:56 PM
Post: #2




RE: [HP50G/49G+] Trapezoidal rule integration in RPL
You'd have to use a list of vectors with this program for the HP48:
Code: \<< 0 SWAP 2 Example: { [ 2 1 ] [ 4 5 ] [ 7 8 ] } Area = 25.5 Cheers Thomas 

11172015, 06:35 PM
(This post was last modified: 11172015 07:08 PM by Marcio.)
Post: #3




RE: [HP50G/49G+] Trapezoidal rule integration in RPL
Shorter than I thought possible. Thanks!
Back in 20078 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 

11172015, 07:04 PM
(This post was last modified: 11172015 07:10 PM by Thomas Klemm.)
Post: #4




RE: [HP50G/49G+] Trapezoidal rule integration in RPL
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 

11172015, 07:13 PM
Post: #5




RE: [HP50G/49G+] Trapezoidal rule integration in RPL
... and RPL shows its power! Not even highlevel languages such as the one Matlab uses could have used so few commands to do exactly the same thing.
Thanks 

« Next Oldest  Next Newest »

User(s) browsing this thread: 1 Guest(s)