Showing posts with label basics. Show all posts
Showing posts with label basics. Show all posts

Saturday, August 17, 2024

TI-84 Plus CE Python: Diophantine Books Problem and Circles Inscribed in Squares

TI-84 Plus CE Python: Diophantine Books Problem and Circles Inscribed in Squares



Introduction


The two programs presented today are Python versions from the Idea Book (Ahl – see Source), where the original programs were posted in BASIC designed for the Texas Instruments computers in the 1980s. The Python versions were programmed with the TI-84 Plus CE Python (and should work on the TI-83 Premium Python Edition). Unfortunately, the Circle and Squares program may not work on the TI-82 Advanced Python as that calculator does not have any graphics modules.



Diophantine Books Problem


A book store studies the sales of three popular books: A, B, and C, each with prices PA, PB, and PC. We have the total books sold, the sales amount, and the prices of the books. How many of each books were sold?


The program solve the Diophantine system of equations:


A + B + C = N

PA * A + PB * B + PC * C = S


N = number of books sold

S = total sales

A, B, and C are positive integers


The original BASIC program covered a specific case, where in this version has the user enter the price of up to three books, total sales, and number of books sold. The code in Python also counts the number of solutions.



Code: books.py


# Math Calculations

from math import *


# Browns Books, pg 43

# TI HOME IDEA BOOK, 1983

# Translated to Python



print("Browns Books","\na+b+c=n","\npa*a+pb*b+pc*c=s")

print("books: a, b, c","\nbook prices: pa, pb, pc")

n=int(input("# books sold? "))

s=eval(input("total sales? "))

pa=eval(input("price of book a? "))

pb=eval(input("price of book b? "))

pc=eval(input("price of book c? "))


print("Prices: ","\n",pa,"\t\t",pb,"\t\t",pc)

print("-----------------")


# prices

i=0


for a in range(1,n+1):

  for b in range(1,n+1):

    for c in range(1,n+1):

      if a+b+c==n and pa*a+pb*b+pc*c==s:

      print(a,"\t\t",b,"\t\t",c)

      i+=1


print("\n",i," solutions")





Circles In Squares




The program cirsqu.py calculates four areas:


The area of a square with a side of length of 2 * r.

The area of the inscribed circle with radius r.

The trapped area, which is the area of the square not taken up by the circle.

A corner of the area of the square not taken up by the circle, which is 1 / 4 of the trapped area.


The original program only printed the trapped area and the corner area. In addition, this Python code uses TI-specific modules, ti_system and ti_draw.


The ti_system module is used to temporarily stop execution with the disp_wait() command. Execution continues with by pressing the [ clear ] key.


The ti_draw module is used to draw the square, the circle, and the axis. Both the square and circle are centered at (0,0).


The code uses a scaling routine based on the radius of the circle, so that squares look like squares and circles look like circles. The TI-84 Plus CE Python graphics screen is 320 x 220 pixels. Setting up the window (xmin, xmax, ymin, and ymax) using the ratio will accomplish this task. Here are sampling of viewing windows to try:


xmin = -8, xmax = 8, ymin = -5.25, ymax = 5.25


xmin = -16, xmax = 16, ymin = -10.5, ymax = 10.5


xmin = -32, xmax = 32, ymin = -21, ymax = 21


About the fill_rect and draw_rect commands. The syntax is (x, y, width, height). The coordinates x and y are supposed to be the upper left hand corner, however the manual is incorrect in practice. The correct corner to use is the lower left hand corner. The OS that was used is 5.8.1.0012 (same number for Python).


Code: cirsqu.py


from math import *

from ti_system import *

from ti_draw import *


print("Math Module Activated")

print("Circle inside a Square")

print("circle of radius r")

print("square of side r")

r=eval(input("r? "))


ac=pi*r**2

asq=(2*r)**2

ad=asq-ac


# ti system

disp_clr()


print("Radius: ",r)

print("Areas: \nsquare:",asq)

print("circle: ",ac)

print("trapped: ",ad)

print("1/4 trapped: ",ad/4)

print("\nPress [clear] to contiue.")

# ti module ti_system

disp_wait()


# use ti module ti_draw

clear()

# text factor

