Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions bib.bib
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
@article{M87,
author = "Lu, RS., Asada, K., Krichbaum, T.P",
title = "A ring-like accretion structure in M87 connecting its black hole and jet.",
year = "2023",
journal = "Nature",
volume = "616",
number = "7958",
pages = "686–690",
note = {\url{https://doi.org/10.1038/s41586-023-05843-w}}
}

@article{goldfish,
author = "Lear Cohen,Ehud Vinepinsky,Opher Donchin,Ronen Segev",
title = "Boundary vector cells in the goldfish central telencephalon encode spatial information.",
year = "2023",
journal = "PLoS Biol",
volume = "21",
number = "4",
note ={\url{https://doi.org/10.1371/journal.pbio.3001747}}
}


@article{ancient,
author = "Lisabet Gudundsdottir",
title = "Timber imports to Norse Greenland: lifeline or luxury?",
year = "2023",
journal = "Cambridge University Press",
volume = "97",
number = "392",
pages = "454 - 471",
note = {\url{https://doi.org/10.15184/aqy.2023.13}}
}
91 changes: 91 additions & 0 deletions hw.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
\documentclass{article}
\usepackage{amsmath}
\usepackage{amssymb}
\def\stackbelow#1#2{\underset{\displaystyle\overset{\displaystyle\shortparallel}{#2}}{#1}}
\usepackage[T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\usepackage[colorlinks=true, allcolors=blue]{hyperref}
\usepackage{float}

\usepackage[english,russian]{babel}
\title{Домашнее задание по программированию}
\author{Галина Прилипко, 204 гр.}
\begin{document}
\maketitle
\begin{abstract}
Это вводный абзац в начале документа.
\end{abstract}

\section{10 формул}

Здесь может быть текст, в котором я могу цитировать других авторов. Например, я хочу упоминуть статью про черную дыру в центре М87 \cite{M87}. Или если например цитата из статьи про золотых рыбок \cite{goldfish}.
Или статья про импорт древесины в северную Ирландию \cite{ancient}.

формула 1:
$\ V_i(t+\delta t) = V_i(t)+\delta t J(t) \frac{S^i_surface}{\sum_{j=1}^{n} S^j_surface}$

формула 2:
$\frac{d V_1}{d t} = J(t) \frac{V_1^{2/3}}{\sum_{i=1}^{n} V_1^{2/3}}$

формула 3:
$\frac{dV_i}{dt}= J(t) \frac{4 \pi r_n^2}{4 \pi \sum_{j=1}^{n}{r_j^2}}$

формула 4:
$\frac{d(\frac{4\pi r_i^3}{3})}{dt}=\ J(t)\frac{r_i^2}{\sum_{j=1}^{n}r_j^2}$

формула 5:
$\frac{dr_i}{dt}=\ J(t)\frac{1}{4\pi\sum_{j=1}^{n}r_j^2}$

формула 6:
$\ V_i(t+\delta t) = V_i(t)+\delta t J(t) \frac{S^i_surface}{\sum_{j=1}^{n} S^j_surface}$

у меня закончились формулы из курсовой, поэтому далее пойдут просто какие-то формулы
формула 7:
$\ E_y = \frac{\hbar^2}{2 I} \stackbelow{J}{1} (J+1)$

формула 8:
\begin{equation*}
\begin{cases}
\frac{\partial u}{\partial t} + x^2 \frac{\partial^2 u}{\partial x^2} = a,
\\
u\Biggr|_{1} = 1 - x^2.
\end{cases}
\end{equation*}

формула 9:
$ grad(u) = \nabla u = \vec{i} \frac{\partial u}{\partial x} + \vec{j} \frac{\partial u}{\partial y}$

формула 10:
$\begin{pmatrix}
D_x\\
D_y\\
D_z
\end{pmatrix}
= \epsilon_0
\begin{pmatrix}
\ \epsilon_x & 0 & 0\\
\ 0 & \epsilon_y & 0\\
\ 0& 0 & \epsilon_z
\end{pmatrix}
\begin{pmatrix}
E_x\\
E_y\\
E_z
\end{pmatrix}$



\section{Рисунок}
Здесь показан график изменения обьемов дроплетов

\begin{figure}[H]
\centering
\includegraphics[width=0.5\textwidth]{fig1.png}
\caption{\label{fig:fig1}Это график из моей курсовой}
\end{figure}

\section{3 библиографические ссылки}
\bibliographystyle{alpha}
\bibliography{bib}
\end{document}
Binary file added hw.zip
Binary file not shown.
141 changes: 141 additions & 0 deletions prog-coarse-work.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
#!/usr/bin/env python
# coding: utf-8

# In[19]:


import random
import numpy as np
import matplotlib.pyplot as plt
import math
import itertools


class Cell:
#класс клетка, в котором хранится количество и характеристики дроплетов
bodies = []
Dt = 0.1
T=180
def J(t):
#метод, определяющий поток, который попал в клетку в момент времени t
J0=5
alpha=0.1
return J0*np.sin(t*alpha)
def formula(t):
#метод, считающий производную обьема каждого дроплета в момент времени t
dV_dt = np.zeros(len(Cell.bodies),dtype=float)
v=[]
for i in Cell.bodies:
v.append(i.volume)
v=np.array(v)
for j in range(len(Cell.bodies)):
dV_dt[j]=Cell.J(t)*np.power(Cell.bodies[j].volume,0.7)/np.sum(np.power(v,0.7))
return dV_dt
def add_body(body):
#метод добавления дроплета в клетку. он вызывается, когда мы инициализируем новый дроплет
Cell.bodies.append(body)
def merge():
#метод, определяющий слились ли какие-то два дроплета за промежуток времени dt
p=np.random.uniform(0,0.0225) #random probability
m=np.random.randint(len(Cell.bodies), size=2) #which of them merged
if(m[0]!=m[1] and len(Cell.bodies)>1):
if random.choices([True,False],weights = [p,1-p])[0]:
if Cell.bodies[m[0]].volume>Cell.bodies[m[1]].volume:
Cell.bodies[m[0]].volume=Cell.bodies[m[0]].volume+Cell.bodies[m[1]].volume
Cell.bodies.pop(m[1])
else:
Cell.bodies[m[1]].volume=Cell.bodies[m[0]].volume+Cell.bodies[m[1]].volume
Cell.bodies.pop(m[0])
def add():
#метод, определяющий появились ли новые дроплета за промежуток времени dt
p=np.random.uniform(0,0.005) #random probability
if random.choices([True,False],weights = [p,1-p])[0]:
Droplets(5)
def check():
#метод, который вызывается каждую итерацию chаnge() чтобы проверить,
#что все обьемы положительны и при необходимости удалить отрицательные
ind=[]
for i, v in enumerate(Cell.bodies):
if v.volume<=0: Cell.bodies.pop(i)

def change():
#метод, считающий, как изменились обьемы дроплетов за dt
n_steps = int(round((Cell.T)/Cell.Dt))
t_arr = np.zeros(n_steps + 1)
for i in range (1, n_steps + 1):
t = t_arr[i-1]
dVdt = Cell.formula(t)
V0=np.zeros(len(Cell.bodies)+1)
for idx,val in np.ndenumerate(Cell.bodies):
V0[idx]=val.volume
for idx,val in np.ndenumerate(Cell.bodies):
val.volume=V0[idx] +Cell.Dt*dVdt[idx]
t_arr[i] = t + Cell.Dt
Cell.check()
Cell.merge()
Cell.add()
T=np.zeros(len(Cell.bodies))+t
v=[]
col=[]
for i in Cell.bodies:
v.append(i.volume)
col.append(i.colour)
v=np.array(v)
plt.xlabel('t (in miliseconds)', fontsize = 12)
plt.ylabel('V(t)', fontsize = 12)
plt.scatter(T, v, s=5 ,c=col)


class Droplets:

colours = itertools.cycle(['#3366CC','#DD4477','#009292','#FF6DB6','#DC3912','#FF9900','#109618','#990099',
'#0099C6','#004949','#7E0021','#314004','#7375B5','#4B1F6F','#6B452B','#A89985','#370335',
'#A50E82'])
def __init__(
self,
volume
):
self.volume = volume
self.colour = next(Droplets.colours)
Cell.add_body(self)

#инициализируем 7 дроплетов. их число ограниченно размерами клетки
#(то есть суммарный обьем не должен быть больше клетки, подробнее - в тз)
Droplets(20)
Droplets(20)
Droplets(20)
Droplets(20)
Droplets(20)
Droplets(20)
Droplets(20)
Droplets(20)
Droplets(20)
Cell.change()


# In[20]:


import unittest

class TestCell(unittest.TestCase):
def setUp(self):
self.cell = Cell()

def test_J(self): #тестируем метод, выдающий обьем
self.assertEqual(Cell.J(7), 3.2210884361884555)

unittest.main(argv=[''], verbosity=2, exit=False)


# In[ ]:





# In[ ]: