Изучение взаимно влияющих друг на друга математических параметров

Изучение взаимно влияющих друг на друга математических параметров

ГОСУДАРСТВЕННАЯ АКАДЕМИЯ

СФЕРЫ БЫТА И УСЛУГ.

ИНСТИТУТ ЭКОНОМИКИ И УПРАВЛЕНИЯ.

КУРСОВАЯ РАБОТА.

Тема:”Изучение взаимно влияющих друг на

друга математических параметров”.

Выполнена студентом

Максименко Константином Викторовичем.

Группа ИД-1-1 ,

факультет ”Информационные системы

в экономике”.

Преподаватель:

Степанов Сергей Петрович.

Москва

1999

План работы:

1.Постановка задачи-стр.

2.Формализация задачи-стр.

3.Блок-схема программы-стр.

4.Листинг программы-стр.

5.Тестирование программы-стр.

1.Постановка задачи.

Очень часто при решении каких-либо задач на компьютере необ-

ходимо вычислять значения различных взаимозависимых переме-

нных. В частности , подобная задача может возникнуть при обра-

ботке экономической , производственной информации , вообще

любых данных , определяемых взаимозависимыми процессами.

Много подобных параметров в экономике.Для примера можно взять три основных

рыночных показателя- спрос , предложение и

цену.В науке также немало взаимозависимых процессов. Именно поэтому столь

большое значение будет иметь установление подоб-

ных взаимозависимостей. Поняв их , можно будет прогнозировать и будущее

состояние системы этих параметров. А для рынка , для производства , для

науки и многих других отраслей жизнедеятель-

ности человека такой прогноз развития просто необходим.

Поэтому в своей работе я решил исследовать данную область

компьютерных задач и понять механизм их решения в программ-

ном виде.

Для этого я взял небольшую задачу по прогнозу состояния

некоторой экосистемы.

Имеется зернохранилище с определённым изначальным количе-

ством зерна. Туда каждый сентябрь складывается урожай пшени-

цы и ежемесячно забирается некоторое количество зерна. Какую-

то массу зерна в конце года необходимо продать.

К сожалению , в зернохранилище водятся мыши. Если не контролировать

их количество , они съедят всю пшеницу. Поэтому

туда пускают кошек , которые и должны уничтожать мышей. Но

мыши не исчезают полностью , а между количеством мышей и ко-

шек через некоторое время устанавливается равновесие. По задаче

требуется создать компьютерную модель данного равновесия при

наименьшем количестве мышей и наименьшем количестве кошек.

2.Формализация задачи.

Прежде всего , придётся ввести ряд ограничений- ведь модель и реальность-

разные вещи. Основное ограничение- все процессы

в программе дискретны. Разумеется , в реальной жизни данные со-

бытия непрерывны , но для решения данной задачи допустима их

дискретность.

Будем также считать , что запасы пшеницы пополняются лишь раз в году , в

августе. Уменьшение идёт за счёт съеденного мышами зерна , за счёт зерна ,

ежемесячно забираемого из хранилища , а часть продаётся в декабре по

усмотрению пользователя. В случае

если пшеница в хранилище кончается , то программа останавлива-

ется.

Каждая мышь съедает в месяц 2 кг зерна. Прирост их числа зависит от

количества пшеницы в хранилище : если на мышь при-

ходится не менее двух кг зерна , то их популяция за месяц возрас-

тает в полтора раза. В противном случае прирост составит 10% в месяц.

Естественная смерность мышей составляет 1/12 общего чи-

сла мышей в месяц , т.к. мышь живёт в среднем 1 год. Количество

уничтожаемых мышей определяется размером их популяции : ког-

да на одну кошку приходится более 60 мышей , то каждая кошка за месяц ловит

в среднем по 40 мышей. При меньшем количестве

мышей один кот может поймать лишь 15 мышей в месяц. Полнос-

тью истребить мышей нельзя , т.к. при нулевом уровне мышиной

популяции с окрестных полей в хранилище за месяц приходит до 20 мышей.

Количество кошек также постоянно изменяется. При доста-

точном количестве мышей , т.е. более 60 мышей на кошку , каж-

дая кошка приносит в марте и в сентябре по 3 котёнка. Если мы-

шей меньше , чем по 20 на кошку , то прирост кошек равен нулю.

Если же значение мышиной популяции лежит между этими преде-

лами , то появляется всего 3-4 котёнка на всю кошачью популя-

цию. В случае полного отсутствия мышей в хранилище за месяц погибает 80%

кошек. Естественная смертность среди кошек равна

1/120 части от их общего числа , если их более 120 ; иначе за ме-

сяц может умереть одна из кошек , то есть средняя продолжитель-

ность жизни кошки составляет около 10 лет. В случае гибели всех

кошек хозяева хранилища пускают туда определённое количество

кошек. Особую роль в определении числа кошек в хранилище иг-

рает так называемый предельно терпимое количество мышей- тот уровень их