f=1

# window set up

if r<=5.25:

  x=8

  y=5.25

else:

  y=5.25

  while y<r:

    y*=2

    f*=2

  x=y*8/5.25


set_window(-x,x,-y,y)


# draw axis

set_color(235,235,235)

set_pen("thin","dotted")

draw_line(-x,0,x,0)

draw_line(0,-y,0,y)



# draw shapes

set_color(25,125,255)

set_pen("thin","solid")

# fill_rect anchors at the LOWER-left hand corner (manual error)

fill_rect(-r,-r,2*r,2*r)

set_color(230,130,0)

fill_circle(0,0,r)

set_color(0,0,0)

draw_text(-x,y-2*f,str(y))

draw_text(x-4*f,-y,str(x))

show_draw()




Source


Ahl, David H. The Texas Instruments Home Computer Idea Book. Creative Computing Press. Morris Plains, New Jersey. 1983. pg. 34-35, 105-106 ISBN 0-916688-51-8



Enjoy!


Eddie


All original content copyright, © 2011-2024. Edward Shore. Unauthorized use and/or unauthorized distribution for commercial purposes without express and written permission from the author is strictly prohibited. This blog entry may be distributed for noncommercial purposes, provided that full credit is given to the author.

Sunday, June 2, 2019

TI-Nspire Survival Guide

TI-Nspire Survival Guide









With both the TI-Nspire CX II and the TI-Nspire CX II CAS here, there is a renewed interest in the TI-Nspire.  To be honest, I have not used the TI-Nspire CX in quite while, so I had to re-learn some of the basics of the calculator.

The TI-Nspire calculators operates like a computer, with files, folders, documents, and each file containing a set of problems.

I put together a tns (TI-Nspire) documents, TI-Nspire Guide, available for download.  This document is for both the non-CAS and CAS version.  Hopefully, this document provides help with learning some of the basics for the TI-NSpire.

Problems (Table of Contents):

1.  Calculator Basics
2.  Programming functions to use anywhere (public functions)
3.  Graphing
4.  Data and Statistics
5.  Geometry
6.  Other Functions

 Link:  https://drive.google.com/open?id=15XolSFnCFLkj6pPm446PTdvpmVJfwcfw

Eddie

All original content copyright, © 2011-2019.  Edward Shore.   Unauthorized use and/or unauthorized distribution for commercial purposes without express and written permission from the author is strictly prohibited.  This blog entry may be distributed for noncommercial purposes, provided that full credit is given to the author.

Monday, April 23, 2018

Scientific Calculator Basics Document Now Available


Scientific Calculator Basics Document Now Available



If you are new to scientific calculators, ever wondered what the [sin], [log], and [e^x] keys actually mean, or want a refresher on the basics: then this tutorial is for you.



The document convers common scientific functions such as:



* Typing in large and small numbers by using scientific notation

* Calculating powers and roots

* Logarithms and anti-logarithm functions

* Trigonometric functions, such as sine, cosine, and tangent; along with their inverses

* Basic statistic and linear regression calculations

* How to enter fractions and numbers in degrees-minutes-seconds formats

* How to convert integers between binary, octal, decimal, and hexadecimal



This document covers a variety of scientific calculators, aimed at infix algebraic (two or multi-line scientific) calculators.






Eddie





All original content copyright, © 2011-2018.  Edward Shore.   Unauthorized use and/or unauthorized distribution for commercial purposes without express and written permission from the author is strictly prohibited.  This blog entry may be distributed for noncommercial purposes, provided that full credit is given to the author.  Please contact the author if you have questions.

Friday, September 30, 2011

RPL Basics


RPL Basics
(updated 10/1/2011)





I dedicate this blog to Peter Murphy - thank you for the request!


This is a basic tutorial of reverse polish lisp (RPL). It is a combination of RPN (reverse polish notation), Lips, and Forth languages.


RPL removes the need to enter parenthesis during long calculations and allows for immediate feedback during calculations; you will not need to enter a long operation before getting feedback - thus eliminating errors. A lot of times, the number of keystrokes required to make a calculation is reduced using RPL compared to algebraic systems. RPL works like RPN, but there several differences.


