Skip to content

Commit

Permalink
Add files via upload
Browse files Browse the repository at this point in the history
  • Loading branch information
dimilka authored Jan 27, 2025
1 parent 6d92c09 commit d82bf3c
Showing 1 changed file with 91 additions and 39 deletions.
130 changes: 91 additions & 39 deletions lab0/basic_math.py
Original file line number Diff line number Diff line change
@@ -1,39 +1,91 @@
import numpy as np
import scipy as sc


def matrix_multiplication(matrix_a, matrix_b):
"""
Задание 1. Функция для перемножения матриц с помощью списков и циклов.
Вернуть нужно матрицу в формате списка.
"""
# put your code here
pass


def functions(a_1, a_2):
"""
Задание 2. На вход поступает две строки, содержащие коэффициенты двух функций.
Необходимо найти точки экстремума функции и определить, есть ли у функций общие решения.
Вернуть нужно координаты найденных решения списком, если они есть. None, если их бесконечно много.
"""
# put your code here
pass


def skew(x):
"""
Задание 3. Функция для расчета коэффициента асимметрии.
Необходимо вернуть значение коэффициента асимметрии, округленное до 2 знаков после запятой.
"""
# put your code here
pass


def kurtosis(x):
"""
Задание 3. Функция для расчета коэффициента эксцесса.
Необходимо вернуть значение коэффициента эксцесса, округленное до 2 знаков после запятой.
"""
# put your code here
pass
import numpy as np
import scipy as sc
from scipy.optimize import minimize_scalar


def matrix_multiplication(matrix_a, matrix_b):
"""
Задание 1. Функция для перемножения матриц с помощью списков и циклов.
Вернуть нужно матрицу в формате списка.
"""
if len(matrix_a[0]) != len(matrix_b):
raise ValueError("Матрицы нельзя перемножить: количество столбцов первой матрицы не равно количеству строк второй.")

m, n, p = len(matrix_a), len(matrix_b), len(matrix_b[0])
result = [[0 for _ in range(p)] for _ in range(m)]

for i in range(m):
for j in range(p):
for k in range(n):
result[i][j] += matrix_a[i][k] * matrix_b[k][j]

return result


def functions(a_1, a_2):
"""
Задание 2. На вход поступает две строки, содержащие коэффициенты двух функций.
Необходимо найти точки экстремума функции и определить, есть ли у функций общие решения.
Вернуть нужно координаты найденных решения списком, если они есть. None, если их бесконечно много.
"""
a_1 = list(map(float, a_1.split()))
a_2 = list(map(float, a_2.split()))

def f(x):
return a_1[0] * x ** 2 + a_1[1] * x + a_1[2]

def p(x):
return a_2[0] * x ** 2 + a_2[1] * x + a_2[2]

res_f = minimize_scalar(f)
res_p = minimize_scalar(p)

solutions = []
to_inf = 0
for x in range(-100, 101):
if abs(f(x) - p(x)) < 1e-5:
solutions.append((x, f(x)))
to_inf += 1

if not solutions:
return []
if len(solutions) == to_inf:
return None
return solutions




def skew(x):
"""
Задание 3. Функция для расчета коэффициента асимметрии.
Необходимо вернуть значение коэффициента асимметрии, округленное до 2 знаков после запятой.
"""
n = len(x)
mean_x = np.mean(x)
m2 = np.mean((x - mean_x) ** 2)
m3 = np.mean((x - mean_x) ** 3)

if m2 == 0:
return 0.0

skewness = m3 / (m2 ** 1.5)
return round(skewness, 2)


def kurtosis(x):
"""
Задание 3. Функция для расчета коэффициента эксцесса.
Необходимо вернуть значение коэффициента эксцесса, округленное до 2 знаков после запятой.
"""
# put your code here
n = len(x)
mean_x = np.mean(x)
m2 = np.mean((x - mean_x) ** 2)
m4 = np.mean((x - mean_x) ** 4)

if m2 == 0:
return 0.0

kurt = m4 / (m2 ** 2) - 3
return round(kurt, 2)

0 comments on commit d82bf3c

Please sign in to comment.