Макроэкономического равновесия: модель IS-LM с гибкими ценами

Автор работы: Пользователь скрыл имя, 07 Мая 2013 в 22:35, курсовая работа

Краткое описание

МАКРОЭКОНОМИЧЕСКОЕ РАВНОВЕСИЕ - сбалансированное состояние экономической системы, равновесие экономической системы в целом. Оно выражается в пропорциональности экономических процессов, в основе которой находится взаимная согласованность системы общих, частных и единичных пропорций.

Содержание

Введение 3
1. Макроэкономическое равновесие
1.1 Понятие макроэкономического равновесия 4
1.2 Признаки, условия и типы макроэкономического равновесия 5
1.3 Макроэкономический анализ равновесия 6
1.4 Наиболее известные модели макроэкономического равновесия 7
2. Модель IS-LM
2.1 Общие сведения о модели IS-LM 9
2.2 Рынок товаров и кривая IS 10
2.3 Денежный рынок и кривая LM 12
2.4 IS-LM – анализ макроэкономического равновесия 15
2.5 Экономическая политика в модели IS-LM 15
3. Анализ макроэкономического равновесия с помощью модели
IS-LM в Беларуси 19
Заключение
Список литературы
Приложение А

Вложенные файлы: 1 файл

Курсовая_Макро.doc

— 678.00 Кб (Скачать файл)

  Edit27->Visible=true;

  Edit26->Enabled=true;

  Edit27->Enabled=true;

  Label48->Visible=true;

  Label49->Visible=true;

  Label50->Visible=true;

  Label51->Visible=true;

  Edit24->Visible=false;

  Edit25->Visible=false;

  Edit24->Enabled=false;

  Edit25->Enabled=false;

  Label27->Visible=false;

  Label46->Visible=false;

  }

}

//-------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)

{

Series5->Clear();

Series6->Clear();

Series7->Clear();

Series8->Clear();

Ob.Func2();

}

//-------------------------------------------------------------------

void __fastcall TForm1::Button3Click(TObject *Sender)

{

register int i, j;

double sum=0,Z=0,X=0,sum1=0,Z1=0,X1=0;

Series9->Clear();

Series10->Clear();

X=(MasR[1]-MasR[0])/4;

for(Z=MasR[0];Z<=MasR[k-1];Z+=X)

  {

  sum = Ob.Lagran(MasR,MasY,k,Z);

  Series9->AddXY(sum, Z,"",clRed);

  }

Ob.Nuton();

X1=(MasR1[0]-MasR1[1])/4;

for(Z1=MasR1[0];Z1>=MasR1[l-1];Z1-=X1)

  {

  sum1 = Ob.Lagran1(MasR1,MasY1,l,Z1);

  Series10->AddXY(sum1, Z1,"",clBlack);

}

Ob.Nuton();

}

//--------------------------------------------------------------------

void __fastcall TForm1::RadioButton1Click(TObject *Sender)

