About me
I'm at the beginning of a career change and am currently a junior frontend developer. In parallel with my studies, I work in the NAS of Belarus. Since the current job requires constant training and the use of various programs, these skills should greatly help in mastering a new profession. In the future, after mastering front-end development, I would like to move on to full-stack.
Education & English level
Bachelor's and Master's degrees in solid state and fluid dynamics at BSU, Faculty of Mechanics and Mathematics. English level - B1, a lot of practice in communication during two years of work in a foreign company.
Work experience
Engineer
A.V. Luikov Heat and Mass Transfer Institute of the NAS of Belarus
2020-2022
Junior Researcher
A.V. Luikov Heat and Mass Transfer Institute of the NAS of Belarus
2022-to date
Thermal engineer
HUAWEI (Bel Huawei Technologies LLC)
2022-2024
Skills
- Engineering simulation software (OpenFOAM, ANSYS, COMSOL Multiphysics, SolidWorks)
- System for modern technical computing (Wolfram Mathematica)
- Basic knowledge of OOP programming languages (С++, Java, Python)
- Distributed version control system (Git)
- I am actively studying HTML, CSS, JS
Contacts
- Phone number: +375 (29) 111-22-33
- Email: Ivanov@proton.me
- Tg: @Ivan_Ivanov
Code Example
#Метод Якоби
import numpy as np
import math
from timeit import default_timer as timer
def jacobi(A, b, eps):
x = [1] * len(b)
it = 0
while True:
xn = [0] * len(b)
for i in range(len(x)):
s1 = 0
s2 = 0
for j in range(i):
s1 += A[i][j] * x[j]
for j in range(i + 1, len(b)):
s2 += A[i][j] * x[j]
xn[i] = (b[i] - s1 - s2) / A[i][i]
if (math.sqrt(sum([(xn[i] - x[i]) * (xn[i] - x[i]) for i in range(len(b))])) < eps):
return xn
it += 1
if (it > 100):
return xn
x = xn
def jacobi_vec(A, b, eps):
x = np.array([1] * len(b))
U = np.triu(A, k = 1)
L = np.tril(A, k = -1)
D = np.diag(A)
D = np.array([1 / d for d in D])
D = np.diagflat(D)
it = 0
while True:
xn = np.dot(D, b - np.dot(L + U, x))
if (np.linalg.norm(xn - x) < eps):
return xn
it += 1
if (it > 100):
return xn
x = xn
A = [[1, 0.2, 0.3], [0.3, 1, 0.06], [0.07, 0.08, 1]]
b = [1, 2, 3]
sol = jacobi(A, b, 1e-6)
print("solution", sol)
print(np.linalg.norm(np.dot(np.matrix(A), np.array(sol)) - b),
("bad!", "ok!")[np.linalg.norm(np.dot(np.matrix(A), np.array(sol)) - b) < 1e-6])
sol = list(jacobi_vec(np.matrix(A), np.array(b), 1e-6))
print("solution", sol)
print(np.linalg.norm(np.dot(np.matrix(A), np.array(sol)) - b),
("bad!", "ok!")[np.linalg.norm(np.dot(np.matrix(A), np.array(sol)) - b) < 1e-6])
start = timer()
for i in range(10000):
sol = jacobi(A, b, 1e-6)
end = timer()
loops = end - start
start = timer()
AA = np.matrix(A)
bb = np.array(b)
for i in range(10000):
sol = jacobi_vec(AA, bb, 1e-6)
end = timer()
vectorization = end - start
print("time of loops", loops)
print("time of vectorization", vectorization)