популяции , когда их количество начинает беспокоить хозяев зерна. В этом

случае хозяева пускают внутрь хранилища некоторое дополнительное количество

кошек и котов , в среднем по одному коту на 30 замеченных грызунов

ежемесячно. Минима-

льно допустимое количество кошек- ещё один важный параметр. Он определяет

сколько кошек нужно помещать в хранилище в случае их полного отсутствия

там. Разумеется , чем больше значе-

ние данного параметра , тем больше затраты на их приобретение.

Правда , избыток кошек можно продать по установленной изнача-

льно цене.

Собственно говоря , все вышеперечисленные действия нуж-

ны для обеспечения максимальной сохранности урожая , а , следо-

вательно и для получения максимальной прибыли от продажи зер-

на. Цена на пшеницу определяется в начале каждого года. По ней в конце года

продаётся необходимое количество зерна , определяе-

мое пользователем программы. Если иссякают общие запасы зерна или денежных

средств , выполнение программы прерывается. Программа прогнозирует

состояние данной системы , в чём-то корректирует его сама, в чём-то требует

корректировки от пользо-

вателя.

Все процессы , описанные ранее , нуждаются в математичес-

кой формализации. Для пшеницы значимы 3 параметра : общее ко-

личество пшеницы в хранилище , ежемесячное изменение массы зерна и

количество зерна , ежегодно выставляемое на продажу-

