Автор работы: Пользователь скрыл имя, 17 Апреля 2013 в 18:10, лабораторная работа
Знайдіть траєкторію динаміки інфляції (у) та побудуйте її графік, дайте економічну інтерпретацію отриманих результатів, якщо стала інтегрування рівна 0. Побудуйте декілька із множини інтегральних кривих.
Міністерство освіти та науки, молоді та спорту України
Львівський національний університет імені Івана Франка
Економічний факультет
Кафедра економічної кібернетики
Індивідуальна робота №1
з дисципліни «Моделювання макроекономічних процесів»
Виконала:
Студентка групи ЕккМ-51с
Курадовець Юлія
Перевірив:
доц. Дацко М.В.
Львів – 2013
1. Знайдіть траєкторію динаміки інфляції (у) та побудуйте її графік, дайте економічну інтерпретацію отриманих результатів, якщо стала інтегрування рівна 0. Побудуйте декілька із множини інтегральних кривих.
Нехай процес інфляції описується наступним диференційним рівнянням:
Зробимо заміну: , тоді
Повертаючись до заміни, отримаємо:
, де
Зобразимо графічно нашу функцію , використовуючи MS Excel. Для обчислень оберемо п’ять значень С: С = 19, С = -2, С = -1, С = 0, С = 1, також з кроком 0,05. Якщо стала інтегрування набуває від’ємного значення, то при рості інфляції (y) величина x зростає стрімкіше. Якщо стала інтегрування набуває додатного значення, то при рості інфляції (y) величина заощаджень x спадає (зменшується).
Рис.1. Графічне зображення функції
Економічна інтерпретація
Між інфляцією y та заощадженнями х можна прослідкувати певний зв'язок. Інфляція є прихованим податком, зокрема, на заощадження, оскільки знижує стимул до нагромадження. При зростанні інфляції заощадження в формі готівки або ж депозитів скорочуються в той час, як збільшується нагромадження натуральних речей: нерухомість, дорогоцінності (золото, срібло тощо). Звідси випливає, що золото – це один із способів, який дозволяє певною мірою захистити себе від інфляції. Якщо проаналізувати історію, то загалом ціна на золото має тенденцію до зростання. Золото не втрачає купівельної спроможності.
Метод Рунге-Кутта
Метод Рунге-Кутта застосовують для розв’язку задачі Коші при умові . Завдяки цьому методу можна отримати найбільш наближені результати. Його алгоритм наступний. Нехай дано рівняння , початкова умова і відрізок . Далі на першому кроці потрібно вказати кількість п точок поділу відрізка й обчислити крок . Припускаємо, що є заданими. Наступний другий крок передбачає, що знайдені. Відповідно обчислюємо:
,
,
,
,
,
, .
Якщо (k+1=n), то ми дійшли до кінцевого результату. Числа - це наближені значення шуканого розв’язку в точках . Якщо ж (k+1<n), то повторюємо другий крок, вважаючи вихідним .
Відповідний алгоритм було застосовано до описаного вище прикладу рівняння та реалізовано в програмному середовищі C Sharp (C#).
Код програми:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace TRKLib
{
public class RungeKutta
{
private Func<double, double, double> _func;
private double _step;
public RungeKutta(Func<double, double, double> functor, double step)
{
_step = step;
_func = functor;
}
public double GetX(double x)
{
return x + _step;
}
public double GetY(double x, double y)
{
var m1 = GetM1(x, y);
var m2 = GetM2(x, y, m1);
var m3 = GetM3(x, y, m2);
var m4 = GetM4(x, y, m3);
return y + _step / 6 * (m1 + 2 * m2 + 2 * m3 + m4);
}
public double GetM1(double x, double y)
{
return _func(x, y);
}
public double GetM2(double x, double y, double m1)
{
return _func(x + _step / 2, y + m1 * _step / 2);
}
public double GetM3(double x, double y, double m2)
{
return _func(x + _step / 2, y + m2 * _step / 2);
}
public double GetM4(double x, double y, double m3)
{
return _func(x + _step, y + m3 * _step / 2);
}
public Tuple<double, double> Iterate(double x, double y)
{
return new Tuple<double, double>(GetX(x), GetY(x, y));
}
public static IEnumerable<ResultItem> Resolve(Func<double, double, double> func, Tuple<double, double> xRange, double y, int iterations)
{
var step = (xRange.Item2 - xRange.Item1) / iterations;
var equation = new RungeKutta(func, step);
double x = xRange.Item1;
var counter = 0;
var result = new List<ResultItem>();
result.Add(new ResultItem(x, y, 0));
while (x <= xRange.Item2)
{
var r = equation.Iterate(x, y);
counter++;
x = r.Item1;
y = r.Item2;
result.Add(new ResultItem(x, y, counter));
}
return result;
}
}
}
Наша функція:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using TRKLib;
namespace TRKEquation
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContext = new Model();
}
private void Button_Click_1(object sender, RoutedEventArgs e)
{
var context = (Model) DataContext;
Func<double, double, double> func = (x, y) => 1/(x + 2*y);
var result = RungeKutta.Resolve(func, new Tuple<double, double>(context.xs, context.xe), context.y,
context.Result = result;
}
}
}
Рис.2. Вивід даних
2. Якщо система ціни–інфляція моделюється рівнянням виду . Побудуйте траєкторію інфляції r від рівня логцін p, якщо С = 19.
Для побудови траєкторії інфляції r від рівня логцін p оберемо для обчислень діапазон цін від 0 до 100 у.о., С=19. Результат зображено на рис. 3.
Рис.3. Траєкторія інфляції r від рівня логцін p
3. Припустимо, що економіка є рівноважною системою із потенціалом , як змоделювати функцію інфляції. Відобразіть графік цієї функції графічно.
,
Для побудови графіка оберемо p з діапазону [-20;20].
Рис.4. Функція інфляції