Тема: Будь ласка допоможіть з побудовою графіка
Ось така задача:
Задано xп=-1, xк=1, dx=0.2, yп=-2, yк=2, dy=0.2, z=1.32. Відповідно до номера варіанту потрібно розробити програму для двовимірного табулювання функцій a=f[x,y,z,b] і b=f[x,y,z] за незалежними змінними х і y згідно з математичними виразами, наведеними у задачі 1.1. Побудувати двовимірні графіки цих функцій.
Побудова одновимырного графіка при табулюванні по змінній Х ніяких труднощів не склала..от з двох вимірним табулюванням халепа.
Свій варіант програми завантажую... виконано вссе крім побудови графіка.
//---------------------------------------------------------------------------
#include <vcl.h>
#include <math.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
class ZavdClass {
float a, b;
public:
ZavdClass() {a=1; b=1;}
void Fn_b(float x, float y, float z);
void Fn_a(float x, float y, float z);
void TabX(float xp, float xk, float dx,
float y, float z);
float getA()
{return a;}
float getB()
{return b;}
float Faktr(int n);
void showZavd()
{
Form1->Edit5->Text=FloatToStrF(b,ffFixed,2,3);
Form1->Edit6->Text=FloatToStrF(a,ffFixed,2,3);
}
void ZavdClass::TabXY(double xp, double xk, double dx,
double yp, double yk, double dy, double z);
};
void ZavdClass::Fn_b(float x, float y, float z)
{
float b1=y+atan(pow(fabs(x*x+z),0.1));
float b2=3*z+pow(sin(pow(y+z,3)),2);
float b3=y*exp(-((x+z)/(y+z)));
b=y*(b1/b2+b3);
}
void ZavdClass::Fn_a(float x, float y, float z)
{
float a1=sqrt(pow(fabs(x*x-z),0.3));
float a2=pow(fabs(y+2*b),1./3);
float a3=1+x+y*y/Faktr(2)+z*z*z/Faktr(3);
a=(a1-a2)/a3;
}
float ZavdClass::Faktr(int n)
{
float f=1;
if(n > 1)
for(int i=2; i<=n; i++)
f*=i;
return f;
}
void ZavdClass::TabX(float xp, float xk, float dx,
float y, float z)
{ ZavdClass Zavd;
Form1->Memo1->Lines->Add("Одновимірне табулювання функції:");
Form1->Memo1->Lines->Add(" ");
float x=xp;
while(x<=xk){
Fn_b(x, y, z);
Fn_a(x, y, z);
Form1->Memo1->Lines->Append(FloatToStrF(x,ffFixed,2,2)+'\t'+FloatToStrF(getA(),ffFixed,2,2)+'\t'+FloatToStrF(getB(),ffFixed,2,2));
Form1->Series1->Add(getB(),FloatToStrF(x,ffFixed,2,2),clRed);
Form1->Series1->Add(getA(),FloatToStrF(x,ffFixed,2,2),clGreen);
x+=dx;
}
}
void ZavdClass::TabXY(double xp, double xk, double dx,
double yp, double yk, double dy, double z)
{
Form1->Memo1->Lines->Add(" ");
Form1->Memo1->Lines->Add("\n\nДвохвимірне табулювання функції:\n\n");
Form1->Memo1->Lines->Add(" ");
double y=yp;
while(y<=yk){
double x=xp;
AnsiString A;
while(x<=xk){
Fn_b(x, y, z);
Fn_a(x, y, z);
A=A+FloatToStrF(getA(),ffFixed,2,2)+"\t";
x+=dx;
}
Form1->Memo1->Lines->Add(A);
Form1->Series3->Add(getA(),FloatToStrF(y,ffFixed,2,2),clRed);
y+=dy;
}
}
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
int Nv=StrToInt(Edit1->Text);
float x=0.48*Nv;
Edit2->Text= FloatToStrF(x,ffFixed,2,2);
float y=0.47*Nv;
Edit3->Text= FloatToStrF(y,ffFixed,2,2);
float z=1.32*Nv;
Edit4->Text= FloatToStrF(z,ffFixed,2,2);
float Xp=-1*Nv;
Edit7->Text= FloatToStrF(Xp,ffFixed,2,2);
float Xk=1*Nv;
Edit8->Text= FloatToStrF(Xk,ffFixed,2,2);
float dX=0.1*Nv;
Edit9->Text= FloatToStrF(dX,ffFixed,2,2);
float Yp=-2;
Edit10->Text= FloatToStrF(Yp,ffFixed,2,2);
float Yk=2;
Edit11->Text= FloatToStrF(Yk,ffFixed,2,2);
float dY=0.2;
Edit12->Text= FloatToStrF(dY,ffFixed,2,2);
ZavdClass Zavd;
if (CheckBox2->Checked) Zavd.TabX(Xp,Xk,dX,y,z);
if (CheckBox3->Checked) Zavd.TabXY(Xp,Xk,dX,Yp,Yk,dY,z);
if (CheckBox1->Checked)
{
Zavd.Fn_b(x, y, z);
Zavd.Fn_a(x, y, z);
Zavd.showZavd();
}
BitBtn1->Enabled=false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn3Click(TObject *Sender)
{
Edit2->Text=" ";
Edit3->Text=" ";
Edit4->Text=" ";
Edit5->Text=" ";
Edit6->Text=" ";
Edit7->Text=" ";
Edit8->Text=" ";
Edit9->Text=" ";
Edit10->Text=" ";
Edit11->Text=" ";
Edit12->Text=" ";
Memo1->Lines->Clear();
Series1->Clear();
Chart1->AddSeries(Series1);
Series2->Clear();
Chart1->AddSeries(Series2);
Series3->Clear();
Chart2->AddSeries(Series3);
BitBtn1->Enabled=true;
}
//---------------------------------------------------------------------------