Hidden WordScanner
Private scans · No account required

DuckieDai Smart Kinematics

Solve a selected constant-acceleration quantity from the available initial velocity, final velocity, acceleration, time, and displacement values.

physics · MIT License

Overview

Solve a selected constant-acceleration quantity from the available initial velocity, final velocity, acceleration, time, and displacement values.

  • Tested on a TI calculator
  • Downloaded 41 times
  • Version 1.0.0
  • 11874 bytes
  • Uses math

Before you run it

  • TI-84 Plus CE Python · tested on OS 5.8.3, Python App 5.8.3.0048
  • TI Connect CE .py conversion to a Python AppVar in RAM; physically verified one program at a time
  • Acceleration is constant over the interval and all signed quantities share one direction convention.
  • A solvable combination of known values is required and divisor values cannot be zero.
  • Insufficient or incompatible known values produce no solution.

Try the DuckieDai calculator screen

Follow the reviewed program's real menu, prompts, validation, calculation, and result flow before downloading.

JavaScript is required for the optional browser simulation. Source viewing and downloading remain available without it.

Simulation boundary: This preview uses a reviewed browser adapter. It does not execute the downloaded Python and does not prove TI-Python or calculator compatibility.

Learn the math

How the kinematics equations work

The idea

Constant-acceleration motion is described by five quantities: initial velocity, final velocity, acceleration, time, and displacement. Each kinematics equation links four of them.

So if you know three, you can find a fourth. The hard part on paper is choosing the right equation; this program chooses it for you.

The formula

v = v0 + a*t

dx = v0*t + 0.5*a*t^2

v^2 = v0^2 + 2*a*dx

dx = 0.5*(v0 + v)*t

v0
initial velocity (m/s)
v
final velocity (m/s)
a
acceleration (m/s^2)
t
time (s)
dx
displacement (m)

Using the program

Worked example

A car starts from rest and accelerates at 2 m/s^2 for 5 s. How far does it go? Choose 5, enter v0 = 0, leave v blank, enter a = 2 and t = 5.

dx = v0*t + .5*a*t^2 = 0 + 0.5 x 2 x 25

The program shows dx = 25.0 meters.

Tips and common mistakes

Where this comes up

Constant-acceleration motion is the first major unit in almost every physics course, and the same equations return in projectile motion, free fall, and stopping-distance problems.

Exact reviewed bytes

Source code

Download .py

