Диференціальні рівняння
Знайду розв’язок рівняння методом Ейлера з кроком :
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "Math.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
float xc, yc, mashtY, mashtX;
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
class Div_rivn
{
public:
//##ModelId=509B95890066
Medot_Eillera(float x0, float y0);
};
void osi(int x0, int y0)
{
Form1->Image1->Canvas->MoveTo(x0,0);
Form1->Image1->Canvas->LineTo(x0,Form1->Image1->Height);
Form1->Image1->Canvas->MoveTo(0,y0);
Form1->Image1->Canvas->LineTo(Form1->Image1->Width,y0);
}
float f(float x, float y)
{
return cos(2*x);
}
int xk(float xm)
{
return xc+xm*mashtX;
}
int yk(float ym)
{
return yc-ym*mashtY;
}
Div_rivn::Medot_Eillera(float x0, float y0)
{
int x,y;
x=xk(x0);
y=yk(y0);
Form1->Image1->Canvas->Pen->Color = clRed;
Form1->Image1->Canvas->MoveTo(x,y);
float xn,yn,xn1,yn1;
xn=x0;
yn=y0;
xn1=x0;
int x1k,y1k;
float h=0.01;
while (xn1<=10)
{
xn1=xn+h;
yn1=yn+h*f(xn,yn);
x1k=xk(xn1);
y1k=yk(yn1);
Form1->Image1->Canvas->LineTo(x1k,y1k);
xn=xn1;
yn=yn1;
}
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
mashtX=50;
mashtY=50;
xc=200;
yc=200;
osi(xc,yc);
c.Medot_Eillera(0,0);
Дата добавления: 2015-12-21; просмотров: 15; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!