Программирование и комп-ры

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


                          ГОСУДАРСТВЕННАЯ АКАДЕМИЯ
                             СФЕРЫ БЫТА И УСЛУГ.

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

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

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

                             Выполнена студентом
                    Максименко Константином Викторовичем.

                               Группа ИД-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М. Если же W<2M , то (М=0,1М.
Кроме того , (М меняется под воздействием естественной смерт-
ности , составляющей ежемесячно 1/12 от М. Сильно влияет на по-
пуляцию грызунов и количество кошек в зернохранилище. Чем больше мышей
приходится на кошку , тем больше их и погибает.
В формализованном виде это выглядит так : если М/С ( С-общее количество
кошек и котов) больше 60 , то за месяц гибнет 40*С мышей. Если М/С меньше
или равно данному соотношению , то
ежемесячно уничтожается 15*С грызунов. Общее воздействие прироста ,
смертности и уничтожения мышей и определяет (М.
(М , в свою очередь , корректирует М.
      Вершиной данной экологической пирамиды является популя-
ция кошек и котов в хранилище. Её состояние прямо зависит от численности
мышей. Численность кошек С определяется как внут-
ренними параметрами- естественными смертностью и рождаемос-
тью,- но и внешним- субъективной оценкой целесообразности со-
держания данного числа мышеловов в хранилище , приводящей к покупке или
продаже некоторого количества животных. И подчас решающим становится именно
внешний , корректирующий равно-
весие между мышами и кошками , субъективный параметр. При
формализации характеристик популяции кошек нужно начать с определения
минимально допустимого количества живущих в ам-
баре кошек. Это параметр внешний для этой экогруппы и опреде-
ляется он пользователем при оценке целесообразного размера ко-
шачьего присутствия в хранилище. Здесь допустим и нулевой уро-
вень , как наименее дешёвый. Но он же и наиболее рискованный ,
т.к. отсутствие кошек приведёт к всплеску численности мышей в амбаре. В
математическом представлении он называется MNC.
Далее начинают действовать естественные , внутренние парамет-
ры , такие , как рождаемость и смертность кошек. Все эти парамет- ры
составляют в суммарном воздействии Рождаемость зависит от количества мышей
и в виде формул выглядит так : при M/C >60 (C=3C котят, при 20 < M/C < 40
(C=3 или 4 котёнка , при ещё меньшем – (С=0. Естественная смертность
определяется общим количеством кошек. При С>=120 ежемесячно умирает С/120
ко-
шек , а при меньших значениях С – одна кошка или ни одной.Рас-
считать дополнительно необходимое количество мышеловов по-
могает предельно допустимое количество мышей – MN. Если
M > MN , то (С =  (С + М/30 , а (S = (S – ( М/30 ) * РС , где (S -
ежемесячное приращение годового дохода , а РС – цена одной кошки. Если же
М<=MN , то (C= (C + ( МNС – С)  и
(S=(S + PS * ( C – MNC ) , т.е. количество кошек выравнивается по MNC с
помощью продажи или покупки необходимого для это-
го числа кошек.
      В конце программы высчитываются результаты взаимодейст-
вия всех экологических групп в кокретном финансовом выраже-
нии. Каждый декабрь программой выводится годовой баланс по-
купки и продажи кошек , прибыль от реализации зерна , проводи-
мой в том же месяце , а также общий доход хозяев хранилища. Об-
новляется и сумма общих денежных средств. Таким образом , сте-
пень оптимизации взаимовлияния и взаимоопределения парамет-
ров экологических групп прямо отражается на уровне доходов и расходов зерна
и денежных средств.
      Моя программа имеет , кроме того , обширные возможности для
последующей модификации применительно к изменяемым па-
раметрам данной экосистемы. Можно , например , если возникнет такая
необходимость , учесть множество новых характеристик с сохранением старых.
Можно и сделать большинство изменяемых пользователем параметров более
гибкими по времени и по состоя-
нию экосистемы. Ну  и , разумеется , можно будет брать эту прог-
рамму за основу для составления новых программ , решающих другие задачи с
взаимовлияющими математическими параметра-
ми.
Далее я приведу список переменных , использованных в программе :



BY – год начала прогнозирования ,
Y – текущий год прогноза ,
F – долгосрочность прогноза , лет,
MT – текущий месяц прогноза
BW – начальный запас зерна ,
W - общее количество зерна в хранилище ,
H – ежегодный урожай пшеницы ,
DW – ежемесячное изменение общей массы зерна ,
J – рекомедуемая масса ежемесячно забираемой из хранилища        пшеницы ,
DT – определяемое количество ежемесячно забираемого зерна в
зависимости от общей массы пшеницы ,
Т – реальное количество ежемесячно забираемой пшеницы ,
WS – масса зерна , продаваемого ежегодно ,
PW – цена продаваемого килограмма зерна ,
MN – предельно допустимое количество мышей в хранилище ,
DM – ежемесячное изменение популяции мышей ,
М – общая численность популяции мышей ,
MNC – минимально допустимое количество кошек ,
С – общее число кошек и котов в хранилище ,
DC – ежемесячное изменение популяции кошек и котов
РС – цена одной кошки ,
DS – ежемесячное изменение денежных запасов ,
S – общий годовой доход ,
ST – общая сумма денежных средств , обновляющаяся ежегодно ,
I – переменная-счётчик , осуществляющая остановку выполнения
программы.



4.Листинг программы.
'IMITATION OF  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 <= 0 THEN END

'СКОЛЬКО ПШЕНИЦЫ ЗАБИРАЕТСЯ В МЕСЯЦ
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 <= 60 * c
dm = dm - 15 * c
CASE 0
dm = dm + 0
END SELECT

'ПО КОЛ-ВУ ЗЕРНА ОПРЕДЕЛЯЕТСЯ ПРИРОСТ МЫШЕЙ
IF m <= w / 2 THEN dm = dm + INT(1.5 * m) ELSE dm = dm + INT(m / 10)

'ОПРЕДЕЛЯЕТСЯ НОВОЕ КОЛ-ВО МЫШЕЙ
m = m + dm

'ЕСТЕСТВЕНАЯ СМЕРТНОСТЬ КОШЕК
dc = 0
IF c > 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) <= 0 THEN m = INT(RND(1) * 20 + 1)

'ОПРЕДЕЛЕНИЕ КОЛИЧЕСТВА ПШЕНИЦЫ
w = w + dw
IF INT(w) < 0 THEN w = 0
IF INT(w) <= 0 THEN GOTO 3000
'ИНФОРМАЦИЯ,ВЫВОДИМАЯ НА ЭКРАН
PRINT "y="; by + y; " ";
PRINT "mt="; mt; " ";
PRINT "w="; INT(w); " ";
PRINT "dw="; INT(dw); " ";
PRINT "m="; INT(m); " ";
PRINT "dm="; INT(dm); " ";
PRINT "c="; INT(c); " ";
PRINT "dc="; INT(dc); " ";
PRINT "ds="; ds

'СОБЫТИЯ ДЕКАБРЯ
IF mt = 12 THEN GOSUB 2500

GOTO 50

'ПРИРОСТ КОШЕК
1000 SELECT CASE INT(m)
CASE IS > 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.
Именно эти данные при тестовом запуске выдала программа.
Таким образом , программа действительно годится для прогнози-
рования и изучения состояния системы взаимовлияющих матема-
тических параметров.


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