All of the following calculators, manufactured by Hewlett Packard, operate on RPL: HP-28C, HP-48S, HP-48SX, HP-48G, HP-48G+, HP-48GX, HP-49G, HP 49g, HP 50g. Currently, only HP 50g is sold new. The rest can be found used (sometimes new) on other online vendors. There are also several emulators of RPL calculators (HP48+ for example) that can be used for the iPhone/iPod Touch/iPad and devices operating on Android.


There are two types of RPL: User and System. User RPL is for basic, everyday use. You can create programs with User RPL right on the calculator's keyboard. System RPL allows users to create faster and more efficient programs. However, System RPL programming is more difficult than User RPL - most of the time programs have to complied and then downloaded to the calculator. For our purposes of the tutorial, we will use User RPL ("Just use the keyboard"). You can find additional information on RPL on the HP Museum of Calculators' RPL Page.

The Stack

Typically, an RPL calculator uses a stack with an infinite amount of "levels" (or registers). Each level is stacked on top of another. The size of the stack is dynamic depending on the contents each level has. In my experience, I end up using 1 to 3 levels, but I can use as many levels as I want so long as I have memory. For example a four-level stack diagram looks like this:

4:
-------------------------------
3:
-------------------------------
2:
-------------------------------
1:
-------------------------------

The 28C displays 3 levels, the HP 48S and 48G series display 4 levels, and the HP 49G series, including the 49g+ and 50g can display any number depending on the screen's font setting. Typically, FONT 8 shows 7 levels.

What is required of the user to execute a desired operation depends on the number of arguments (for our purpose, numbers) the function requires. Most calculator functions require one or two arguments.


One-argument functions operate on whatever is in level 1, sometimes referred to as X register. For one-argument functions, simply execute the desired operation. One-argument functions include all the trigonometric functions (sine, cosine, tangent), logarithms, exponential (e^), reciprocal, square root, and factorial (x!). The change sign operation fits under the category of one-number operations because it simply multiplies the number by -1. The change sign operation is labeled [ +/- ].


Two-argument functions operate on the contents of levels 2 and 1. Level 2 is like the Y register and level 1 the X register. Common two-argument functions include the arithmetic operators (+, -, x, ÷), powers (y^x), combination and permutations, percent and percent change (Δ%). To use a two-argument function, enter the first number (y), then press ENTER. ENTER terminates the entry and gets the calculator ready to receive another number. Next, enter the second number (x). A second ENTER is not required because executing the operation terminates the second entry. In summary, to operate a two-argument function:


1. Enter the first (y) argument,

2. Press ENTER to terminate the first entry.

3. Enter the second (x) argument,

4. Execute the desired function.


When you link more than one operation, it is known as a chain calculation. A simple example is adding a list four numbers. Another example is adding two groups of numbers and then multiplying the two sums together.


In chain calculations, whatever in the display becomes the first argument of the operation. All that is needed is to enter the second argument (number), and then the required function. For chain calculations:


1. Enter the next required argument

2. Execute the desired function, no ENTER is required


The scope of this blog is just to give a very basic tutorial of RPL. It is a "do by example" tutorial. Keystrokes are shown in blue. All calculations on this blog are rounded to 4 decimal places.

This blog will demonstrate keystrokes on the 48S (works also on the 48SX), 48G (works also on the 48G+ and 48GX), and the 50g (works also on the 49g+).

==========================================================

To set the calculator to 4 decimal places:

HP 48S:

4 [ENTER] [LS] [CST] (MODES) [2nd soft key from left] (FIX)

HP 48G (via the Mode Selection Screen):

[LS] [MODES], choose Fix 4 on the menu

HP 50g (via the Mode Selection Screen):

[MODE], choose Fix 4 on the menu.

=========================================================

Examples: Calculating with RPL

Format of the display will be shown as follows:
[...]
[2: contents]
[1: contents]

Shift Keys

Left Shift [LS]: This key has an arrow going up and turning left. It is the third key up from the ON button on the left side. It is orange on the 48S, purple on the 48G, periwinkle on the 49G, green on the 49g+, and white on the 50g.