{

AnsiString Rez="";

register int i;

if(RadioButton1->Checked)

   {

    ListBox1->Clear();

    Rez="№ IS %   IS V";

    ListBox1->Items->Add(Rez);

    for(i=0; i<k; i++)

     {

     Rez=IntToStr(i)+"  "+FloatToStrF(MasR[i],ffFixed,7,2)+"  "+

     FloatToStrF(MasY[i],ffFixed,7,2);

     ListBox1->Items->Add(Rez);

     }

   }

else

  if(RadioButton2->Checked)

     {

     ListBox1->Clear();

     Rez="№  LM %  LM V";

     ListBox1->Items->Add(Rez);

     for(i=0; i<l; i++)

       {

       Rez=IntToStr(i)+"  "+FloatToStrF(MasR1[i],ffFixed,7,2)+"  "+

       FloatToStrF(MasY1[i],ffFixed,7,2);

       ListBox1->Items->Add(Rez);

       }

     }

  else

      if(RadioButton3->Checked)

   {

   ListBox1->Clear();

   Rez="№  IS %   IS V      LM %  LM V";

   ListBox1->Items->Add(Rez);

   if(k>=l)

   {

   for(i=0; i<l; i++)

     {

     Rez=IntToStr(i)+"  "+FloatToStrF(MasR[i],ffFixed,7,2)+"  "+

     FloatToStrF(MasY[i],ffFixed,7,2)+"   "+

     FloatToStrF(MasR1[i],ffFixed,7,2)+"  "+

     FloatToStrF(MasY1[i],ffFixed,7,2);

     ListBox1->Items->Add(Rez);

     }

   for(i=l; i<k; i++)

     {

     Rez=IntToStr(i)+"  "+FloatToStrF(MasR[i],ffFixed,7,2)+"  "+

     FloatToStrF(MasY[i],ffFixed,7,2);

     ListBox1->Items->Add(Rez);

     }

   }

   else if(k<l)

   {

   for(i=0; i<k; i++)

     {

     Rez=IntToStr(i)+"  "+FloatToStrF(MasR[i],ffFixed,7,2)+"  "+

     FloatToStrF(MasY[i],ffFixed,7,2)+"   "+

     FloatToStrF(MasR1[i],ffFixed,7,2)+"  "+

     FloatToStrF(MasY1[i],ffFixed,7,2);

     ListBox1->Items->Add(Rez);

     }

   for(i=k; i<l; i++)

     {

Rez=IntToStr(i)+" "+"                       "+FloatToStrF(MasR1[i],ffFixed,7,2)+" "+

FloatToStrF(MasY1[i],ffFixed,7,2);

ListBox1->Items->Add(Rez);

     }

   }

  }

}

//---------------------------------------------------------------------

 

Unit2.cpp

//---------------------------------------------------------------------

#pragma hdrstop

#include <vcl.h>

#include "Unit1.h"

#include "Unit2.h"

#include <Math.h>

 

//--------------------------------------------------------------------

 

#pragma package(smart_init)

 

void MyClass::Func1()

{

double I=0, E=0, Y=0, R=0, Rmin, Rmax, S, Z, Ymin, Ymax, T, EX, G, H, a, c, b,

       d, X1, X2, E1;

AnsiString Rez;

register double i;

register int j;

 

b=StrToFloat(Form1->Edit14->Text);

c=StrToFloat(Form1->Edit12->Text);

d=StrToFloat(Form1->Edit13->Text);

a=StrToFloat(Form1->Edit11->Text);

EX=StrToFloat(Form1->Edit1->Text);

G=StrToFloat(Form1->Edit2->Text);

T=StrToFloat(Form1->Edit5->Text);

H=StrToFloat(Form1->Edit10->Text);

 

if(b==0 || b==1 || b>1)

  {

  ShowMessage("Коэффициент b должен быть больше нуля, но меньше единицы!");

  }

Form1->Series2->AddXY(0,0,"",clWindowFrame);

Form1->Series3->AddXY(0, 0,"",clHotLight);

 

if(Form1->ComboBox3->Text=="ставки  процента")

  {

  Rmin=StrToFloat(Form1->Edit24->Text);

  Rmax=StrToFloat(Form1->Edit25->Text);

  Form1->Series15->AddXY(-EX, 0,"",clWhite);

  Form1->Series16->AddXY(-G, 0,"",clWhite);

  for(j = 0; j < 100; j++)

  {

  MasR[j]=0;

  MasY[j]=0;

  }

  k=0;

  for(i = Rmin; i <= Rmax; i+=H)

   {

   R=i;

   I=(c-d*i)+ EX + G;

   E=I;

   Y=((a+c)/(1-b*(1-T))) + (G/(1-b*(1-T))) - (d*i/(1-b*(1-T)));

   Form1->Series1->AddXY(-I,R,"",clBackground);

   Form1->Series2->AddXY(-I,-E,"",clWindowFrame);

   Form1->Series3->AddXY(Y, -E,"",clHotLight);

   Form1->Series4->AddXY(Y, R,"",clLime);

   MasR[k]=i;

   MasY[k]=Y;

   k+=1;

   }

   if(Y >= I)

   X1=Y;

  else

   X1=I;

  if(Rmax >= E)

   X2=Rmax;

  else

   X2=E;

  Form1->Series11->AddXY(-X1-1, 0,"",clBlack);

  Form1->Series11->AddXY(X1+1, 0,"",clBlack);

  Form1->Series12->AddXY(0, -X2-1,"",clBlack);

  Form1->Series12->AddXY(0, X2+1,"",clBlack);

}

 

else  if(Form1->ComboBox3->Text=="объема ВНП")

  {

  Ymin=StrToFloat(Form1->Edit26->Text);

  Ymax=StrToFloat(Form1->Edit27->Text);

  S=StrToFloat(Form1->Edit3->Text);

  Z=StrToFloat(Form1->Edit4->Text);

  Form1->ListBox1->Clear();

 

  for(j = 0; j < 100; j++)

  {

  MasR[j]=0;

  MasY[j]=0;

  }

  k=0;

  for(i = Ymin; i <= Ymax; i+=H)

   {

   Y=i;

   E1=S+Z+T;

   I=E1*i;

   E=I;

   R=((a+c)/d) + (G/d) - (((1-b*(1-T))*i)/d);

   Form1->Series1->AddXY(-I,R,"",clBackground);

   Form1->Series2->AddXY(0,0,"",clWindowFrame);

   Form1->Series2->AddXY(-E,-I,"",clWindowFrame);

   Form1->Series3->AddXY(0, 0,"",clHotLight);

   Form1->Series3->AddXY(Y, -I,"",clHotLight);

   Form1->Series4->AddXY(Y, R,"",clLime);

   MasR[k]=R;

   MasY[k]=i;

   k+=1;

   }

  if(Y >= I)

   X1=Y;

  else

   X1=I;

  if(Rmax >= E)

   X2=Rmax;

  else

   X2=E;

  Form1->Series11->AddXY(-X1-1, 0,"",clBlack);

  Form1->Series11->AddXY(X1+1, 0,"",clBlack);

  Form1->Series12->AddXY(0, -X2-1,"",clBlack);

  Form1->Series12->AddXY(0, X2+1,"",clBlack);

  }

}

