Загрузить файлы в «2_hw»
First version. Results of other part will be added later
This commit is contained in:
parent
356d8285e5
commit
80b3280a83
BIN
2_hw/results.xlsx
Normal file
BIN
2_hw/results.xlsx
Normal file
Binary file not shown.
24
2_hw/with_numpy.py
Normal file
24
2_hw/with_numpy.py
Normal file
@ -0,0 +1,24 @@
|
||||
import time
|
||||
import numpy as np
|
||||
|
||||
def mandelbrot(pmin = -2.5, pmax = 1.5, qmin = -2, qmax = 2,
|
||||
ppoints = 200, qpoints = 200, max_iterations = 300, infinity_border= 100):
|
||||
|
||||
image = np.zeros((ppoints, qpoints))
|
||||
|
||||
for ip, p in enumerate(np.linspace(pmin, pmax, ppoints)):
|
||||
for iq, q in enumerate(np.linspace(qmin, qmax, qpoints)):
|
||||
c = p + 1j * q
|
||||
z = 0
|
||||
for k in range(max_iterations):
|
||||
z = z ** 2 + c
|
||||
if abs(z) > infinity_border:
|
||||
|
||||
image[ip, iq] = 1
|
||||
break
|
||||
return image
|
||||
|
||||
tic = time.perf_counter_ns()
|
||||
image = mandelbrot()
|
||||
toc = time.perf_counter_ns()
|
||||
print((toc - tic)/1_000_000_000, "s")
|
30
2_hw/with_typing_hints.py
Normal file
30
2_hw/with_typing_hints.py
Normal file
@ -0,0 +1,30 @@
|
||||
from __future__ import annotations
|
||||
import time
|
||||
|
||||
def linspace(start, stop, n):
|
||||
if n == 1:
|
||||
yield stop
|
||||
return
|
||||
h = (stop - start) / (n - 1)
|
||||
for i in range(n):
|
||||
yield start + h * i
|
||||
|
||||
def mandelbrot(pmin: float = -2.5, pmax: float = 1.5, qmin: float = -2, qmax: float = 2,
|
||||
ppoints: int = 200, qpoints: int = 200, max_iterations: int = 300, infinity_border: float = 100) -> list[list[int]]:
|
||||
|
||||
image: list[list[int]] = [[0 for i in range(qpoints)] for j in range(ppoints)]
|
||||
for ip, p in enumerate(linspace(pmin, pmax, ppoints)):
|
||||
for iq, q in enumerate(linspace(qmin, qmax, qpoints)):
|
||||
c: complex = p + 1j * q
|
||||
z: complex = 0
|
||||
for k in range(max_iterations):
|
||||
z = z ** 2 + c
|
||||
if abs(z) > infinity_border:
|
||||
image[ip][iq] = 1
|
||||
break
|
||||
return image
|
||||
|
||||
tic = time.perf_counter_ns()
|
||||
image = mandelbrot()
|
||||
toc = time.perf_counter_ns()
|
||||
print((toc - tic)/1_000_000_000, "s")
|
28
2_hw/without_typing_hints.py
Normal file
28
2_hw/without_typing_hints.py
Normal file
@ -0,0 +1,28 @@
|
||||
import time
|
||||
|
||||
def linspace(start, stop, n):
|
||||
if n == 1:
|
||||
yield stop
|
||||
return
|
||||
h = (stop - start) / (n - 1)
|
||||
for i in range(n):
|
||||
yield start + h * i
|
||||
|
||||
def mandelbrot(pmin = -2.5, pmax= 1.5, qmin = -2, qmax= 2,
|
||||
ppoints = 200, qpoints = 200, max_iterations = 300, infinity_border = 100):
|
||||
image = [[0 for i in range(qpoints)] for j in range(ppoints)]
|
||||
for ip, p in enumerate(linspace(pmin, pmax, ppoints)):
|
||||
for iq, q in enumerate(linspace(qmin, qmax, qpoints)):
|
||||
c = p + 1j * q
|
||||
z = 0
|
||||
for k in range(max_iterations):
|
||||
z = z ** 2 + c
|
||||
if abs(z) > infinity_border:
|
||||
image[ip][iq] = 1
|
||||
break
|
||||
return image
|
||||
|
||||
tic = time.perf_counter_ns()
|
||||
image = mandelbrot()
|
||||
toc = time.perf_counter_ns()
|
||||
print((toc - tic)/1_000_000_000, "s")
|
Loading…
Reference in New Issue
Block a user