Right Shift [RS]: This key has an arrow going up and turning right. It is the second key up from the ON button on the right side. It is blue on the 48S, green on the 49G, light red on the 49G, red on the 49g+, and orange on the 50g.

The 28C has 1 shift key - in red.

Soft Keys: There are six soft keys on the top row of the keyboard. Their functions change depending on the current active menu. On the 48S and 48G series, these keys are not labeled. On the 49G, 49g+, and 50g, they are labeled F1 through F6, left to right. The soft keys are labeled as:

[F1] [F2] [F3] [F4] [F5] [F6]

In this tutorial I will put the label on the soft keys. [F1] mean the leftmost soft key, [F2] is the second leftmost key, and so on. Got it?

In this tutorial I will put the label of any shifted function or any function accessed by a soft key parenthesis after the key. For example, for the square function:

[LS] [ √ ] (x^2)

Press the left shift key, then the square root key. The square function is just labeled as the left-shifted function of that key.

Note: For the 50g, it is assumed that Soft Menus are turned on. (Flag -117 is set)

#1: 5 + 8

Keystrokes:

HP 48S/48G/50g: [ 5 ] [ENTER]

Display: [1: 5.0000]

HP 48S/48G/50g: [ 8 ] [ + ]

Display: [1: 13.0000]

Result: 13

#2: Chain Addition: 1000 + 1500+ 1750

Keystrokes:

HP 48S/48G/50g: 1000 [ENTER]

Display: [1: 1000.0000]

HP 48S/48G/50g: 1500 [ + ]

Display: [1: 2500.0000]

HP 48S/48G/50g: 1750 [ + ]

Display: [1: 4250.0000]

Result: 4,250

#3: To Clear the Stack

HP 48S: [LS] [backspace key]
HP 48G: [LS] [DEL]
HP 50g: [LS] [backspace key]

#4: 10 - 6

As in any calculation involving subtraction or division, the order of the arguments is important.

Keystrokes:

HP 48S/48G/50g: 10 [ENTER]

Display: [1: 10.0000]

HP 48S/48G/50g: 6 [ - ]

Display: [1: 4.0000]

Result: 4

#5: 6 x 2.95 + 2 x 1.28

Sometimes it is useful to leave previous results on the stack while working on parts of the problem. The order of operations tells us to do multiplication first, then addition.

HP 48S/48G/50g: 6 [ENTER] 2.95 [ x ]

Display:
[1: 17.7000]

Leave 17.7 on the stack for future use.

HP 48S/48G/50g: 2 [ENTER]

Display:
[2: 17.7000]
[1: 2.0000]

HP 48S/48G/50g: 1.28 [ x ]

Display:
[2: 17.7000]
[1: 2.5600]

Now complete the calculation.

HP 48S/48G/50g: [ + ]

Display:
[1: 20.2600]

Result: 20.26

# 6: 200 ÷ (3^2.5 - 1)

Keystrokes:

We'll start by entering 200 and leaving it on the stack for future use.

HP 48S/48G/50g: 200 [ENTER] 3 [ENTER]

Display:
[2: 200.0000]
[1: 3.0000]

HP 48S/48G/50g: 2.5 [y^x]

Display:
[2: 200.0000]
[1: 15.5885]

HP 48S/48G/50g: 1 [ - ]

Display:
[2: 200.0000]
[1: 14.5885]

We are ready for the division.

HP 48S/48G/50g: [ ÷ ]

Display:
[1: 13.7095]

Result: 13.7095

#7: 2 x (5 ^ 2.5 ÷ 2.5 ^ 5)

Take care of the fraction first, multiply it all by 2 in the end.

HP 48S/48G/50g: 2 [ENTER] 5 [ENTER]

Display:
[2: 2.0000]
[1: 5.0000]

HP 48S/48G/50g: 2.5 [y^x]

Display:
[2: 2.0000]
[1: 55.9017]

HP 48S/48G/50g: 2.5 [ENTER] 5 [y^x]

Display:
[3: 2.0000]
[2: 55.9017]
[1: 97.6563]

HP 48S/48G/50g: [ ÷ ]

Display:
[2: 2.0000]
[1: 0.5724]

Finish it off.

HP 48S/48G/50g: [ x ]

Display:
[1: 1.1449]