//--------------------------------------------------------------------

void MyClass::Func2()

{

double M, P, H, Rmin, Rmax, Ymin, Ri, Ymax, E, Y, R,F, e = 0, f=0,

       X1, X2, K1, K2, p;

AnsiString Rez;

register double i;

register int j;

 

M = StrToFloat(Form1->Edit15->Text);

P = StrToFloat(Form1->Edit16->Text);

H = StrToFloat(Form1->Edit17->Text);

 

if(Form1->ComboBox1->Text=="ставки  процента")

{

e = StrToFloat(Form1->Edit20->Text);

f = StrToFloat(Form1->Edit21->Text);

Rmax = StrToFloat(Form1->Edit7->Text);

Rmin = StrToFloat(Form1->Edit6->Text);

Form1->Series7->AddXY(0, 0,"",clPurple);

Form1->Series6->AddXY(-(M/P), 0,"",clRed);

Form1->Series6->AddXY(0, -(M/P),"",clRed);

 

for(j = 0; j < 100; j++)

  {

  MasR1[j]=0;

  MasY1[j]=0;

  }

l=0;

K1=((M/P)*Rmax*Rmin)/(Rmax-Rmin);

K2=(M/P)-K1/Rmin;

for(i = Rmax-H; i >= Rmin; i-=H)

  {

  R=i;

  F=(K1/i)+K2;

  E=(M/P)-F;

  Y=((M/P)/e)+(f*i/e);

  Form1->Series5->AddXY(-F, R,"",clWhite);

  Form1->Series7->AddXY(Y, -E,"",clPurple);

  Form1->Series8->AddXY(0, Rmin,"",clBlue);

  Form1->Series8->AddXY(Y, R,"",clBlue);

  MasR1[l]=i;

  MasY1[l]=Y;

  l+=1;

  }

  if(Y >= M/P)

   X1=Y;

  else

   X1=M/P;

  if(Rmax >= M/P)

   X2=Rmax;

  else

   X2=M/P;

  Form1->Series13->AddXY(-X1-1, 0,"",clBlack);

  Form1->Series13->AddXY(X1+1, 0,"",clBlack);

  Form1->Series14->AddXY(0, -X2-1,"",clBlack);

  Form1->Series14->AddXY(0, X2+1,"",clBlack);

}

 

else if(Form1->ComboBox1->Text=="объема  ВНП")

{

f=StrToFloat(Form1->Edit21->Text);

e=StrToFloat(Form1->Edit20->Text);

Ymin=StrToFloat(Form1->Edit8->Text);

Ymax=StrToFloat(Form1->Edit9->Text);

 

for(j = 0; j < 100; j++)

  {

  MasR1[j]=0;

  MasY1[j]=0;

  }

  l=0;

  for(i = Ymax-H; i >= Ymin; i-=H)

  {

  Y=i;

  E=e*i;

  F=(M/P)-i;

  R= (i*e/f)-((M/P)/f);

  Form1->Series5->AddXY(0, 0,"",clWhite);

  Form1->Series5->AddXY(Y, -E,"",clWhite);

  Form1->Series6->AddXY(-M/P, 0,"",clRed);

  Form1->Series6->AddXY(0, -M/P,"",clRed);

  Form1->Series7->AddXY(-F, R,"",clPurple);

  Form1->Series8->AddXY(Y, R,"",clBlue);

  MasY1[l]=i;

  MasR1[l]=R;

  l+=1;

  }

  if(Y >= M/P)

   X1=Y;

  else

   X1=M/P;

  if(Rmax >= M/P)

   X2=Rmax;

  else

   X2=M/P;

  Form1->Series13->AddXY(-X1-1, 0,"",clBlack);

  Form1->Series13->AddXY(X1+1, 0,"",clBlack);

  Form1->Series14->AddXY(0, -X2-1,"",clBlack);

  Form1->Series14->AddXY(0, X2+1,"",clBlack);

}

}

