
Добавил:
toykion
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:lab1 доп
.pyimport numpy as np
import math
import random as rd
from scipy.integrate import quad
import pandas as pd
def mse(actual, pred):
actual, pred = np.array(actual), np.array(pred)
return np.square(np.subtract(actual,pred)).mean()
def analitic_integral():
def integral1(t):
return 2*t
def integral2(t):
return 4-2*t
def integral3(t):
return 2*t-4
return quad(integral1, 0, 1)[0] + quad(integral2, 1, 2)[0] + quad(integral3, 2, 3)[0]
def monte_karlo():
x_min=0
x_max=3
i_max=14
f = [analitic_integral()] * 50
osh = []
for _ in range(100):
F=[]
for i in range(50):
a=0
for _ in range(i-1):
rand_x=rd.uniform(x_min,x_max)
if rand_x<1:
a+=round(2*rand_x,2)
elif rand_x>=1 and rand_x<=2:
a+=round(4-2*rand_x,2)
elif rand_x>2:
a+=round(2*rand_x-4,2)
[F.append((x_max-x_min)/i*a) if i != 0 else F.append(0)]
osh.append(mse(f, F))
print(np.array(osh).mean())
monte_karlo()