Sunday, May 19, 2024

Python and Calculator Basic: Transforming Quadratic Polynomials

Python and Calculator Basic: Transforming Quadratic Polynomials

Calculators: Casio fx-CG 50, TI-84 Plus CE


Problem


Sometimes we are called to simplify quadratic polynomials, like so:


A * x^2 + B * x + C = (S * x + T)^2 + U


where A, B, C, S, T, and U are constants, which can be complex. In this problem, we are given A, B, and C, determine S, T, and U.


Observe that:

(S * x + T)^2 + U = S^2 * x^2 + 2 * S * T * x + T^2 + U


Then, matching this to the left side:

A * x^2 + B * x + C = S^2 * x^2 + 2 * S * T * x + T^2 + U


x^2 coefficient: A = S^2 which implies that S = ±√A

x coefficient: B = 2 * S * T which implies that T = B / (2 * S)

Constant coefficient: C = T^2 + U which implies that U = C – T^2


(For today’s blog, I am just going to use the principal square root, S = √A. Taking the negative square root will also provide accurate results.)



Example: Transform x^2 + 6 * x + 8 into the form (S * x + T)^2 + U.


Note that A = 1, B = 6, and C = 8.

Then:

S = √1 = 1

T = 6 / ( 2 * 1) = 3

U = 8 – 3^2 = -1


x^2 + 6 * x + 8 = (x + 3)^2 – 1



Code: Python


This code was entered on a fx-CG 50, but it should work on all calculators and platforms with Python. No modules are needed.


Title: quadtrans.py

711 bytes


from math import *

print(“Quadratic \nTransformation”)

print(“1. -> (s*x+t)**2+u”)

print(“2. -> a*x**2+b*x+c”)

ch=int(input(“choice? “))


if ch==1:

  print(“a*x**2+b*x+c ->”)

  a=eval(input(“a? “))

  b=eval(input(“b? “))

  c=eval(input(“c? “))

  print(“Principal Root”)

  print(“-> (s*x+t)**2+u”)

  s=a**(1/2)

  t=b/(2*s)

  u=c-t**2

  print(“s= “+str(s))

  print(“t= “+str(t))

  print(“u= “+str(u))

elif ch==2:

  print(“(s*x+t)**2+u ->”)

  s=eval(input(“s? “))

  t=eval(input(“t? “))

  u=eval(input(“u? “))

  print(“-> a*x**2+b*c+c”)

  a=s**2

  b=2*s*t

  c=t**2+u

  print(“a= “+str(a))

  print(“b= “+str(b))

  print(“c= “+str(c))

else:

  print(“Not a valid choice.”)


Basic Code: Casio fx-CG 50

Title: QUADTRNS, 316 bytes


a+bi

Menu “QUADRATIC TRANS.”, “-> (S×x+T)²+U”, 1, “-> A×x²+B×x+C”, 2


Lbl 1

ClrText

A×x²+B×x+C ->”

A”? → A

B”? → B

C”? → C

PRINCIPAL ROOT” ◢

A → S

B÷(2×S) → T

C–T² → U

ClrText

-> (S×x+T)²+U”

S=”

S ◢

T=”

T ◢

U=”

U

Stop


Lbl 2

(S×x+T)²+U ->”

S”? → S

T”? → T

U”? → U

S² → A

2×S×T → B

T²+U → C

-> A×x²+B×x+C”

A=”

A ◢

B=”

B ◢

C=”

C

Stop


Basic Code: TI-84 Plus CE

Title: QUADTRNS (318 bytes)


a+bi

Menu (“QUADRATIC TRANS.”, “-> (S*X+T)²+U”, 1, “-> A*X²+B*X+C”, 2)


Lbl 1

ClrHome

Disp “A*X²+B*X+C ->”

Prompt A, B, C

Disp “PRINCIPAL ROOT”

Wait 0.5

(A) → S

B/(2*S) → T

C–T² → U

ClrHome

Disp “-> (S*X+T)²+U”

Disp “S= “+toString(S)

Disp “T= “+toString(T)

Disp “U= “+toString(U)

Stop


Lbl 2

Disp “(S*X+T)²+U ->”

Prompt S, T, U

S² → A

2*S*T → B

T²+U → C

ClrHome

Disp “-> A*X²+B*X+C”

Disp “A= “+toString(A)

Disp “B= “+toString(B)

Disp “C= “+toString(C)

Stop



Examples


4 * x^2 + 8 * x + 36 < - > (2 * x + 2)^2 + 32


A = 4, B = 8. C = 36

S = 2, T= 2, U = 32


x^2 – 8 * x + 3 < - > (x – 4)^2 – 13


A = 1, B = -8, C = 3

S = 1, T = -4, U = -13


The program allows for complex and imaginary coefficients:


-4 * x^2 + 8 * x + 16 < - > (2i * x – 2i)^2 + 20


A = -4, B = 8, C = 16

S = 2i, T = -2i, U = 20



Hope you find this useful. Until next time,


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.

