From 4e15d8f6f5c89ce854f7765d6a886bc3c1071e2c Mon Sep 17 00:00:00 2001 From: androiddrew Date: Wed, 9 Jan 2019 16:20:58 -0500 Subject: [PATCH] Initial commit. completed exercises up to chapter 2. Graphing equations. --- .gitignore | 63 ++++++++++++++++++++++++++++ ch2_graphing/graphing_functions.py | 38 +++++++++++++++++ ch2_graphing/mygraph.png | Bin 0 -> 19886 bytes ch2_graphing/pyplot_example.py | 19 +++++++++ ch2_graphing/saving_a_plot.py | 19 +++++++++ ch2_graphing/simple_graphs.py | 17 ++++++++ ch2_graphing/temp_comparision_v2.py | 20 +++++++++ ch2_graphing/temp_comparison.py | 13 ++++++ ch2_graphing/temp_decimal.py | 12 ++++++ ch2_graphing/temp_graph.py | 7 ++++ requirements.txt | 1 + 11 files changed, 209 insertions(+) create mode 100644 .gitignore create mode 100644 ch2_graphing/graphing_functions.py create mode 100644 ch2_graphing/mygraph.png create mode 100644 ch2_graphing/pyplot_example.py create mode 100644 ch2_graphing/saving_a_plot.py create mode 100644 ch2_graphing/simple_graphs.py create mode 100644 ch2_graphing/temp_comparision_v2.py create mode 100644 ch2_graphing/temp_comparison.py create mode 100644 ch2_graphing/temp_decimal.py create mode 100644 ch2_graphing/temp_graph.py create mode 100644 requirements.txt diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..680a09b --- /dev/null +++ b/.gitignore @@ -0,0 +1,63 @@ +# ---> Python +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +env/ +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +*.egg-info/ +.installed.cfg +*.egg + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*,cover + +# Translations +*.mo +*.pot + +# Django stuff: +*.log + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Pycharm +.idea + diff --git a/ch2_graphing/graphing_functions.py b/ch2_graphing/graphing_functions.py new file mode 100644 index 0000000..18d6443 --- /dev/null +++ b/ch2_graphing/graphing_functions.py @@ -0,0 +1,38 @@ +""" +Simple example demonstrating graphing with functions + +Topic: Newton's law of Universal Gravitation + +Models the relationship between gravitational force and distance between two bodies. +""" + +import matplotlib.pyplot as plt + +G = 6.674 * (10 ** -11) + + +def draw_graph(x, y): + plt.plot(x, y, marker="o") + plt.xlabel("Distance in Meters") + plt.ylabel("Gravitational Force in Newtons") + plt.title("Gravitational Force and Distance") + plt.show() + + +def generate_F_r(): + """Generates values for r in the New""" + r = range(100, 1001, 50) + F = [] + + m1 = 0.5 + m2 = 1.5 + + for dist in r: + force = G * (m1 / m2) / (dist ** 2) + F.append(force) + + draw_graph(r, F) + + +if __name__ == "__main__": + generate_F_r() diff --git a/ch2_graphing/mygraph.png b/ch2_graphing/mygraph.png new file mode 100644 index 0000000000000000000000000000000000000000..349959c61da02ba8c2bf0a7c6cf1b6a3f759285b GIT binary patch literal 19886 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