W , (W и WS соответственно. W меняется при прибавлении (W ежемесячно и при

вычитании WS ежегодно , в декабре. (W в свою очередь изменяется ежемесячно

, уменьшаясь из-за мышей , а так-

же увеличиваясь каждый год в августе , за счёт урожая. WS заново

устанавливается также ежегодно , в декабре , самим пользовате-

лем. Исключительным событием , прерывающим программу , для

W считается его неположительное значение- хозяева хранилища не проживут без

запасов зерна.

Состояние мышиной популяции определяется более сложно.

Начальное количество определяется случайным образом на интер-

вале от 1 до 20 и обозначается символом M. Ежемесячное измене-

ние количества мышей (М , от которого зависит М , в свою оче- редь

определяется естественным приростом. Он описан выше , а математически

выглядит следующим образом : если W >= 2M , то

(М за данный месяц равно 1,5М. Если же W60 (C=3C котят, при 20 < M/C < 40

(C=3 или 4 котёнка , при ещё меньшем – (С=0. Естественная смертность

определяется общим количеством кошек. При С>=120 ежемесячно умирает С/120

ко-

шек , а при меньших значениях С – одна кошка или ни одной.Рас-

считать дополнительно необходимое количество мышеловов по-

могает предельно допустимое количество мышей – MN. Если

M > MN , то (С = (С + М/30 , а (S = (S – ( М/30 ) * РС , где (S -

ежемесячное приращение годового дохода , а РС – цена одной кошки. Если же

М ECOSYSTEM

DEFDBL G-H, S

CLS

INPUT "Год начала наблюдений-"; by

INPUT "Количество лет наблюдений-"; f

INPUT "Начальная масса пшеницы в кг-"; bw

INPUT "Урожай пшеницы в кг-"; h

PRINT "Сколько кг зерна в месяц забирать?"

IF bw < h THEN j = bw / 8 ELSE j = h / 12

PRINT "(Желательно не брать больше"; INT(j); " кг)"

INPUT t

INPUT "Цена одной кошки в $-"; pc

INPUT "Минимально допустимое количество кошек"; mnc

INPUT "Предельно допустимое количество мышей-"; mn

PRINT

PRINT "(Все данные приводятся на конец текущего месяца)."

PRINT "YEAR=,MONTH=,WHEAT=,MICE=,CATS=,DWHEAT=,DMICE=,DCATS="

PRINT "********************************************************"

st = 0: w = bw: m = INT(RND(1) * 20 + 1): y = 0: mt = 0: c = mnc

50 RANDOMIZE TIMER

mt = mt + 1

IF mt > 12 THEN s = 0 AND ws = 0

ds = 0

IF mt > 12 THEN y = y + 1

IF y > f THEN END

'ПРЕРЫВАНИЕ ПРОГРАММЫ

IF mt > 12 THEN PRINT

"++++++++++++++++++++++++++++++++++++++++++++++++++++++"

IF mt > 12 THEN INPUT "Если введёте 999 то программа остановится-"; i

IF i = 999 THEN GOTO 3000

IF mt > 12 THEN mt = 1

IF mt = 1 THEN INPUT "Введите цену килограмма пшеницы в $-"; pw

'МЕСЯЦ СБОРА УРОЖАЯ ИЛИ НЕТ

dw = 0

IF mt = 8 THEN dw = dw + h ELSE dw = dw + 0

'ЕСТЕСТВЕННАЯ СМЕРТНОСТЬ МЫШЕЙ

dm = 0

dm = dm - 1 * INT(m / 12)

'ОПРЕДЕЛЕНИЕ КОЛ-ВА ПШЕНИЦЫ ЗА ВЫЧЕТОМ СЪЕД. МЫШАМИ

dw = dw - 2 * INT(m)

IF w t THEN dt = t ELSE dt = w

dw = dw - dt

'КОЛИЧЕСТВО МЫШЕЙ,СЪЕДЕННЫХ ЗА МЕСЯЦ

SELECT CASE INT(m)

CASE IS > 60 * c

dm = dm - 40 * c

CASE IS 120 THEN dc = dc - СINT(c / 120) ELSE dc = dc - CINT(RND(1))

IF c < 0 THEN c = 0

'ПРИРОСТ КОЛИЧЕСТВА КОШЕК

SELECT CASE mt

CASE 3, 9

GOSUB 1000

END SELECT

'ПРОДАЖА КОШЕК ЗА НЕНУЖНОСТЬЮ

IF m > mn THEN GOTO 80

60 dc = dc - c + mnc

70 ds = ds + pc * (c - mnc): GOTO 85

80 dc = dc + INT(m \ 30)

ds = ds - INT(m \ 30) * pc

85 s = s + ds

c = c + dc

'В СЛУЧАЕ ГИБЕЛИ ВСЕХ МЫШЕЙ ПРИХОДИТ ГРУППА МЫШЕЙ С ПОЛЯ

IF INT(m) 60 * c

dc = dc + 3 * c

CASE IS < 20

dc = dc + 0

CASE 0

dc = dc - .8 * c

CASE ELSE

dc = dc + СINT(RND(1)) + 3

END SELECT

RETURN

'СОБЫТИЯ ДЕКАБРЯ

2500 PRINT "*********************************************************"

'ОПРЕДЕЛЕНИЕ ГОДОВЫХ РАСХОДОВ НА КОШЕК

PRINT "Годовой доход от продажи кошек="; INT(s); "$ "

'РЕАЛИЗАЦИЯ ЗЕРНА С УЧЁТОМ ГОДОВЫХ РАСХОДОВ

INPUT "Сколько кг пшеницы продать"; ws

'РАСЧЁТ ПРИБЫЛИ ОТ РЕАЛИЗАЦИИ ЗЕРНА И ИЗЛИШКА КОШЕК

dw = dw - ws

w = w + dw

ds = ws * pw

s = s + ds

st = st + s

'ГОДОВОЙ БАЛАНС

PRINT "Годовой доход с продажи зерна="; pw * ws; "$ "

PRINT "Общий годовой доход="; INT(s); "$"

PRINT "Общая накопленная сумма="; INT(st); "$"

IF st < 0 THEN GOTO 3000

RETURN

3000 END

5.Тестирование программы.

В связи с тем , что программу протестировать очень сложно из – за

большого количества взаимозависмых параметров , при те-

стировании , я использую реакцию программы на исключительные

значения. За год начала прогнозирования я беру 1999 г. Длитель-

ность прогнозирования определяю как равную двум годам. Для того , чтобы

прекратить работу программы на прогнозировании второго года , необходимо

соответствующим образом задать зна-

чения переменных BW , H и T. Например , чтобы запасы зерна ис-

сякли на втором году прогноза , необходимо , чтобы W равнялось

16000 кг , H также равнялось 16 тоннам , а ежемесячно забиралось

2 тонны пшеницы ( т.е. Т = 2000 кг ).

И действительно программа нашла что , при “содействии” мышей

примерно в 250 кг съеденной за год пшеницы и при затратах на кошек ещё в 20

кг проданной , запасы зерна закончились в марте

второго года прогнозирования.Разумеется , вред , наносимый мышами не

учитывать невозможно , но и учесть трудно , т.к. при определении

изначального и переопределении нулевого уровня численности мышиной

экогруппы используется генератор псевдослучайных чисел и циклическая

инициация генератора – RND и RANDOMIZE соответственно. Но приблизительно

срок должен совпадать.Кроме того , зная данные за какой – либо ме- сяц ,

можно по формулам подсчитать значения соответствующих параметров в

следующем месяце. Допустим , что MNC=3 ,М в первом месяце прогноза = 27 , а

BW , H и T взяты из предыдущего примера. Предельно терпимое количество

мышей я взял равным 5.

За месяц меняется только DM , а М остаётся постоянным.Поэтому

в начале месяца DM = 0 , M = 27 . Далее рассчитывается естест- венная

убыль мышей DM = DM – INT ( M/12 ) , т.е. DM = = 0 – INT (

27/12 ) = 0 – 2 = -2. Потом считается естественный прирост DM = DM + INT (

1.5*M ) = -2 + INT ( 40.5 ) = -2 + 40 =

= 38. В последнюю очередь считается количество уничтоженных

за месяц мышей : DM = DM – 15*C = 38 – 45 = - 7.

Именно эти данные при тестовом запуске выдала программа.

Таким образом , программа действительно годится для прогнози-

рования и изучения состояния системы взаимовлияющих матема-

тических параметров.