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

1

.py
Скачиваний:
11
Добавлен:
16.04.2021
Размер:
1.43 Кб
Скачать
from matplotlib import pyplot as plt
from scipy import integrate
import numpy as np

f1 = lambda x: 9*(4*x*x-1)
f2 = lambda x: -27*(2*(x-1)-1)
f3 = lambda x: -27*(np.sin(2*np.pi*(x-2))+1)
#Теоретическое значение интеграла:
true_val = integrate.quad(f1, 0, 1)[0] + integrate.quad(f2, 1, 2)[0] + integrate.quad(f3, 2, 3)[0]
print('True value:', true_val)

x1 = np.arange(0,1,0.001)
x2 = np.arange(1,2,0.001)
x3 = np.arange(2,3,0.001)

plt.plot(x1,f1(x1), label = '9*(4*x*x-1)')
plt.plot(x2,f2(x2), label = '-27*(2*(x-1)-1)')
plt.plot(x3,f3(x3), label = '-27*(sin(2*pi*(x-2))+1)')
plt.legend()
plt.show()

all_sc = [] # общее количество успешных событий для всех выборок
for i in range(0,15):
    f_rez = []
    for j in range (2**i):
        x = np.random.uniform(0, 3)
        if x<1:
            f_rez.append(f1(x))
        elif 1<=x<2:
             f_rez.append(f2(x))
        else:
            f_rez.append(f3(x))
    all_sc.append(3*sum(f_rez)/2**i)

[print('2^', i, ' tests - %.4f' % all_sc[i], sep='') for i in range(len(all_sc))]

plt.plot(range(len(all_sc)), all_sc, label='experiment values')
plt.plot(range(len(all_sc)), [true_val]*len(all_sc), color='red', label='true values')
plt.xticks(range(len(all_sc)) ,[r'$2^{'+str(i)+'}$' for i in range(len(all_sc))])
plt.legend()
plt.title("F'(N)")
plt.show()
Соседние файлы в предмете Имитационное моделирование