Saturday, May 18, 2024

HP 15C and Python: Calculating The Speed of Sound in Air

 HP 15C and Python: Calculating The Speed of Sound in Air



How fast does Sound Travel?


We can calculate the speed of sound in air which depends on temperature.


The speed of sound in air can be approximated by:

c ≈ √( γ * R * T / M)


where:


R = molar gas constant = 8.314 4625 618 153 J/(K * mol)

R = 8.314 4625 618 153 (kg * m^2)/(s^2 * K * mol)


M = molar mass of air = 0.02897 kg/mol


γ = adiabatic index of air

The index of air varies between 1.3991 and 1.403. For calculations, Wikipedia uses an average value of γ = 1.4. (see Source). For reference, an adiabatic process is a thermodynamic process that does not use heat.


A joule is a composite unit, 1 J = 1 (kg * m^2)/s^2


T = temperature in Kelvin.


Convert temperatures to Kelvin:


Fahrenheit to Kelvin:

T = 5/9 * (°F – 32) + 273.15


Celsius to Kelvin:

T = °C + 273.15


A formula to calculate the speed of sound in air is:


C = √( γ * R * T / M)


Entering the three numerical constants for γ, R, M:


γ * R / M ≈ 401.8035093 m^2/(s^2 * K)


Then:


C ≈ √(401.8035093 * T)

≈ 20.04503702 * √T


A popular version of the formula can be achieved by multiplying by 273.15/273.15 (essentially multiplying by 1):


C ≈ √(401.8035093 * 273.15 * T / 273.15)

≈ √(401.8035093 * 273.15) * √(T / 273.15)

≈ 331.2893427 * √(T / 273.15)


Let °C be the temperature in degrees Celsius. Then:

≈ 331.2893427 * √((°C + 273.15) / 273.15)

≈ 331.2893427 * √(°C / 273.15 + 1)


The Wikipedia formula rounds the constant to 331.3. (see Source) Other formulas use 331.


However, we can use the formula


C ≈ 20.04503702 * √T


and be in the ballpark. Note we’ll have to convert the temperature to Kelvin before using this formula.




HP 15C (Collector’s Edition) Program: Speed of Sound


Instructions:


To calculate the speed of sound when the temperature is in Fahrenheit (°F), press [ f ] { A } or [ GSB ] { A } [ R/S ].


To calculate the speed of sound when the temperature is in Celsius (°C), press [ f ] { B } or [ GSB ] { B } [ R/S ].


To calculate the speed of sound when the temperature is in Kevin (K), press [ f ] { C } or [ GSB ] { C } [ R/S ].


Code


Step

Key Code

Key

Notes

001

42, 21, 11

LBL A

Enter °F, convert to °C

002

3

3


003

2

2


004

30

-


005

5

5


006

20

×


007

9

9


008

10

÷


009

42, 22, 12

LBL B

Enter °C, convert to K

010

2

2


011

7

7


012

3

3


013

48

.


014

1

1


015

5

5


016

40

+


017

42, 22, 13

LBL C

Enter K

018

11

Calculate Speed of Sound

019

2

2


020

0

0


021

48

.


022

0

0


023

4

4


024

5

5


025

0

0


026

3

3


027

7

7


028

0

0


029

2

2


030

20

×


031

36

ENTER


032

36

ENTER


033

2

2


034

48

.


035

2

2


036

3

3


037

6

6


038

9

9


039

3

3


040

6

6


041

20

×


042

34

X<>Y


043

43, 32

RTN

End of the program


Python Code: spsound.py


Programmed on a TI-84 Plus CE Python.


print("Speed Of Sound\n")

print("1. Fahrenheit")

print("2. Celsius")

print("3. Kelvin")


# type of temperature

# choice var must be an integer

# ch is used in an element call

ch=int(input("? "))

if ch==1:

t0=eval(input("deg F? "))

t=5/9*(t0-32)+273.15

elif ch==2:

t0=eval(input("deg C? "))

t=t0+273.15

elif ch==3:

t0=eval(input("K? "))

t=t0

else:

print("Not a valid choice")

# force an error to stop the script

1/0


# calculation

s1=20.04503702*t**0.5

s2=s1*2.236936

print(str(s1)+" m/s")

print(str(s2)+" mi/hr")




Example Calculations (rounded to 5 decimal places)


Temperature

Speed of Sound (m/s)

Speed of Sound (mi/hr)

68 °F

343.20358

767.72445

35 °C

351.87462

787.83024

280 K

335.41762

750.30776

0 °C

331.28934

741.07306

96 °F

352.19167

787.83024



Source


“Speed of Sound” Wikipedia. Last Edited March 27, 2024. https://en.wikipedia.org/wiki/Speed_of_sound Retrieved April 7, 2024



Until next time,


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.

Python and Calculator Basic: Transforming Quadratic Polynomials

Python and Calculator Basic: Transforming Quadratic Polynomials Calculators: Casio fx-CG 50, TI-84 Plus CE Problem Sometimes we are...