Skip to main content

Simplified interface to Sympy for solving physics, engineering and maths problems

Project description

mathpad

mathpad is a robust Computer Algebra System (CAS) library built on top of SymPy, providing a simple and intuitive way to solve engineering, science, and math problems using Python.

Quickstart

  1. Install using package manager of choice. For example, pip:
pip install mathpad
  1. Import and use the library in python:
Code Display
from mathpad import *

v = 5 * m / s

mph = "mph" * miles / hour
eqn = mph == v.eval()

Alt text

Documentation

Currently the only in-depth documentation is Walkthrough.ipynb. You can access it on the JupyterLite Sandbox Site here.

Showcase

Feature Example Display
Units
m

m / s ** 2

feet.in_units(cm)

(V * A).in_units(watt)

Alt text

Values
v = 2.5 * m / s

c = m(5)

Alt text

Symbols
t = "t" * seconds

y = "\\hat{y}_1" * volts

Alt text

Symbolic Functions
a = "a(t)" * m / s ** 2

Alt text

Equations
eqn = (v == a * t)

Alt text

Solving
sln, = solve([eqn], solve_for=[a])

sln[a]

Alt text

Algebra
simplify(e ** (1j * pi))

expand((t + 1)(t + 2))

factor(t**2 + 3 * t * s + 2)

subs((t + 1)(t + 2), { t: 5 })

Alt text

Calculus
diff(a, wrt=t, order=1)


integral(a, wrt=t, between=(0, 10))

Alt text

Vectors
O = R3("O") # 3D frame of reference
v1 = O[1, 2, 3]


x, y, z = ("x", "y", "z") * m
v2 = O[x, y, z]



v3 = "v_3" @ O



v2.cross(v3)

Alt text

Matrices
O2 = R2("O2")
A = Mat[O, O2](
    [1, 2],
    [3, 4],
    [5, 6]
)


v2_wrt_O2 = v2 @ A


B = Mat[O2, O]("B")


I = Mat[O2, O2].I

Alt text

Numpy Compatibility
y = sin(t)
y_fn = as_numpy_func(y)

y_fn({ t: [1, 2, 3] })

import numpy as np
y_fn({
  t: np.arange(
    start=0, stop=2 * np.pi, step=np.pi / 12
  )
})

array([0.84147098, 0.90929743, 0.14112001])


array([0. , 0.25881905, 0.5 , 0.70710678, 0.8660254 , 0.96592583, 1. , 0.96592583, 0.8660254 , 0.70710678, 0.5 , 0.25881905])

Code Generation
generate_c_code(theta, [t])

Credits

This package was created with Cookiecutter and the browniebroke/cookiecutter-pypackage project template.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mathpad-2.1.0.tar.gz (45.5 kB view hashes)

Uploaded Source

Built Distribution

mathpad-2.1.0-py3-none-any.whl (53.5 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page