Profile photo

Ivan Ivanov

Junior frontend developer

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)