Bird
Raised Fist0
NumPydata~5 mins

Trigonometric functions (sin, cos, tan) in NumPy - Time & Space Complexity

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Time Complexity: Trigonometric functions (sin, cos, tan)
O(n)
Understanding Time Complexity

We want to understand how the time needed to calculate trigonometric functions changes as we increase the amount of data.

Specifically, how does computing sin, cos, or tan for many numbers affect the time it takes?

Scenario Under Consideration

Analyze the time complexity of the following code snippet.

import numpy as np

angles = np.linspace(0, 2 * np.pi, 1000)
sin_values = np.sin(angles)
cos_values = np.cos(angles)
tan_values = np.tan(angles)

This code creates 1000 angles evenly spaced from 0 to 2π and calculates their sine, cosine, and tangent values.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: Computing sin, cos, and tan for each angle in the array.
  • How many times: Once for each of the 1000 angles, so 1000 times per function.
How Execution Grows With Input

As the number of angles increases, the total calculations increase proportionally.

Input Size (n)Approx. Operations
10About 10 sin, 10 cos, and 10 tan calculations
100About 100 sin, 100 cos, and 100 tan calculations
1000About 1000 sin, 1000 cos, and 1000 tan calculations

Pattern observation: The total work grows directly with the number of input angles.

Final Time Complexity

Time Complexity: O(n)

This means the time to compute these functions grows in a straight line as the input size grows.

Common Mistake

[X] Wrong: "Calculating sin, cos, and tan for many numbers takes the same time no matter how many numbers there are."

[OK] Correct: Each number requires its own calculation, so more numbers mean more total work and more time.

Interview Connect

Understanding how time grows with input size helps you explain the efficiency of your code clearly and confidently.

Self-Check

"What if we only calculated sin for half the angles but calculated cos and tan for all? How would the time complexity change?"

Practice

(1/5)
1. What does the numpy function np.sin() calculate when given an angle in radians?
easy
A. The angle converted from radians to degrees.
B. The cosine of the angle, which is the ratio of the adjacent side to the hypotenuse.
C. The tangent of the angle, which is the ratio of the opposite side to the adjacent side.
D. The sine of the angle, which is the ratio of the opposite side to the hypotenuse in a right triangle.

Solution

  1. Step 1: Understand the function purpose

    The function np.sin() calculates the sine value of an angle given in radians.
  2. Step 2: Recall sine definition in triangles

    Sine of an angle is the ratio of the length of the opposite side to the hypotenuse in a right triangle.
  3. Final Answer:

    The sine of the angle, which is the ratio of the opposite side to the hypotenuse in a right triangle. -> Option D
  4. Quick Check:

    np.sin() gives sine ratio [OK]
Hint: Remember sin = opposite/hypotenuse in triangles [OK]
Common Mistakes:
  • Confusing sine with cosine or tangent
  • Thinking np.sin() converts radians to degrees
  • Using degrees directly without conversion
2. Which of the following is the correct way to calculate the cosine of 60 degrees using numpy?
easy
A. np.cos(np.radians(60))
B. np.cos(np.sin(60))
C. np.cos(np.degrees(60))
D. np.cos(60)

Solution

  1. Step 1: Recognize angle units for numpy trig functions

    numpy trigonometric functions expect angles in radians, not degrees.
  2. Step 2: Convert degrees to radians before using np.cos()

    Use np.radians(60) to convert 60 degrees to radians, then apply np.cos().
  3. Final Answer:

    np.cos(np.radians(60)) -> Option A
  4. Quick Check:

    Convert degrees to radians before trig functions [OK]
Hint: Always convert degrees to radians with np.radians() [OK]
Common Mistakes:
  • Passing degrees directly to np.cos()
  • Using np.degrees() instead of np.radians()
  • Passing a trig function inside np.cos()
3. What is the output of the following code?
import numpy as np
angles = np.array([0, 90, 180])
radians = np.radians(angles)
sin_values = np.sin(radians)
print(np.round(sin_values, 2))
medium
A. [0.00 0.00 0.00]
B. [1.00 0.00 -1.00]
C. [0.00 1.00 0.00]
D. [0.00 -1.00 0.00]

Solution

  1. Step 1: Convert angles to radians

    Angles 0, 90, 180 degrees are converted to radians: 0, π/2, π.
  2. Step 2: Calculate sine values and round

    sin(0) = 0, sin(π/2) = 1, sin(π) = 0. Rounded to 2 decimals: [0.00, 1.00, 0.00].
  3. Final Answer:

    [0.00 1.00 0.00] -> Option C
  4. Quick Check:

    sin(0, 90, 180) = [0, 1, 0] [OK]
Hint: Recall sin(0)=0, sin(90°)=1, sin(180°)=0 [OK]
Common Mistakes:
  • Not converting degrees to radians
  • Confusing sine values at 90 and 180 degrees
  • Forgetting to round output
4. The following code is intended to calculate the tangent of 45 degrees but gives an incorrect result. What is the error?
import numpy as np
tan_45 = np.tan(45)
print(tan_45)
medium
A. np.tan() cannot calculate tangent for 45 degrees.
B. The angle 45 should be converted to radians before using np.tan().
C. The code should use np.tan(np.degrees(45)) instead.
D. The print statement is missing parentheses.

Solution

  1. Step 1: Identify input units for np.tan()

    numpy trigonometric functions require angles in radians, not degrees.
  2. Step 2: Correct the input by converting degrees to radians

    Use np.radians(45) to convert 45 degrees before passing to np.tan().
  3. Final Answer:

    The angle 45 should be converted to radians before using np.tan(). -> Option B
  4. Quick Check:

    Convert degrees to radians before np.tan() [OK]
Hint: Always convert degrees to radians before trig functions [OK]
Common Mistakes:
  • Passing degrees directly to np.tan()
  • Using np.degrees() instead of np.radians()
  • Assuming np.tan() works with degrees
5. You have an array of angles in degrees: angles = np.array([30, 45, 60]). You want to create a new array that contains the tangent values of these angles but only include values where the tangent is less than 2. Which code correctly does this?
hard
A. tan_vals = np.tan(np.radians(angles)); filtered = tan_vals[tan_vals < 2]
B. tan_vals = np.tan(angles); filtered = tan_vals[tan_vals < 2]
C. tan_vals = np.tan(np.degrees(angles)); filtered = tan_vals[tan_vals < 2]
D. tan_vals = np.tan(np.radians(angles)); filtered = tan_vals[tan_vals > 2]

Solution

  1. Step 1: Convert degrees to radians for tangent calculation

    Use np.radians(angles) to convert the array of degrees to radians before applying np.tan().
  2. Step 2: Filter tangent values less than 2

    Use boolean indexing tan_vals[tan_vals < 2] to select values less than 2.
  3. Final Answer:

    tan_vals = np.tan(np.radians(angles)); filtered = tan_vals[tan_vals < 2] -> Option A
  4. Quick Check:

    Convert degrees, then filter tan values less than 2 [OK]
Hint: Convert degrees first, then filter with boolean indexing [OK]
Common Mistakes:
  • Not converting degrees to radians
  • Filtering with wrong comparison operator
  • Using np.degrees() instead of np.radians()