Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

lab1 доп

.py
Скачиваний:
0
Добавлен:
27.08.2024
Размер:
1.16 Кб
Скачать
import 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()
Соседние файлы в предмете Имитационное моделирование