# Plot Mathematical Functions – How to Plot Math Functions in Python?

Hello folks! In this tutorial, we are going to learn how we can plot mathematical functions using Python. So let’s get started.

## Prerequisites

For plotting different mathematical functions using Python, we require the following two Python libraries:

### 1. NumPy

NumPy is a Python library that supports multi-dimensional arrays & matrices and offers a wide range of mathematical functions to operate on the NumPy arrays & matrices. It is one of the most fundamental libraries for scientific computation. We can install NumPy on our local computer using the following command.

```> python -m pip install numpy
```

### 2. Matplotlib

Matplotlib is a Python library that is widely used for various types of plotting. Using Matplotlib, We can plot static and interactive visualizations very easily. We can install Matplotlib on our local computer using the following command.

```> python -m pip install matplotlib
```

## Steps to Plot Mathematical Functions

First import the `numpy` and `matplotlib.pyplot` module in the main Python program (.py) or Jupyter Notebook (.ipynb) using the following Python commands.

```import numpy as np
import matplotlib.pyplot as plt
```

For all the plottings, we will follow almost the same steps apart from using the specific NumPy mathematical function in the respective plots.

### 1. Plot (y = x) Identity function

```x = np.arange(0, 11, 1)
y = x
print('Values of x: ', x)
print('Values of y: ', y)
plt.plot(x, y)
plt.title("Identity Function")
plt.xlabel("Values of x")
plt.ylabel("Values of y")
plt.show()
```

Output:

```Values of x:  [ 0  1  2  3  4  5  6  7  8  9 10]
Values of y:  [ 0  1  2  3  4  5  6  7  8  9 10]
```

### 2. Plot (y = a.x2 + b.x2 + c) Quadratic function

```x = np.arange(-11, 11, 1)
a = 2
b = 9
c = 10
y = a*(x**2) + b*x + c

print('Values of x: ', x)
print('Values of y: ', y)
plt.plot(x, y)
plt.xlabel("Values of x")
plt.ylabel("Values of y")
plt.show()
```

Output:

```Values of x:  [-11 -10  -9  -8  -7  -6  -5  -4  -3  -2  -1   0   1   2   3   4   5   6   7   8   9  10]
Values of y:  [153 120  91  66  45  28  15   6   1   0   3  10  21  36  55  78 105 136 171 210 253 300]
```

### 3. Plot (y = a.x3 + b.x2 + c.x + d) Cubic function

```x = np.arange(-11, 11, 1)
a = 2
b = 3
c = 4
d = 9
y = a*(x**3) + b*(x**2) + c*x + d

print('Values of x: ', x)
print('Values of y: ', y)

plt.plot(x, y)

plt.title("Cubic Function")
plt.xlabel("Values of x")
plt.ylabel("Values of y")
plt.show()
```

Output:

```Values of x:  [-11 -10  -9  -8  -7  -6  -5  -4  -3  -2  -1   0   1   2   3   4   5   6   7   8   9  10]
Values of y:  [-2334 -1731 -1242  -855  -558  -339  -186   -87   -30    -3     6     9    18    45   102   201   354   573   870  1257  1746  2349]
```

### 4. Plot (y = ln(x) or loge(x)) Natural logarithm function

```x = np.arange(1, 11, 0.001)
y = np.log(x)
print('Values of x: ', x)
print('Values of y: ', y)

plt.plot(x, y)

plt.title("Natural logarithm Function")
plt.xlabel("Values of x")
plt.ylabel("Values of y")
plt.show()
```

Output:

```Values of x:  [ 1.     1.001  1.002 ... 10.997 10.998 10.999]
Values of y:  [0.00000000e+00 9.99500333e-04 1.99800266e-03 ... 2.39762251e+00 2.39771344e+00 2.39780436e+00]
```

### 5. Plot (y = log10x) Common/Decimal logarithm function

```x = np.arange(1, 11, 0.001)
y = np.log10(x)
print('Values of x: ', x)
print('Values of y: ', y)

plt.plot(x, y)

plt.title("Common logarithm Function")
plt.xlabel("Values of x")
plt.ylabel("Values of y")
plt.show()
```

Output:

