Редактирование: Вынужденные колебания цепочки в вязкой среде

Перейти к: навигация, поиск

Внимание! Вы не авторизовались на сайте. Ваш IP-адрес будет публично видимым, если вы будете вносить любые правки. Если вы войдёте или создадите учётную запись, правки вместо этого будут связаны с вашим именем пользователя, а также у вас появятся другие преимущества.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия Ваш текст
Строка 17: Строка 17:
 
Парное взаимодействие определяется формулой:
 
Парное взаимодействие определяется формулой:
  
:<math>F = c(x_{k+1}-x_{k})</math>
+
:<math>F = c(x_{k+1}-x_{k}-1)</math>
  
 
где <math>F</math> — сила взаимодействия, <math>c</math> — жесткость связи, <math>x_k</math> — перемещение частицы, <math>k</math> — номер частицы.
 
где <math>F</math> — сила взаимодействия, <math>c</math> — жесткость связи, <math>x_k</math> — перемещение частицы, <math>k</math> — номер частицы.
Строка 39: Строка 39:
  
 
[[File:vksvt.gif]]
 
[[File:vksvt.gif]]
<div class="mw-collapsible mw-collapsed" style="width:100%" >
 
'''Текст программы на языке Python (среда разработки PyCharm):''' <div class="mw-collapsible-content">
 
<syntaxhighlight lang="python" line start="1" enclose="div">
 
import numpy as np
 
import math
 
import matplotlib.pyplot as plt
 
from matplotlib.patches import Circle
 
from matplotlib.collections import PatchCollection
 
from celluloid import Camera
 
  
 
def Plotting(X, rad, u):
 
    n = np.shape(X)[1]
 
    patches = []
 
    for it in range(n):
 
        circle = Circle((X[0, it], 0), rad)
 
        patches.append(circle)
 
    p = PatchCollection(patches)
 
    ax_1 = plt.subplot(2, 1, 1)
 
    plt.plot()
 
    ax_1.add_collection(p)
 
 
    plt.xlim([-1, N])
 
    plt.ylim([-4, 4])
 
    plt.grid(True)
 
 
 
    ax_2 = plt.subplot(2, 1, 2)
 
    plt.plot(np.arange(0, N), u.T, '*-k')
 
    plt.xlim([-3, (n + 2) * a])
 
    plt.ylim([-1, 1])
 
    plt.grid(True)
 
    plt.xlabel("x_i")
 
    plt.ylabel("Amplitude")
 
 
    plt.pause(0.01)
 
    plt.delaxes(ax_1)
 
    plt.delaxes(ax_2)
 
 
 
 
#Constants
 
N = 20
 
mu = 0.05
 
c = 1
 
a = 1
 
dt = 0.2
 
m = 1
 
rad = 0.4
 
q = -0.1
 
ST = 1000
 
 
 
#Creating arrays
 
X = np.zeros((1, N))
 
U = np.zeros((N, ST))
 
X0 = np.arange(N)
 
X[0, :] = [it*a for it in range(N)]
 
 
V = np.zeros((1, N))
 
 
#fig = plt.figure()
 
#fig, axes = plt.subplots(2)
 
#camera = Camera(fig)
 
 
for st in range(ST):
 
    #print(st)
 
    for sp in range(0, N-1): #loop for springs
 
 
        F = c*(X[0, sp+1] - X[0, sp] - 1)
 
        V[0, sp] += F / m * dt - 2*mu*V[0, sp]
 
        V[0, sp+1] += -F / m * dt - 2*mu*V[0, sp+1]
 
 
#Periodical Boundary cond
 
    V[0, N-1] += c * (X[0, 0] + a * N - X[0, N-1] - 1) * dt / m - 2*mu*V[0, N-1] + q*math.cos((st)*2*math.pi/100)
 
    V[0, 0] += -c * (X[0, 0] + a * N - X[0, N-1] - 1) * dt / m - 2*mu*V[0, 0]
 
#Positions
 
    X[0, :] += V[0, :]*dt
 
 
    Plotting(X, rad, X-X0)
 
    #camera.snap()
 
    #anim = camera.animate(blit=True)
 
    #anim.save('MDS.gif')
 
</syntaxhighlight>
 
</div>
 
</div>
 
 
=== См. также ===
 
=== См. также ===
  
Вам запрещено изменять защиту статьи. Edit Создать редактором

Обратите внимание, что все добавления и изменения текста статьи рассматриваются как выпущенные на условиях лицензии Public Domain (см. Department of Theoretical and Applied Mechanics:Авторские права). Если вы не хотите, чтобы ваши тексты свободно распространялись и редактировались любым желающим, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого.
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ МАТЕРИАЛЫ, ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ!

To protect the wiki against automated edit spam, we kindly ask you to solve the following CAPTCHA:

Отменить | Справка по редактированию  (в новом окне)