В первую очередь необходимо создать функцию, вычисляющую подынтегральное выражение.
Для вычисления интеграла вызовем функцию quad, задав первым аргументом ссылку на функцию fint, а вторым и третьим — нижний и верхний пределы интегрирования.
По умолчанию функция quad вычисляет приближенное значение интеграла с точностью 10-6. [1, C.266] Для изменения точности вычислений следует задать дополнительный четвертый аргумент:
Вычисление двойных интегралов.
В MATLAB определена функция dblquad для приближенного вычисления двойных интегралов. Как и в случае вычисления определенных интегралов, следует написать файл-функцию для вычисления подынтегрального выражения. Вычислим интеграл:
Следовательно, функция должна содержать два аргумента x и y:
Функция dblquad имеет пять входных аргументов. При ее вызове необходимо учесть, что первыми задаются пределы внутреннего интеграла по х, а вторыми — внешнего по у:
Интегралы, зависящие от параметра.
Функции quad и quadl позволяют находить значения интегралов, зависящих от параметров. Аргументами функции, вычисляющей подынтегральное выражение, должна быть не только переменная интегрирования, но и все параметры. Значения параметров указываются через запятую, начиная с шестого аргумента quad или quadl. [1, C.270]
Решим интеграл:
Зададим функцию
Используя quad, вычислим интеграл:
Символьные переменные и функции являются объектами класса sym object, в отличие от числовых переменных, которые содержатся в массивах double array. Символьный объект создается при помощи функции syms. Команда
>> syms х a b
создает три символьные переменные х, а и b. Конструирование символьных функций от переменных класса sym object производится с использованием обычных арифметических операций и обозначений для встроенных математических функций, например:
>>f = (sin(x)+a)^2 * (cos(x)+b)^2/sqrt (abs(a+b))
f =
( sin(x)+a)2*(cos(x)+b)^2/abs(a+b)^(1/2)
Запись формулы для выражения в одну строку не всегда удобна, более естественный вид выражения выводит в командное окно функция pretty:
>>pretty(f)
2 2
(sin(x)+a) (cos(x)+b)
-------------------------------
1/2
| a + b |
Символьную функцию можно создать без предварительного объявления переменных при помощи sym, входным аргументом которой является строка с выражением, заключенная в апострофы:
Symbolic Math Toolbox позволяет работать как с неопределенными интегралами, так и с определенными. Неопределенные интегралы от символьных функций вычисляются при помощи int, в качестве входных аргументов указываются символьная функция и переменная, по которой происходит интегрирование, например:
Разумеется, функция int не всегда может выполнить интегрирование. В некоторых случаях int возвращает выражение для первообразной через специальные функции, например, посчитаем интеграл:
Ответ содержит так называемую функцию ошибки, которая определяется интегралом с переменным верхним пределом:
Кроме того, в полученное выражение входит комплексная единица, хотя подынтегральная функция вещественна. Требуются дополнительные преобразования для достижения окончательного результата.
Для нахождения определенного интеграла в символьном виде следует задать нижний и верхний пределы интегрирования, соответственно, в третьем и четвертом аргументах int:
Двойные интегралы вычисляются повторным применением функции int. [1, C.780]
Например:
Определим символьные переменные а, b, с, d, x, у, подынтегральную функцию f от х и у и проинтегрируем сначала по х, а затем по у:
Аналогичным образом в символьном виде вычисляются любые кратные интегралы.
MATLAB (Matrix Laboratory – матричная лаборатория) это наиболее развитая система программирования для научно-техническом расчетов, дополненная к настоящему времени несколькими десятками более частных приложений, относящихся к вычислительной математике, обработке информации, экономике и ряду других разделов прикладной науки.
MATLAB предназначен для выполнения научных и инженерных расчетов на ПЭВМ. Эти расчеты могут иметь отношение к области аналитической геометрии, математической статистике, а также к таким научно – техническим приложениям, как спектральный и корреляционный анализ, расчет фильтров и прочее. В MATLAB реализованы классические численные алгоритмы решения уравнений, задач линейной алгебры, нахождения значений определенных интегралов, аппроксимации, решения систем или отдельных дифференциальных уравнений. Для применения базовых вычислительных возможностей достаточно знания основных численных методов в рамках программы технических вузов. Решение специальных задач, разумеется, невозможно без соответствующей теоретической подготовки; впрочем, сведения, изложенные в справочной системе, оказываются неоценимым подспорьем для желающих самостоятельно разобраться в обширных возможностях пакета. Подводя итог вышесказанному, можно сделать вывод, что начинающий пользователь MATLAB может в процессе работы совершенствовать свои знания как в области моделирования и численных методов, так и программирования, и визуализации данных. Огромным преимуществом MATLAB является открытость кода, что дает возможность опытным пользователям разбираться в запрограммированных алгоритмах и, при необходимости, изменять их. Впрочем, разнообразие набора функций MATLAB и Toolbox допускает решение большинства задач без каких-либо предварительных модификаций [6, С.5].
3. РЕАЛИЗАЦИЯ ЭКОНОМИЧЕСКОЙ МОДЕЛИ ВЗАИМОРАСЧЁТОВ ПРЕДПРИЯТИЙ В СРЕДЕ MATLAB
Рассмотрим модель математической оценки с использованием рублей и долларового эквивалента, с помощью двух определенных интегралов, для вычисления которых используется формула трапеций.
В данном случае объектом исследования являются взаиморасчеты, в которых используются доллары и рубли. Договор заключен между тремя сторонами: заказчиком, генеральным подрядчиком и субподрядчиком.
Для анализа доходности сделок генерального подрядчика нас будут интересовать следующие характеристики экономической ситуации:
1) курс доллара в момент времени t;
2) уровень инфляции, характеризующийся коэффициентом инфляции dK;
3) уровень цен, характеризующийся индексом цен I(t);
4) коэффициент индекса цен dI, характеризующий рост цен в период действия договора;
5) непрерывная ставка дисконтирования непрерывных денежных потоков δ;
6) срок действия договоров T;
7) курс доллара и уровень цен в момент вступления договора в силу K(0), I(0).
Используя данные характеристики, зададим уровень инфляции в момент времени t:
.Если принять за базу уровень цен в момент вступления договора в силу, т.е. I(0)=1, то уровень цен в момент времени t можно выразить так:
Запишем формулу современной стоимости непрерывного потока выплат подрядчику в рублях по текущему курсу доллара K(t) с учетом индекса I(t).
Запишем теперь формулу современной стоимости непрерывного потока платежей субподрядчикам в рублях с учетом инфляции и индекса цен на момент времени t.
Разность между Y1 и Y2 даст современную стоимость потока наличности подрядчика в момент времени t.
Если величина АР>0, значит, можно говорить и доходности сделок между заказчиком, генеральным подрядчиком и субподрядчиком.
Определим все параметры модели.
>>N=10000;
>>M=50000;
>>T=1;
>>δ=0.1;
>>dI=0.1763;
>>dK=0.85;
>>Io=1;
>>Ko=27.8;
Вычислим K(t) и I(t):
>> K(t) = 57.3
>> I(t) = 2.3526
Для удобства вычисления введём следующие обозначения:
Перепишем интегралы Y1 и Y2: