Помощь в учёбе, очень быстро...
Работаем вместе до победы

Практическая часть. 
Решение задач

РефератПомощь в написанииУзнать стоимостьмоей работы

T р = В состоянии ли вы объяснить почему динамика поведения решений уравнений (1) и (2) обладает цикличностью? В приведенной модели хищник-жертва предполагалось, что число хищников меняется непрерывным образом. Теперь рассмотрим другую модель хищник-жертва, которую проще сформулировать с помощью следующего вычислительного алгоритма. Данная модель является двумерным клеточным автоматом, называемым… Читать ещё >

Практическая часть. Решение задач (реферат, курсовая, диплом, контрольная)

Задача 1. Модели хищник-жертва. Рассмотрим простую модель хищник-жертва, представляющую акул и рыб. Обозначим F (t) численность рыб в момент времени t, а S (t) — численность акул в этот же момент времени. Пусть рост популяции рыб ничто не ограничивает. Тогда скорость увеличения численности рыб пропорциональна общей численности рыб — b1F (t), где b1 — коэффициент рождаемости рыб. Скорость вымирания акул в отсутствие рыб пропорциональна количеству акул — d2S (t), где d2 — коэффициент смертности акул. Предположим, что количество уничтожаемой каждой акулой рыбы пропорционально полному числу рыб d1S (t), где d1 — коэффициент смертности рыб. Последнее допущение было бы верным, если бы район охоты каждой акулы был неизменным, районы охоты разных акул не пересекались и каждая акула находила бы в своем районе постоянную часть рыбного косяка. Тогда количество рыб, съеденных каждой акулой равно d1S (t)F (t). Прирост численности акул также пропорционален этой величине, но с меньшим коэффициентом — b1F (t)S (t). Если предположить, что функции F (t) и S (t) непрерывны, то можно записать.

Практическая часть. Решение задач.

Уравнения (1) и (2) известны как уравнения ЛоткиВольтерра. Эта система уравнений имеет устойчивое решение F=b1/d1; S=b2/d2, т. е. численность хищников и жертв должна в конце концов становится постоянной. Однако это равновесие является нейтральным, т. е. если вывести систему из равновесия, в ней возникнут колебания, незатухающие во времени. При малом возмущении решение уравнения будет описывать эллипс (рис. 9) с периодом колебания.

Практическая часть. Решение задач.

T р = В состоянии ли вы объяснить почему динамика поведения решений уравнений (1) и (2) обладает цикличностью? В приведенной модели хищник-жертва предполагалось, что число хищников меняется непрерывным образом. Теперь рассмотрим другую модель хищник-жертва, которую проще сформулировать с помощью следующего вычислительного алгоритма. Данная модель является двумерным клеточным автоматом, называемым Ва-Тор.

  • 1.1 Исходя из требуемой концентрации рыб и акул они помещаются случайным образом в узлы прямоугольной сетки. Всем рыбам и акулам присваивается случайный возраст.
  • 2.2 На временном шаге tn рассматривается по очереди каждая рыба. Определяется число ближайших соседних узлов, которые не заняты в момент времени tn-1, и рыба передвигается в один из свободных узлов случайным образом. Если все четыре соседних узла заняты, рыба не перемещается.
  • 3.3 Если рыба выживает за время, кратное числу шагов fbreed, у рыбы появляется один потомок. Новая рыба помещается в старую позицию рыбыродителя.
  • 4.4 На временном шаге tn рассматривается по очереди каждая акула. Если все ближайшие к акуле соседние узлы в момент времени tn-1 не заняты, акула перемещается в один из свободных узлов случайным образом. Если хоть в одном соседнем узле находится рыба, то акула перемещается случайным образом в один из этих занятых узлов и поедает рыбу.
  • 5.5 Если за nstarve шагов акула ничего не съедает, она погибает. Если акула выживает в течение времени, кратного sbreed шагов, то она обзаводится одним детенышем. Новая акула помещается в предыдущую позицию своего родителя.

Для описания каждой рыбы при компьютерном моделировании используется три переменных: координаты x, y и возраст sday. Логично и очень удобно было бы каким-то образом сгруппировать эти три переменные. Для этого в языке С есть специальное средство — структуры.

struct fishtype {.

int x, y;

int fday;

};

Этим определением мы ввели новый тип переменных, теперь можно описать переменные этого типа:

fishtype fish;

Группировка данных в структуры полезна тем, что когда нам нужно думать о рыбе как о целом, мы оперируем всей структурой. В то же время есть возможность работать и с полями структуры по отдельности, обращаясь к ним следующим образом: fish. x, fish. y, fish.fday.

