Exponentials, Trigonometric Functions, and Prime Numbers Using Loops
We can approximate mathematical functions using summations and loops. These series expansions stop when the added term is smaller than a chosen error limit (e.g. 0.0001).
1) Exponential Function e^x
Expansion: e^x = 1 + x + x²/2! + x³/3! + ...
x = 2
term = 1.0
sum_val = 1.0
n = 1
while term > 0.0001:
term = term * x / n
sum_val += term
n += 1
print(sum_val) # ≈ e^2
2) Sine Function sin(x)
Expansion: sin(x) = x - x³/3! + x⁵/5! - x⁷/7! + ...
import math
x = math.radians(30) # convert degrees to radians
term = x
sum_val = x
n = 1
while abs(term) > 0.0001:
term *= -x*x / ((2*n)*(2*n+1))
sum_val += term
n += 1
print(sum_val) # ≈ sin(30°) = 0.5
3) Cosine Function cos(x)
Expansion: cos(x) = 1 - x²/2! + x⁴/4! - x⁶/6! + ...
x = math.radians(60)
term = 1.0
sum_val = 1.0
n = 1
while abs(term) > 0.0001:
term *= -x*x / ((2*n-1)*(2*n))
sum_val += term
n += 1
print(sum_val) # ≈ cos(60°) = 0.5
4) Inverse Sine arcsin(x)
Expansion: arcsin(x) = x + (x³)/6 + (3x⁵)/40 + (5x⁷)/112 + ...
x = 0.5
term = x
sum_val = x
n = 1
while abs(term) > 0.0001:
term *= ( (2*n-1)**2 * x*x ) / ( (2*n)*(2*n+1) )
sum_val += term
n += 1
print(sum_val) # ≈ arcsin(0.5) = 0.523...
5) Inverse Cosine arccos(x)
Since arccos(x) = π/2 - arcsin(x)
, we reuse arcsin:
y = 0.5
arcsin_val = math.asin(y) # from expansion or math library
arccos_val = math.pi/2 - arcsin_val
print(arccos_val) # ≈ arccos(0.5) = 1.047...
6) Prime Numbers with Loops
Checking prime numbers using trial division:
n = 29
is_prime = True
if n < 2:
is_prime = False
else:
for i in range(2, int(n**0.5)+1):
if n % i == 0:
is_prime = False
break
print(is_prime) # True for 29
Generating primes up to 50:
for num in range(2, 51):
for i in range(2, int(num**0.5)+1):
if num % i == 0:
break
else:
print(num, end=" ")
# 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47
7) Assignments
Q1: Approximate e^3
using summation until error < 0.0001.
x = 3
term = 1.0
sum_val = 1.0
n = 1
while term > 0.0001:
term = term * x / n
sum_val += term
n += 1
print(sum_val)
Q2: Write a loop to approximate cos(90°)
.
x = math.radians(90)
term = 1.0
sum_val = 1.0
n = 1
while abs(term) > 0.0001:
term *= -x*x / ((2*n-1)*(2*n))
sum_val += term
n += 1
print(sum_val) # ~0
0 Comments