//------------------------------------------------------------------

double MyClass::Lagran(double MasR[100],double MasY[100],int k,double Z)

{

register int i;

double X;

double sum=0;

for( i=0;i<k;i++)

  {

double proiz=1;

  for(int j=0;j<k;j++)

    if(j!=i )

      proiz*=(Z-MasR[j])/(MasR[i]-MasR[j]);

  sum+=(MasY[i]*proiz);

  }

return sum;

}

//--------------------------------------------------------------------

double MyClass::Lagran1(double MasR1[100], double MasY1[100], int l, double Z1)

{

register int i;

double X;

double sum=0;

for( i=l-1;i>=0;i--)

  {

double proiz=1;

  for(int j=l-1;j>=0;j--)

    if(j!=i)

      proiz*=(Z1-MasR1[j])/(MasR1[i]-MasR1[j]);

  sum+=(MasY1[i]*proiz);

  }

   return sum;

}

//--------------------------------------------------------------------

  void MyClass::Func5(double &R, double &Y)

{

double T, G, a, c, b, d, e, f, M, P, IS, LM;

 

  b=StrToFloat(Form1->Edit14->Text);

  c=StrToFloat(Form1->Edit12->Text);

  d=StrToFloat(Form1->Edit13->Text);

  a=StrToFloat(Form1->Edit11->Text);

  G=StrToFloat(Form1->Edit2->Text);

  T=StrToFloat(Form1->Edit5->Text);

  e = StrToFloat(Form1->Edit20->Text);

  f = StrToFloat(Form1->Edit21->Text);

  M = StrToFloat(Form1->Edit15->Text);

  P = StrToFloat(Form1->Edit16->Text);

  R = (e*(a+c+G)-(M/P)*(1-b*(1-T)))/(e*d+f*(1-b*(1-T)));

  Y = ((M/P)/e)+(f*R/e);

}

//--------------------------------------------------------------------

void MyClass::Nuton()

{

double R=0, Y=0;

Func5(R,Y);

Form1->Edit18->Text=FloatToStr(R);

Form1->Edit19->Text=FloatToStr(Y);

}




Информация о работе Макроэкономического равновесия: модель IS-LM с гибкими ценами