```Values of x:  [ 1.     1.001  1.002 ... 10.997 10.998 10.999]
Values of y:  [0.00000000e+00 4.34077479e-04 8.67721531e-04 ... 1.04127423e+00 1.04131372e+00 1.04135320e+00]
```

### 6. Plot (y = ex) Natural Exponential function

```x = np.arange(-11, 11, 0.01)
y = np.exp(x)
print('Values of x: ', x)
print('Values of y: ', y)

plt.plot(x, y)

plt.title("Natural exponential Function")
plt.xlabel("Values of x")
plt.ylabel("Values of y")
plt.show()
```

Output:

```Values of x:  [-11.   -10.99 -10.98 ...  10.97  10.98  10.99]
Values of y:  [1.67017008e-05 1.68695557e-05 1.70390975e-05 ... 5.81045934e+04 5.86885543e+04 5.92783841e+04]
```

### 7. Plot (y = ax) General Exponential function

```x = np.arange(-11, 11, 0.01)
a = 8
y = a**x
print('Values of x: ', x)
print('Values of y: ', y)

plt.plot(x, y)

plt.title("General exponential Function")
plt.xlabel("Values of x")
plt.ylabel("Values of y")
plt.show()
```

Output:

```Values of x:  [-11.   -10.99 -10.98 ...  10.97  10.98  10.99]
Values of y:  [1.16415322e-10 1.18861455e-10 1.21358987e-10 ... 8.07043896e+09 8.24001604e+09 8.41315629e+09]
```

### 8. Plot (y = sign(x)) Signum function

```x = np.arange(-11, 11, 0.001)
y = np.sign(x)

print('Values of x: ', x)
print('Values of y: ', y)

plt.plot(x, y)

plt.title("Signum Function")
plt.xlabel("Values of x")
plt.ylabel("Values of y)")

plt.show()
```

Output:

```Values of x:  [-11.    -10.999 -10.998 ...  10.997  10.998  10.999]
Values of y:  [-1. -1. -1. ...  1.  1.  1.]
```

### 9. Plot (y = a.sin(b.x + c)) Sinusoidal function in Python

```x = np.arange(-11, 11, 0.001)
a = 5
b = 3
c = 2
y = a*np.sin(b*x + c)

print('Values of x: ', x)
print('Values of y: ', y)

plt.plot(x, y)

plt.title("Sinusoidal Function")
plt.xlabel("Values of x")
plt.ylabel("Values of y")

plt.show()
```

Output:

```Values of x:  [-11.    -10.999 -10.998 ...  10.997  10.998  10.999]
Values of y:  [ 2.02018823  2.03390025  2.04759397 ... -2.10016104 -2.11376421 -2.12734835]
```

### 10. Plot (y = sinc(x)) Sinc function

```x = np.arange(-11, 11, 0.01)
y = np.sinc(x)

print('Values of x: ', x)
print('Values of y: ', y)

plt.plot(x, y)

plt.title("Sinc function")
plt.xlabel("Values of x")
plt.ylabel("Values of y")

plt.show()
```

Output:

```Values of x:  [-11.   -10.99 -10.98 ...  10.97  10.98  10.99]
Values of y:  [1.41787526e-16 9.09768439e-04 1.82029537e-03 ... 2.73068428e-03
1.82029537e-03 9.09768439e-04]
```

### 11. Plot (y = cosh(x)) Hyperbolic function

```x = np.arange(-11, 11, 0.001)
y = np.cosh(x)

print('Values of x: ', x)
print('Values of y: ', y)

plt.plot(x, y)

plt.title("Hyperbolic Function")
plt.xlabel("Values of x")
plt.ylabel("Values of y")

plt.show()
```

Output:

```Values of x:  [-11.    -10.999 -10.998 ...  10.997  10.998  10.999]
Values of y:  [29937.07086595 29907.14875865 29877.2565585  ... 29847.39423524 29877.25655813 29907.14875828]
```

## Summing-up

In this tutorial, we have learned how to plot different types of mathematical functions using Numpy and Matplotlib libraries. Hope you have understood the plotting process of different mathematical functions and are ready to experiment on your own. Thanks for reading! Stay tuned with us for amazing learning resources on Python programming.