View source below, copy it when JavaScript is available, or download the exact .py bytes.

  1. """DuckieDai Smart Kinematics for TI-84 Plus CE Python."""
  2. from math import sqrt
  3. def duckiedai_intro(program_name, wait=True):
  4. """Show the reusable DuckieDai program opening."""
  5. title = program_name[:16]
  6. empty = 16 - len(title)
  7. left = empty // 2
  8. right = empty - left
  9. print("+----------------------+")
  10. print("| " + " " * left + title + " " * right + " |")
  11. print("| |")
  12. print("| __ |")
  13. print("| ___(o )> quack! |")
  14. print("| \\ <_. ) |")
  15. print("| `---' |")
  16. print("| by DuckieDai |")
  17. print("+----------------------+")
  18. print("Loading...")
  19. if wait:
  20. input("Press enter to start ")
  21. print("\n" * 6)
  22. def optional_number(prompt):
  23. """Return a number or None if left blank."""
  24. while True:
  25. raw = input(prompt)
  26. if raw == "":
  27. return None
  28. try:
  29. value = float(raw)
  30. if value > -1e100 and value < 1e100:
  31. return value
  32. except ValueError:
  33. pass
  34. print("Number or blank only.")
  35. def show_answer(name, value, unit):
  36. input("Press enter for answer ")
  37. print("\n" * 6)
  38. print("ANSWER")
  39. print(name + " = " + str(value))
  40. print(unit)
  41. def main():
  42. duckiedai_intro("KINEMATIC SOLVER")
  43. print("SMART KINEMATICS")
  44. print()
  45. print("What do you need?")
  46. print()
  47. print("1. Final velocity")
  48. print("2. Initial velocity")
  49. print("3. Acceleration")
  50. print("4. Time")
  51. print("5. Displacement")
  52. print()
  53. target = input("Choose 1-5: ")
  54. print()
  55. print("Enter known values.")
  56. print("Leave unknowns blank.")
  57. print()
  58. # -------------------------
  59. # GET KNOWN VALUES
  60. # -------------------------
  61. if target != "2":
  62. v0 = optional_number(
  63. "v0 (m/s): "
  64. )
  65. else:
  66. v0 = None
  67. if target != "1":
  68. v = optional_number(
  69. "v (m/s): "
  70. )
  71. else:
  72. v = None
  73. if target != "3":
  74. a = optional_number(
  75. "a (m/s^2): "
  76. )
  77. else:
  78. a = None
  79. if target != "4":
  80. t = optional_number(
  81. "t (s): "
  82. )
  83. else:
  84. t = None
  85. if target != "5":
  86. dx = optional_number(
  87. "dx (m): "
  88. )
  89. else:
  90. dx = None
  91. solved = False
  92. # ==================================================
  93. # 1. SOLVE FINAL VELOCITY
  94. # ==================================================
  95. if target == "1":
  96. # v = v0 + a*t
  97. if (v0 is not None and
  98. a is not None and
  99. t is not None):
  100. print()
  101. print("Using:")
  102. print("v = v0 + a*t")
  103. v = v0 + a * t
  104. print()
  105. print("v = " + str(v0) +
  106. " + (" + str(a) +
  107. " x " + str(t) + ")")
  108. show_answer(
  109. "v",
  110. v,
  111. "m/s"
  112. )
  113. solved = True
  114. # v^2 = v0^2 + 2*a*dx
  115. elif (v0 is not None and
  116. a is not None and
  117. dx is not None):
  118. inside = (
  119. v0 ** 2 +
  120. 2 * a * dx
  121. )
  122. if inside >= 0:
  123. v = sqrt(inside)
  124. print()
  125. print("Using:")
  126. print("v^2=v0^2+2*a*dx")
  127. print()
  128. print("Rearranged:")
  129. print("v=+/-sqrt(")
  130. print("v0^2+2*a*dx)")
  131. print()
  132. print("ANSWER")
  133. print("v = +/- " + str(v))
  134. print("m/s")
  135. print()
  136. print("Direction decides")
  137. print("the correct sign.")
  138. solved = True
  139. # ==================================================
  140. # 2. SOLVE INITIAL VELOCITY
  141. # ==================================================
  142. elif target == "2":
  143. # v = v0 + a*t
  144. if (v is not None and
  145. a is not None and
  146. t is not None):
  147. print()
  148. print("Using:")
  149. print("v = v0 + a*t")
  150. print()
  151. print("Rearranged:")
  152. print("v0 = v - a*t")
  153. v0 = v - a * t
  154. show_answer(
  155. "v0",
  156. v0,
  157. "m/s"
  158. )
  159. solved = True
  160. # dx = v0*t + 0.5*a*t^2
  161. elif (dx is not None and
  162. a is not None and
  163. t is not None and
  164. t != 0):
  165. print()
  166. print("Using:")
  167. print("dx=v0*t+.5*a*t^2")
  168. print()
  169. print("Rearranged:")
  170. print("v0=(dx-.5*a*t^2)/t")
  171. v0 = (
  172. dx -
  173. 0.5 * a * t ** 2
  174. ) / t
  175. show_answer(
  176. "v0",
  177. v0,
  178. "m/s"
  179. )
  180. solved = True
  181. # v^2 = v0^2 + 2*a*dx
  182. elif (v is not None and
  183. a is not None and
  184. dx is not None):
  185. inside = (
  186. v ** 2 -
  187. 2 * a * dx
  188. )
  189. if inside >= 0:
  190. v0 = sqrt(inside)
  191. print()
  192. print("Using:")
  193. print("v^2=v0^2+2*a*dx")
  194. print()
  195. print("Rearranged:")
  196. print("v0=+/-sqrt(")
  197. print("v^2-2*a*dx)")
  198. print()
  199. print("ANSWER")
  200. print("v0 = +/- " + str(v0))
  201. print("m/s")
  202. print()
  203. print("Direction decides")
  204. print("the correct sign.")
  205. solved = True
  206. # ==================================================
  207. # 3. SOLVE ACCELERATION
  208. # ==================================================
  209. elif target == "3":
  210. # v = v0 + a*t
  211. if (v is not None and
  212. v0 is not None and
  213. t is not None and
  214. t != 0):
  215. print()
  216. print("Using:")
  217. print("v = v0 + a*t")
  218. print()
  219. print("Rearranged:")
  220. print("a = (v-v0)/t")
  221. a = (v - v0) / t
  222. show_answer(
  223. "a",
  224. a,
  225. "m/s^2"
  226. )
  227. solved = True
  228. # dx = v0*t + 0.5*a*t^2
  229. elif (dx is not None and
  230. v0 is not None and
  231. t is not None and
  232. t != 0):
  233. print()
  234. print("Using:")
  235. print("dx=v0*t+.5*a*t^2")
  236. print()
  237. print("Rearranged:")
  238. print("a=2(dx-v0*t)/t^2")
  239. a = (
  240. 2 *
  241. (dx - v0 * t)
  242. / (t ** 2)
  243. )
  244. show_answer(
  245. "a",
  246. a,
  247. "m/s^2"
  248. )
  249. solved = True
  250. # v^2 = v0^2 + 2*a*dx
  251. elif (v is not None and
  252. v0 is not None and
  253. dx is not None and
  254. dx != 0):
  255. print()
  256. print("Using:")
  257. print("v^2=v0^2+2*a*dx")
  258. print()
  259. print("Rearranged:")
  260. print("a=(v^2-v0^2)/(2*dx)")
  261. a = (
  262. v ** 2 -
  263. v0 ** 2
  264. ) / (2 * dx)
  265. show_answer(
  266. "a",
  267. a,
  268. "m/s^2"
  269. )
  270. solved = True
  271. # ==================================================
  272. # 4. SOLVE TIME
  273. # ==================================================
  274. elif target == "4":
  275. # v = v0 + a*t
  276. if (v is not None and
  277. v0 is not None and
  278. a is not None and
  279. a != 0):
  280. print()
  281. print("Using:")
  282. print("v = v0 + a*t")
  283. print()
  284. print("Rearranged:")
  285. print("t = (v-v0)/a")
  286. t = (v - v0) / a
  287. show_answer(
  288. "t",
  289. t,
  290. "seconds"
  291. )
  292. solved = True
  293. # dx = v0*t + 0.5*a*t^2
  294. elif (dx is not None and
  295. v0 is not None and
  296. a is not None):
  297. print()
  298. print("Using:")
  299. print("dx=v0*t+.5*a*t^2")
  300. if a == 0:
  301. if v0 != 0:
  302. t = dx / v0
  303. print()
  304. print("Since a = 0:")
  305. print("t = dx/v0")
  306. show_answer(
  307. "t",
  308. t,
  309. "seconds"
  310. )
  311. solved = True
  312. else:
  313. inside = (
  314. v0 ** 2 +
  315. 2 * a * dx
  316. )
  317. if inside >= 0:
  318. root = sqrt(inside)
  319. t1 = (
  320. -v0 + root
  321. ) / a
  322. t2 = (
  323. -v0 - root
  324. ) / a
  325. print()
  326. print("Solving quadratic:")
  327. print()
  328. if t1 >= 0:
  329. print("t = " + str(t1) +
  330. " s")
  331. if t2 >= 0:
  332. print("t = " + str(t2) +
  333. " s")
  334. print()
  335. print("Use physical")
  336. print("positive time.")
  337. solved = True
  338. # ==================================================
  339. # 5. SOLVE DISPLACEMENT
  340. # ==================================================
  341. elif target == "5":
  342. # dx = v0*t + 0.5*a*t^2
  343. if (v0 is not None and
  344. a is not None and
  345. t is not None):
  346. print()
  347. print("Using:")
  348. print("dx=v0*t+.5*a*t^2")
  349. dx = (
  350. v0 * t +
  351. 0.5 * a * t ** 2
  352. )
  353. show_answer(
  354. "dx",
  355. dx,
  356. "meters"
  357. )
  358. solved = True
  359. # v^2 = v0^2 + 2*a*dx
  360. elif (v is not None and
  361. v0 is not None and
  362. a is not None and
  363. a != 0):
  364. print()
  365. print("Using:")
  366. print("v^2=v0^2+2*a*dx")
  367. print()
  368. print("Rearranged:")
  369. print("dx=(v^2-v0^2)/(2*a)")
  370. dx = (
  371. v ** 2 -
  372. v0 ** 2
  373. ) / (2 * a)
  374. show_answer(
  375. "dx",
  376. dx,
  377. "meters"
  378. )
  379. solved = True
  380. # ==================================================
  381. # COULD NOT SOLVE
  382. # ==================================================
  383. if not solved:
  384. print()
  385. print("Not enough usable")
  386. print("information.")
  387. print()
  388. print("Check the values")
  389. print("given in the problem.")
  390. print()
  391. print("DuckieDai says: done!")
  392. # TI-Python imports the selected AppVar rather than
  393. # setting __name__ to main.
  394. main()