Аналогичные определения можно сделать и для моделирования акулы, сгруппировав в структуру координаты акулы x и y, возраст акулы sday, и количество дней, прошедших после последней съеденной рыбы eat.

struct sharktype {.

int x, y;

int fday;

int eat;

};

В данной ситуации, когда количество рыб и акул заранее неизвестно и может изменяться в очень широких пределах, удобнее распределять память компьютера динамически (по мере надобности в процессе выполнения программы). Поэтому вместо переменной типа sharktype удобнее описать переменную-указатель на этот тип:

sharktype *shark;

В этом случае обращение к полям структуры уже будет не через точку, а через стрелку: shark-> sday, shark->eat и т. д. Указатель занимает гораздо меньше памяти, чем сама структура, поэтому можно объявить большие массивы указателей с запасом. Необходимо только написать процедуры создания и удаления акул и рыб, не забывая аккуратно выделять и освобождать память для структур.

Листинг 5. Фрагмент программы моделирования клеточного автомата Ва-Тор fishtype *fish[32 000]; // объявляем большой массив указателей на рыб. sharkty*shark pe [32 000]; // и большой массив указателей на акул.

void MakeFish (int i, int x, int y) // процедура «рождения» новой рыбы.

{.

fish[i]=(FISH *)malloc (sizeof (FISH)); // выделяем память для размещения структуры.

fish[i]->x=x; // помещаем рыбу в точку с заданными координатами.

fish[i]->y=y;

fish[i]->fday=0; // ее возраст равен нулю.

}.

void MakeShark (int i, int x, int y) // процедура «рождения» акулы.

{.

shark[i]=(SHARK *)malloc (sizeof (SHARK)); // выделяем память для размещения структуры.

shark[i]->x=x; // помещаем акулу в точку с заданными координатами.

shark[i]->y=y;

shark[i]->sday=0; // возраст равен нулю.

shark[i]->eat=0; // акула не ела 0 дней.

}.

void KillFish (int i) // «смерть» рыбы.

{.

free (fish[i]); // освобождаем память.

fish[i]=NULL; // обнуляем значение указателя.

}.

void KillShark (int i) // «смерть» акулы.

{.

free (shark[i]); // освобождаем память.

shark[i]=NULL; // обнуляем значение указателя Задача 2. Составление рациона питания Необходимо составить самый дешевый рацион питания цыплят, содержащий необходимое количество определенных питательных веществ тиамина Т и ниацина Н. Пищевая ценность рациона (в калориях) должна быть не менее заданной. Смесь для цыплят изготавливается из двух продуктов — К и С. Известно содержание тиамина и ниацина в этих продуктах, а также питательная ценность К и С (в калориях). Сколько К и С надо взять для одной порции куриного корма, чтобы цыплята получили необходимую им дозу веществ Н и Т и калорий (или больше), а стоимость порции была минимальна? Исходные данные для расчетов приведены в рисунке 1.

Исходные данные к задаче.

Рис. 1. Исходные данные к задаче

Решение.

Решим задачу средствами программы MS Excel. Внесем данные в исходный рисунок 2.

Решение задачи средствами программы MS Excel.

Рис. 2. Решение задачи средствами программы MS Excel

Формулы.

Таблица формул.

Рис. 3. Таблица формул

Вызываем надстройку «Поиск решения» и заполняем параметры. Вносим целевую функцию и ограничения. (Рисунок 4).

Таблица целевых функций и ограничений.

Рис. 4. Таблица целевых функций и ограничений

Указываем линейность задачи и неотрицательность переменных (рисунок 5).

Таблица линейности задачи и неотрицательности переменных.

Рис. 5. Таблица линейности задачи и неотрицательности переменных.

Запускаем решение (рисунок 6).

результатов поиска решения.

Рис. 6.Таблица результатов поиска решения

Получаем решение (рисунок 7).

Таблица нахождения самого дешевого рациона.

Рис. 7. Таблица нахождения самого дешевого рациона.

То есть при данных ограничениях самый дешевый рацион стоит 26,22 цента и содержит 4,44 унции продукта К и 2,22 унции продукта С. Если предположить, что вес продуктов должен быть целым (целочисленные переменные) (рисунок 8).

Таблица целочисленных переменных.

Рис 8. Таблица целочисленных переменных

То получим другое решение (рисунок 9).

Таблица нахождения решения.

Рис. 9. Таблица нахождения решения

Следует взять 5 унций продукта К, 2 унции продукта С, рацион выйдет немного дороже, стоимость составит 27,4 цента.

Показать весь текст
Заполнить форму текущей работой