Изучение взаимно влияющих друг на друга математических параметров 
	
	Изучение взаимно влияющих друг на друга математических параметров 
                          ГОСУДАРСТВЕННАЯ АКАДЕМИЯ 
                             СФЕРЫ БЫТА И УСЛУГ. 
                      ИНСТИТУТ ЭКОНОМИКИ И УПРАВЛЕНИЯ. 
                              КУРСОВАЯ РАБОТА. 
                   Тема:”Изучение взаимно влияющих друг на 
                      друга математических параметров”. 
                             Выполнена студентом 
                    Максименко Константином Викторовичем. 
                               Группа ИД-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. 
Именно эти данные при тестовом запуске выдала программа. 
Таким образом , программа действительно годится для прогнози- 
рования и изучения состояния системы взаимовлияющих матема- 
тических параметров. 
	
	
					
							 |