Filename
KINETICS.py
Size
11874 bytes
SHA-256
5eb4efc0bee4bd73379ac513a08f05d889af8185695ff95053f6bbca30ec6bc2

Usage

Inputs

  • Target quantity
  • Known velocity, acceleration, time, and displacement values; unknown values are left blank

Outputs

  • Solved target with the selected constant-acceleration equation and labelled unit

Units: Use one consistent system such as metres, seconds, metres per second, and metres per second squared.

Assumptions and limitations

Assumptions

  • Acceleration is constant over the interval and all signed quantities share one direction convention.

Constraints

  • A solvable combination of known values is required and divisor values cannot be zero.

Known failures

  • Insufficient or incompatible known values produce no solution.
  • Some quadratic situations may have multiple physical interpretations requiring user judgment.

Compatibility and review

Review status
Tested on a TI calculator
Tested on
TI-84 Plus CE Python; OS 5.8.3; Python App 5.8.3.0048; exact paginated .py transferred through TI Connect CE into RAM and tested individually
What happened
Passed: branded intro, target selection, optional value entry, compatible kinematics solution, and paginated answer screen ran on the physical calculator
Dependencies
math
Suggested calculator name
KINETICS — you can give it another valid, unique name when you transfer it
Desktop test cases
Not available for this interactive-only source

This exact source auto-launches an interactive calculator session, so compatibility evidence comes from the recorded physical-device review rather than an importable desktop fixture.

Transfer and launch

Download the .py file, send it to your calculator with TI Connect CE as KINETICS or another name, then open the Python App and try the worked example on this page first.

Full installation and troubleshooting guide. Check your teacher's or exam's rules before using any program.

Version history

Did a DuckieDai program help with your homework? Every program here is free. If you would like to say thanks, you can leave a tip on Cash App ($duckiedai214) or read what tips pay for.

Independent compatibility resource: Hidden Word Scanner is independent and is not affiliated with or endorsed by Texas Instruments. TI product names describe compatibility only.

Action-count privacy: Successful downloads, preview starts, and preview completions increment same-origin aggregate counters, and so does a Yes or No answer about whether the program worked. Your browser notes that you answered; that note is never sent to the site. No entered values, source text, IP address, account, cookie, device identifier, or fingerprint is stored with these counts.