Result: 1.1449

# 8: 1/2 + 3/7 - √(25/64)

√ is the symbol for square root

Keystrokes (or one possible set of keystrokes):

HP 48S/48G/50g: 2 [1/x]

Display:
[1: 0.5000]

HP 48S/48G/50g: 3 [ENTER] 7 [ ÷ ]

Display:
[2: 0.5000]
[1: 0.4286]

HP 48S/48G/50g: [ + ] 25 [ENTER] 64 [ ÷ ]

Display:
[2: 0.9286]
[1: 0.3906]

HP 48S/48G/50g: [ √ ]

Display:
[2: 0.9286]
[1: 0.6250]

HP 48S/48G/50g: [ - ]

Display:
[1: 0.3036]

Result: 0.3036

#9: Find a decimal approximation, to four decimal places, of e^-3.

Keystrokes:

HP 48S: [ 3 ] [+/-] [LS] [1/x] (e^x)
HP 48G: [ 3 ] [+/-] [LS] [1/x] (e^x)
HP 50g: [ 3] [+/-] [LS] [y^x] (e^x) [RS] [ENTER] (->NUM)

Result: 0.0498


# 10: √(3^2 + 4^2)

Keystrokes:

HP 48S/48G/50g:
3 [LS] [ √ ] (x^2) 4 [LS] [ √ ] (x^2)

Display:
[2: 9.0000]
[1: 16.0000]

HP 48S/48G/50g:
[ + ] [√ ]

Display:
[1: 5.0000]

Result: 5

# 11: Find the percent change between 19.99 (old) and 34.99 (new)

%CHG = Δ% = [new - old] ÷ old x 100%

Keystrokes:

HP 48S:
19.99 [ENTER] 34.99 [MTH] [F1] (PARTS) [NXT] [F5] (%CH)

HP 48G:
19.99 [ENTER] 34.99 [MTH] [F5] (REAL) [F2] (%CH)

HP 50g:
19.99 [ENTER] 34.99 [LS] [SYMB] (MTH) [F5] (REAL) [F2] (%CH)

Result: 75.0375% change

Register Operations

Two common register operations are Swap and Roll Down.

Swap: This operation swaps the contents on the X and Y registers. The key is typically labeled [x<>y]. The swap function is useful when arguments need to be switched before performing subtraction, division, and taking powers.

# 12: 2 - (-5 x 3)

In order to demonstrate the Swap function, let's enter the multiplication first.

Keystrokes:

HP 48S/48G/50g:
5 [+/-] [ENTER] 3 [ x ]

Display:
[1: -15.000]

HP 48S/48G/50g:
2 [ENTER]

Display:
[2: -15.0000]
[1: 2.0000]

We need 2 on the top because we need to calculate 2 - (-5 x 3), not (-5 x 3) - 2. This is where the Swap operation comes in.

HP 48S/48G/50g:
[LS] [right arrow] (SWAP - not marked on the 50g+)

Display:
[2: 2.0000]
[1: -15.0000]

Now with the arguments in the proper order, we can execute the subtraction.

HP 48S/48G/50g:
[ - ]

Display:
[1: 17.0000]

Result: 17

# 13: Calculate 200 ÷ 40, but enter 40 first, then 200.

Here we can use the Swap operation to correct the order of dividend and divisor.

HP 48S/48G/50g:
40 [ENTER] 200

Display:
[1: 40.0000]
[ 200]

We need to swap the arguments.

HP 48S/48G/50g:
[ENTER] [LS] [left arrow]

Display:
[2: 200.0000]
[1: 40.0000]

Now we got it!

HP 48S/48G/50g:
[ ÷ ]

Display:
[1: 5.0000]

Result: 5

Roll Down: This operation pushes down the contents of the register one level. You choose how many of the levels "roll" down.


# 14 Roll down a three level stack.

A simple example: Say we have entered 4, 1, and 9 on to the stack and the stack is like this:

3: 4
2: 1
1: 9

((Clear Stack) 4 [ENTER] 1 [ENTER] 9 [ENTER])

I want to rotate the entire stack. The keystrokes for this is:

HP 48S:
[PRG] [F1] (STK) [F6] (DEPTH) [F4] (ROLLD)

