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

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

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


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



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


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



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


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


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


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


Группа ИД-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 , DW и WS соответственно. W меняется при прибавлении DW ежемесячно и при вычитании WS ежегодно , в декабре. DW в свою очередь изменяется ежемесячно , уменьшаясь из-за мышей , а так-


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


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


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


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


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


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


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


ние количества мышей DМ , от которого зависит М , в свою оче- редь определяется естественным приростом. Он описан выше , а математически выглядит следующим образом : если W >= 2M , то


DМ за данный месяц равно 1,5М. Если же W<2M , то DМ=0,1М.


Кроме того , DМ меняется под воздействием естественной смерт-


ности , составляющей ежемесячно 1/12 от М. Сильно влияет на по-


пуляцию грызунов и количество кошек в зернохранилище. Чем больше мышей приходится на кошку , тем больше их и погибает.


В формализованном виде это выглядит так : если М/С ( С-общее количество кошек и котов) больше 60 , то за месяц гибнет 40*С мышей. Если М/С меньше или равно данному соотношению , то


ежемесячно уничтожается 15*С грызунов. Общее воздействие прироста , смертности и уничтожения мышей и определяет DМ.


DМ , в свою очередь , корректирует М.


Вершиной данной экологической пирамиды является популя-


ция кошек и котов в хранилище. Её состояние прямо зависит от численности мышей. Численность кошек С определяется как внут-


ренними параметрами- естественными смертностью и рождаемос-


тью,- но и внешним- субъективной оценкой целесообразности со-


держания данного числа мышеловов в хранилище , приводящей к покупке или продаже некоторого количества животных. И подчас решающим становится именно внешний , корректирующий равно-


весие между мышами и кошками , субъективный параметр. При


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


баре кошек. Это параметр внешний для этой экогруппы и опреде-


ляется он пользователем при оценке целесообразного размера ко-


шачьего присутствия в хранилище. Здесь допустим и нулевой уро-


вень , как наименее дешёвый. Но он же и наиболее рискованный ,


т.к. отсутствие кошек приведёт к всплеску численности мышей в амбаре. В математическом представлении он называется MNC.


Далее начинают действовать естественные , внутренние парамет-


ры , такие , как рождаемость и смертность кошек. Все эти парамет- ры составляют в суммарном воздействии Рождаемость зависит от количества мышей и в виде формул выглядит так : при M/C >60 DC=3C котят, при 20 < M/C < 40 DC=3 или 4 котёнка , при ещё меньшем – DС=0. Естественная смертность определяется общим количеством кошек. При С>=120 ежемесячно умирает С/120 ко-


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


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


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


M > MN , то DС = DС +

М/30 , а DS = DS – ( М/30 ) * РС , где DS -


ежемесячное приращение годового дохода , а РС – цена одной кошки. Если же М<=MN , то DC= DC + ( МNС – С) и


DS=DS + 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 <WHEAT-MICE-CATS> 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.


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


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


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


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

Сохранить в соц. сетях:
Обсуждение:
comments powered by Disqus

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

Слов:2904
Символов:22113
Размер:43.19 Кб.