**Sum**

This program computes the sum:

R0 = ∑( X = R1, R2, f(R1))

where:

R0 = the sum

R1 = starting value, which gets updated at each step. R1 is also used as the variable for f(X)

R2 = finishing value

The program uses three labels:

Label A: The main routine. Press [ f ] [ √ ] (A) to run the routine.

Label 1: A subroutine of Label A. This is the loop.

Label 0: Where the function f(X) is stored. Assume that R1 is loaded on the X register when programming the function.

The program presented here will allow the user to enter starting and ending values beyond 999. You can shorten the program by the use of ISG, however, the ending value would be restricted to 999.**Program Listing**

Key Code Keys

001 42 21 11 LBL A

002 0 0

003 44 0 STO 0 * Initializes R0

004 33 R ↓

005 44 2 STO 2 * ending value

006 33 R ↓

007 44 1 STO 1 * starting value

008 42 21 1 LBL 1 * loop starts here

009 45 1 RCL 1

010 32 0 GSB 0

011 44 40 0 STO+ 0 * update total

012 1 1

013 44 40 1 STO+ 1 * update starting value

014 45 2 RCL 2

015 45 1 RCL 1

016 43 10 x≤y * is R1 ≤ R2?

017 22 1 GTO 1

018 45 0 RCL 0

019 43 32 RTN

Instructions:

1. Enter the main program (Labels A and 1).

2. Enter the function f(R1) (Label 0).

3. In run mode, enter the starting value and press [ENTER]

4. Enter the ending value and press [ f ] [ √ ] (A)

5. The sum is calculated and displayed.

Remember: Always finish the function with the RTN command ([ g ] [GSB] (RTN)).

Example 1

Find the sum ∑(X = 1, 50, X). In other words, what is the sum of the integers from 1 to 50?

Program listing for f(R1):

Key Code Key

001 42 21 0 LBL 0

002 43 32 RTN

Surprised? Remember we already have a copy of R1 in the main program when the instruction GSB 0 is encountered.

1 [ENTER] 50 [ f ] [ √ ] (A)

Result: 1275

Example 2

Find the sum ∑(X = 1, 150, 1/(X^2 + X)).

1/(X^2 + X) can be rewritten as:

(X^2 + X)^-1

((X + 1) X)^-1

We will use the last form for our function.

A Way to Clear Label 0

Clear Label 0 is necessary. In Run mode, press [GTO] [ 0 ]. Then press [ g ] [R/S] (P/R) to enter program mode. Press [SST] until the key codes "43 32" is encountered. Press the backspace button the number of times you pressed [SST]. You should see the key code "42, 21, 0". You are ready to enter the new function.

Program Listing for f(R1):

Key Code Key

001 42 21 0 LBL 0

002 36 ENTER

003 1 1

004 40 +

005 20 ×

006 15 1/x

007 43 32 RTN

To finish:

1 [ENTER] 150 [ f ] [ √ ] (A)

Result: ≈ 0.9934

That concludes Part 8 of our tutorial. Until next time,

Eddie

*This tutorial is property of Edward Shore. © 2011*

Hello Eddie, is there any way to enter "infinite" as the value of R2 in your program?

ReplyDeleteFor example, if I want to evaluate ∑(X = 0, infinite, (1/4)^x).

Label 0 would be:

001 Label 0

002 Enter

003 1

004 Enter

005 4

006 /

007 x<>Y

008 Y^x

009 RTN

P.C.F.:

ReplyDeleteNo, there is no infinity key on the HP-15C. We can modify the program a bit (as long as f(x) approaches 0 as x approaches infinity), to a specific tolerance. In this example, the tolerance is 10^-12. The program stops the first time f(x_n) < 10^-12:

LBL A

0

STO 0

STO 1

LBL 1

RCL 1

GSB 0

STO+ 0

EEX

1

2

CHS

x>y? (TEST 7)

GTO 2

1

STO+ 1

GTO 1

LBL 2

RCL 0

RTN

LBL 0

1

ENTER

4

ENTER

/

x<>y

y^x

RTN

Another way to do add to infinity to set an artificially high number for R2 (such as 500 or 1000).

Hope this helps,

Eddie

Hi Eddie, thank you so much for your quick reply I really appreciate it. The modified program works fine and so does the second way you provided. Really helps me out.

ReplyDelete