Главная Абитуриентам Студентам Математика Программирование Книги
Материалы
Технические
C python + matplotlib python + opencv jupyter LaTeX git
Учебные
ММ (1 курс) ВМК (2 курс) ВМК (введение в численные методы) ВМК (магистранты)
Практикум по специализации 1 семестр

Нулевая семестровая (1 семестр)


Нулевая семестрова работа призвана помочь с быстрым стартом магистрантам не знакомым с языком python.

Пример явной разностной схемы для уравнения теплопроводности (1 семестр)
💾 sem_1_0.ipynb 💾 sem_1_0.py
# coding: utf-8
# Начальные условия u0(x)
def u0(x):
    return 1.0 - (x - 0.5)**2
# Граничные условия phi1(x), phi2(x)
def phi1(t):
    return 0.0
def phi2(t):
    return 0.0
# mu - коэффициент теплопроводности
# T - время искомого распределения температуры
mu = 0.1
T = 1.0
# Сетка по пространству
n = 10
h = 1.0 / n
x = [i * h for i in range(0, n + 1)]
# Сетка по времени
m = 50
tau = T / m
t = [k * tau for k in range(0, m + 1)]
# Условие устойчивости
r = 2 * mu * tau / h / h
print(tau, h, r)
# Инициализация начального слоя
for i in range(0, n + 1):
    y[i] = u0(x[i])
# Счет
ynew = [0] * (n + 1)
for k in range(0, m):
    y[0] = phi1(t[k])
    y[n] = phi2(t[k])
    for i in range(1, n):
        ynew[i] = y[i] + tau * mu / h / h * (y[i+1] - 2 * y[i] + y[i-1])
    y = list(ynew)
# Вывод
print(x)
print(y)
# График
import matplotlib.pyplot as plt
lines = plt.plot(x, y)
plt.show()
Практикум по специализации 3 семестр

Нулевая семестровая (3 семестр)


Нулевая семестрова работа призвана помочь с быстрым стартом магистрантам не знакомым с языком python.

Пример явной разностной схемы для стохастического уравнения Ланжевена (3 семестр)
💾 sem_3_0.ipynb 💾 sem_3_0.py
# coding: utf-8
# Коэффициент диффузии
C = 0.1
# Время счета
T = 1.0
# Число траекторий
n = 50
# Число шагов по времени
m = 10
tau = T / m
# Счет траекторий
import numpy
t = [k * tau for k in range(m)]
x = [None] * n
for i in range(n):
    x[i] = [0.5] * m
for k in range(m - 1):
    for i in range(n):
        x[i][k + 1] = x[i][k] + C * tau**0.5 * numpy.random.normal()
# Вывод траекторий
from matplotlib import pylab as plt
plt.figure(0)
for i in range(n):
    lines = plt.plot(t, x[i])
plt.show()
# Функция плотности
def make_hist(x_list):
    H = 8
    hist = [0] * H
    for x in x_list:
        if (x >= 0) and (x <= 1):
            index = int(x * H)
            hist[index] += 1
    return hist
x_last = [x[i][m - 1] for i in range(n)]
hist = make_hist(x_last)
# Вывод функции плотности
plt.figure(1)
lines = plt.plot(hist)
plt.show()