Автор работы: Пользователь скрыл имя, 03 Декабря 2010 в 00:33, Не определен
Цель данной работы – анализ взаимодействия реального сектора экономики(товарных рынков) и денежного рынка.
Пересечение кривых равновесия товарного (IS) и денежного (LM) рынков дает единственные значения величины ставки процента R (равновесная ставка процента) и уровня дохода Y (равновесный уровень дохода), обеспечивающие одновременное равновесие на этих двух рынках.
Модель
IS-LM позволяет: показать взаимосвязь
и взаимозависимость товарного
и денежного рынков; выявить факторы,
влияющие на установление равновесия
как на каждом из этих рынков в отдельности,
так и условия их одновременного равновесия;
рассмотреть воздействие изменения равновесия
на этих рынках на экономику; проанализировать
эффективность фискальной и монетарной
политики; вывести функцию совокупного
спроса и определить факторы, влияющие
на совокупный спрос; проанализировать
варианты стабилизационной политики на
разных фазах экономического цикла.
1.Агапова Т.А., Серегина С.Ф. Макроэкономика.-М., «Дис», 1997
2.Ивашковский С.Н. Макроэкономика: учебник. -3-е изд.,2004
3. Плотницкий М.И., Лобкович Э.И. Макроэкономика.-М.,2002
4.Селищев А.С. Макроэкономика.-С-Пб, «Питер», 2000
Приложение А
Текст программы:
Unit1.cpp
include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "Unit2.h"
//----------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//----------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//----------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Close();
}
//----------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
double r, Y;
PageControl1->ActivePage = TabSheet2;
MyObject.I = StrToFloat(Edit1->Text);
MyObject.T = StrToFloat(Edit2->Text);
MyObject.G = StrToFloat(Edit3->Text);
MyObject.b = StrToFloat(Edit4->Text);
MyObject.c = StrToFloat(Edit5->Text);
MyObject.d = StrToFloat(Edit6->Text);
MyObject.M = StrToFloat(Edit7->Text);
MyObject.k = StrToFloat(Edit8->Text);
MyObject.n = StrToFloat(Edit9->Text);
if((MyObject.b<1)&&(MyObject.d != 0)&&(MyObject.n != 0))
{
Y = MyObject.MetodNewtona();
r = MyObject.M*(1/MyObject.n)+(
Label12->Caption = FloatToStrF(r,ffFixed,10,2);
Label13->Caption = FloatToStrF(Y,ffFixed,10,2);
Series1->Clear();
Series2->Clear();
for( int i = Y - 1000; i<Y+1000; i++)
{
Series1->AddXY(i, MyObject.LM(i),"",clTeeColor);
Series2->AddXY(i, MyObject.IS(i),"",clTeeColor);
}
}
else {
if(MyObject.b>1)
ShowMessage("Вводимое значение b должно быть неотрицательным числом меньшим 1");
if(MyObject.d == 0)
ShowMessage("Вводимое значение d не должно равняться нулю");
if(MyObject.n == 0)
ShowMessage("Вводимое значение n не должно равняться нулю");
}
}
Unit1h
#ifndef Unit1H
#define Unit1H
//----------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ComCtrls.hpp>
#include <Chart.hpp>
#include <ExtCtrls.hpp>
#include <Series.hpp>
#include <TeEngine.hpp>
#include <TeeProcs.hpp>
//----------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TPageControl *PageControl1;
TTabSheet *TabSheet1;
TTabSheet *TabSheet2;
TGroupBox *GroupBox1;
TEdit *Edit1;
TEdit *Edit2;
TEdit *Edit3;
TEdit *Edit4;
TEdit *Edit5;
TEdit *Edit6;
TLabel *Label1;
TLabel *Label2;
TLabel *Label3;
TLabel *Label4;
TLabel *Label5;
TLabel *Label6;
TGroupBox *GroupBox2;
TEdit *Edit7;
TEdit *Edit8;
TEdit *Edit9;
TLabel *Label7;
TLabel *Label8;
TLabel *Label9;
TButton *Button1;
TButton *Button2;
TChart *Chart1;
TLineSeries *Series1;
TLineSeries *Series2;
TLabel *Label10;
TLabel *Label11;
TLabel *Label12;
TLabel *Label13;
void __fastcall Button2Click(TObject *Sender);
void __fastcall Button1Click(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//----------------------------
extern PACKAGE TForm1 *Form1;
//----------------------------
#endif
Unit2.cpp
//----------------------------
#pragma hdrstop
#include "Unit2.h"
#include "Unit1.h"
//----------------------------
#pragma package(smart_init)
#include<math.h>
MyClass MyObject;
//----------------------------
double MyClass::MetodNewtona()
{
double x = 0, Y, Y1;
Y = Func(x);
Y1 = (Func(x + 0.01) - Func(x - 0.01))/(2*0.01);
while(fabs(Y)>0.0001)
{
x = x - Y/Y1;
Y = Func(x);
Y1 = (Func(x + 0.01) - Func(x - 0.01))/(2*0.01);
}
return x;
}
//----------------------------
double MyClass::Func(double x)
{
return M*1/n - (c + I)/d + b/d*T - 1/d*G + x*(k/n + (1 - b)/d);
}
//----------------------------
double MyClass::LM(double x)
{
return M*1/n+k/n*x;
}
//----------------------------
double MyClass::IS(double x)
{
return (c + I)/d - b/d*T + 1/d*G - (1 - b)/d*x;
}
//----------------------------
Unit2.h
#ifndef Unit2H
#define Unit2H
//----------------------------
class MyClass{
public:
double M, n, k, I, T, G, b, c, d;
MyClass()
{M = 0; n = 0; k = 0; I = 0; T = 0; G = 0; b = 0; c = 0; d = 0;}
~MyClass()
{M = 0; n = 0; k = 0; I = 0; T = 0; G = 0; b = 0; c = 0; d = 0;}
double MetodNewtona();
double Func(double x);
double LM(double x);
double IS(double x);
};
extern MyClass MyObject;
//----------------------------
#endif