Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК по моделированию_Сумина_ОК.doc
Скачиваний:
34
Добавлен:
15.04.2019
Размер:
2 Mб
Скачать

Тема 10, Тема 11. Модели биологических систем. Динамики развития популяций Моделирование колебаний связанных осцилляторов

1. Задача: Имеется система из N осцилляторов с массами mi и жесткостью пружин ki , связанные между собой упругими связями с жесткостью qi . На каждый осциллятор действует сила вязкого трения - r ηi . Заданы начальные смещения ξi (0) и скорости ηi (0) всех осцилляторов. На отдельные осцилляторы действует вынуждающая сила F = F (t) некоторые осцилляторы колеблются по закону ξi = ξi (t). Известно, что крайние осцилляторы закреплены (свободны). Необходимо построить компьютерную модель колебаний связанных осцилляторов.

2. Теория. Рассмотрим цепочку осцилляторов с массами mi и коэффициентом жесткости ki , связанных между собой пружинами жесткостью qi . На каждый i - ый осциллятор со стороны соседних (i - 1) - ого и (i + 1) - ого осцилляторов действует сила:

F = - qii - ξi - 1 ) - qi + 1i - ξi + 1 ),

Кроме нее на осциллятор действует сила упругости - kξi и сила вязкого трения - r ηi , где ηi -- скорость i - ого осциллятора. По второму закону Ньютона, ускорение i - ого осциллятора равно:

θi = (F - r ηi - kξi )/m.

Определив ускорение θi , можно найти скорость и смещение i - ой массы в следующий момент времени t + Δt:

ηi = ηi + θi Δ t,

ξi = ξi + ηi Δ t.

3. Алгоритм. Эта задача является частным случаем задачи о моделировании движения системы взаимодействующих между собой частиц.

1. Задают параметры системы и начальные условия: число осцилляторов N, их массы mi , жесткость упругих связей ki , жесткость пружины внутри осциллятора qi , шаг по времени Δt, начальные смещение ξi и скорости ηi , вынуждающие силы, действующие на различные материальные точки.

2. Дают приращение по времени: переменной t присваивают значение t + Δt.

3. В цикле перебирают все N осцилляторов и для каждого из них опеределяют равнодействующую силу, ускорение, скорость и смещение в следующий момент t + Δ t:

Fiξ (t + Δt) = - q(ξi (t) - ξi - 1 (t)) - q(ξi (t) - ξi + 1 (t)),

θi (t + Δt) = (Fi (t + Δ t) - r ηi (t) - kξi (t))/m,

ηi (t + Δt) = ηi (t) + θi (t + Δt)Δt,

ξi (t + Δt) = ξi (t) + ηi (t + Δt)Δt.

4. В цикле стирают предыдущее изображение каждого осциллятора и рисуют новое.

5. Возвращение к операции 2. Если цикл по t закончился, - выход из цикла.

4. Компьютерная реализация. Программа, представленная ниже, моделирует распространение импульса в случае, когда левый элемент среды совершает полколебания.

program PROGRAMMA5;

uses dos, crt, graph;

Const m=0.5; r=0.1; k=0.01;

dt=0.001; q=100; N=50;

Var teta, F, t, y : Real;

i,xx,vv,aa,FF,tt,Gd,Gm : Integer;

eta, ksi : array [0..N] of real;

Procedure GraphInit;

begin

Gd:= Detect;

InitGraph(Gd, Gm, 'c:\bp\bgi');

if GraphResult <> grOk then Halt(1);

end;

Procedure Oscillator;

begin

F:=q*(ksi[i-1]-ksi[i])+q*(ksi[i+1]-ksi[i]);

teta:=(F-r*eta[i]-k*ksi[i])/m;

eta[i]:=eta[i]+teta*dt; ksi[i]:=ksi[i]+eta[i]*dt;

end;

BEGIN

GraphInit;

Repeat begin t:=t+dt;

For i:=1 to N do begin

y:=ksi[i]; Oscillator;

if 5*t<3.142 then ksi[1]:=20*sin(5*t) else ksi[1]:=0;

ksi[N]:=0; {закреплен}

{ksi[N]:=ksi[N-1]; незакреплен}

setcolor(8); circle(10*i,240-round(y*10),2);

setcolor(15); circle(10*i,240-round(ksi[i]*10),2);

end; end;

until KeyPressed;

CloseGraph;

END.