Hello Readers! Welcome to another tutorial on NumPy Mathematical Functions. In this tutorial, we will understand the NumPy arccosh function along with practicing a lot of examples. We will also plot the graph using Matplotlib Library.

Without any further due, let’s get started.

*Also read: NumPy Arcsinh – A Complete Guide*

## What is hyperbolic arc cos (inverse cos)- A Quick Overview

- arccosh is the inverse hyperbolic cosine function.
- The equivalent expression of the arccosh is:

- The domain of the arccosh function is
**[1, infinity)**. Here, infinity is not included. - The range of the arccosh function is
**[1, infinity)**.

*Also read: NumPy Interview Questions: Prepare Yourself For Your Python Job Interview*

## What is NumPy Arccosh?

The **NumPy Arccosh** function is also one of the inverse hyperbolic trigonometric functions provided by the NumPy library. Using this function, we can calculate the inverse hyperbolic cosine values of the input passed to the arccosh function.

The numpy arccosh function can be accessed as `numpy.arccosh()`

.

Syntax: numpy.arccosh(input) where the input can be a single number, a complex number as well as a NumPy array of numbers.

## Working with NumPy Arccosh

Let’s try out some examples.

### Using numpy.arccosh() with NumPy array having numbers

```
import numpy as np
a = np.array(( 2 , 3 , 10 , 90 , 100))
b = np.arccosh(a)
print("Input Values:\n",a)
print("Arccosh values:\n",b)
```

**Output**

```
Input Values:
[ 2 3 10 90 100]
Arccosh values:
[1.3169579 1.76274717 2.99322285 5.19292599 5.29829237]
```

Let’s pass some pi values as an argument to the arccosh function and observe the outputs 🙂

### Using numpy.arccosh() function with NumPy array having angles in radians

```
import numpy as np
a = np.array((np.pi/2 , 3*np.pi/2 , np.pi))
b = np.arccosh(a)
print("Input Array:\n",a)
print("Arccosh Values:\n",b)
```

**Output**

```
Input Array:
[1.57079633 4.71238898 3.14159265]
Arccosh Values:
[1.02322748 2.23188925 1.81152627]
```

Here, we cannot pass a value lower than 1 as it will be out of the domain of the arccosh function which will give **nan** as an output.

**Task:** Try passing 1 as an argument to the arccosh function and observe the output.

## Working with Complex Numbers

```
import numpy as np
print("Arccosh of 2+3j is :\n",np.arccosh(2+3j))
print("Arccosh of 1+5j is :\n",np.arccosh(1+5j))
print("Arccosh of 0.5+0.5j is :\n",np.arccosh(0.5+0.5j))
print("Arccosh of -1-1j is :\n",np.arccosh(-1-1j))
```

**Output**

```
Arccosh of 2+3j is :
(1.9833870299165355+1.0001435424737972j)
Arccosh of 1+5j is :
(2.3309746530493123+1.3770031902399644j)
Arccosh of 0.5+0.5j is :
(0.5306375309525179+1.118517879643706j)
Arccosh of -1-1j is :
(1.0612750619050357-2.2370357592874117j)
```

## Working with Invalid Numbers

Here, we will pass some invalid inputs to the arccosh function and observe the outputs.

```
import numpy as np
print("The arccosh of 0 is:",np.arccosh(0))
print("The arccosh of -1 is:",np.arccosh(-1))
print("The arccosh of 0.5 is:",np.arccosh(0.5))
```

**Output**

In all the above cases, the output will be ** nan**.

That was all about passing different arguments to the arccosh function. Now, let’s plot the curve of the arccosh function using the Matplotlib Library.

## Visualizing the Arccosh function

```
import numpy as np
import matplotlib.pyplot as plt
a = np.linspace(1 , 20 , 50)
b = np.arccosh(a)
plt.plot(a , b , color = "blue" , marker = "o")
plt.title("numpy.arccosh()")
plt.xlabel("X")
plt.ylabel("Y")
plt.show()
```

**Output**

So, that was all about the arccosh function. This function is pretty simple to use. Keep exploring awesome posts on various python topics here.