HP 48G:
[LS] [up arrow] [F6] (DEPTH) [F4] (ROLLD)

HP 50g:
[LS] [EVAL] (PRG) [F1] (STACK) [NXT] [F6] (DEPTH) [F2] (ROLLD)

The stack looks like this:

3: 9
2: 4
1: 1


The Constant Pi (Ï€)

The Pi key (or keystroke sequence) puts π on level 1 and lifts everything else one level.

# 15: Find the area of a circle with a radius of 2.35 inches.

Area = π *radius^2

Keystrokes:

HP 48S/48G/50g:
[LS] [SPC] (Ï€) 2.35 [LS] [ √ ] (x^2) [ x ]

Display:
[1: 'Ï€*5.5225']

HP 48S: [RS] [EVAL] (->NUM)
HP 48G: [LS] [EVAL] (->NUM)
HP 50g: [RS] [ENTER] (->NUM)

Display:
[1: 17.3494]

Result: 17.3494 square inches

Additional Examples

# 16: How many 5-card hands can be dealt out of a standard deck of 52 playing cards?

Combination = COMB = n! ÷ (k! x (n - k)!)

It is found in the Math-Probability Menu, labeled COMB

Keystrokes:

HP 48S:
52 [ENTER] 5 [MTH] [F2] (PROB) [F1] (COMB)

HP 48G:
52 [ENTER] 5 [MTH] [NXT] [F1] (PROB) [F1] (COMB)

HP 50g:
52 [ENTER] 5 [LS] [SYMB] (MTH) [NXT] [F1] (PROB) [F1] (COMB)

Result: 2,598,960 possible hands

# 17: You have purchased a calculator for $99.99 and present a coupon for 15% for the purchase price. Assume sales tax is 8.75%. What is the final amount due?

The percent function returns level 2 * level 1 ÷ 100 on level 1.

Keystrokes:

HP 48S:
99.99 [ENTER] [ENTER] 15 [MTH] [F1] (PARTS) [NXT] [F4] (%) [ - ] [ENTER] 8.75 [F4] (%) [ + ]

HP 48G:
99.99 [ENTER] [ENTER] 15 [MTH] [ F5 ] (REAL) [F1] (%) [- ] [ENTER] 8.75 [F1] (%) [ + ]

HP 50g:
99.99 [ENTER] [ENTER] 15 [LS] [SYMB] (MTH) [F5] (REAL) [F1] (%) [ -] [RS] [ENTER] (->NUM) [ENTER] 8.75 [F1] (%) [ + ]

Result: 92.4283 (The final bill is $92.43)

# 18: How to set the Angle Mode

HP 48S:
[LS] [CST] (MODES) [NXT] [NXT]
Select [F1] for Degrees, [F2] for Radians, [F3] for Gradients


HP 48G (via menu):
[RS] [CST] (MODES) [down arrow]
Use [F2] to choose the angle, press [F6] (OK) to accept the settings


HP 50g (via menu):
[MODE] [down arrow] [down arrow]
Use [F2] to choose the angle, press [F6] (OK) to accept the settings



# 19: While the calculator is in Radians mode, find sin^-1 (.5). Then convert the result to degrees.

See # 18 on how to set the calculator to Radians mode. Your calculator is in Radians mode if the display has a RAD indicator on the upper left corner of the screen.

HP 48S/48G/50g: .5 [LS] [SIN] (ASIN)

Display:
[1: 0.5236]

HP 48S: 180 [ x ] [LS] [SPC] (Ï€) [ ÷ ] [RS] [EVAL]
HP 48G: [MTH] [F5] (REAL) [NXT] [NXT] [F6] (R->D)
HP 50g: [LS] [SYMB] (MTH) [F5] [NXT] [NXT] [F6] (R->D)

Display:
[1: 30.0000]

So sin^-1 (.5) ≈ .5236 radians = 30º

Note:
R->D is the Radians to Degrees function
D->R is the Degrees to Radians function

I hope you find this tutorial on RPL helpful.


Eddie

Earth's Radius by Latitude

Earth's Radius by Latitude Introduction: Calculating the Earth’s Radius In quick, general calculations, we assume that the...