Необходимо подредактировать код программы
Значит вот какое дело.
У меня имеется код программы которая строит графики, а конкретно для функции y=1-ax^2+x^4 a=3
Мне необходимо, чтобы она строила по графику функции y=x^(2)*e^(-x)+sqrt(3) а и b не дано.
(y=икс в квадрате умножить на e в степени минус икс, плюс корень квадратный из 3)
буду очень признателен за вашу помощь, т.к сам я в этом деле не очень
Значит вот какое дело.
У меня имеется код программы которая строит графики, а конкретно для функции y=1-ax^2+x^4 a=3
Мне необходимо, чтобы она строила по графику функции y=x^(2)*e^(-x)+sqrt(3) а и b не дано.
(y=икс в квадрате умножить на e в степени минус икс, плюс корень квадратный из 3)
буду очень признателен за вашу помощь, т.к сам я в этом деле не очень
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Grids;
type
TForm1 = class(TForm)
Edit_Xn: TEdit;
Edit_Xk: TEdit;
Edit_n: TEdit;
Memo1: TMemo;
StringGrid1: TStringGrid;
Image1: TImage;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Label5: TLabel;
Label6: TLabel;
Button4: TButton;
Edit_a: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
n:integer;
Xn,Xk,a:extended;
X,Y:array[1..100] of extended;// объявлена переменная типа массива с плавающей точкой
Xr,Yr:array[1..100] of integer;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
dx:extended;
S:string;
begin
n:=strtoint(edit_n.Text);
Xn:=strtofloat(edit_Xn.Text);
Xk:=strtofloat(edit_Xk.Text);
a:=strtofloat(edit_a.Text);
dx:=(Xk-Xn)/(n-1);//расчет шага
for i:=1 to n do
begin
X[i]:=Xn+(i-1)*dx;//расчет точек по абсциссе.
Y[i]:=(1-a)*sqr(x[i])+sqr(sqr(x[i]));//расчет точек по ординате
stringgrid1.Cells[1,i]:=floattostrf(x[i],fffixed,8,2);//вывод значений X
stringgrid1.Cells[2,i]:=floattostrf(y[i],fffixed,8,2);//вывод значений Y
end;
s:=' ';
memo1.Lines.Add(s);
s:='| N | X | Y |';
Memo1.Lines.Add(s);
for i:=1 to n do
begin
s:='';
s:='|'+inttostr(i)+' | '+floattostrf(x[i],fffixed,8,2)+' | '+floattostrf(y[i], fffixed,8,2);
memo1.Lines.Add(s);//Вывод значений в memo
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
i:integer;
begin
image1.Canvas.FillRect(clientrect);//очистка image
for i:=1 to n do
Begin
Stringgrid1.cells[1,i]:=' ';// очистка ряда с X
Stringgrid1.cells[2,i]:=' ';// очистка ряда с Y
end;
Memo1.Clear;//очистка memo
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Close;//закрытие программы
end;
procedure TForm1.Button4Click(Sender: TObject);
var
i,v,c,x0,y0:integer;
minX,maxX,minY,maxY:extended;
begin
minX:=x[1];maxX:=x[1];
minY:=y[1];maxY:=y[1];
for i:=2 to n do
begin
if x[i]<minX then minX:=x[i];//поиск минимального X
if x[i]>maxX then maxX:=x[i];//поиск максимального X
if y[i]<minY then minY:=y[i];//поиск минимального Y
if x[i]>maxY then maxY:=y[i];//поиск максимального X
end;
v:=2;//начальная высота
c:=5;
With image1,Canvas do
Begin
pen.Color:=clRed;x0:=150; y0:=150;//задание цвета карандаша
x0:=150;y0:=150;
MoveTo(x0,0); LineTo(x0,0+height);
MoveTo(0,y0); LineTo(0+Width,y0);
Font.Size:=14;
TextOut(0+Width,y0,'X');
TextOut(x0,0+height,'Y');//задание осей координат
For i:=1 to n do
begin
xr[i]:=c+Round((x[i]-minX)/(maxX-minX)*(Width-2*c));
yr[i]:=Height-c-Round((y[i]-minY)/(maxY-minY)*(Width-2*c));
MoveTo(xr[1],yr[1]);//перемещение из начальной позиции в заданную конечную
end;
for i:=1 to n do LineTo(xr[i],yr[i]);
for i:=1 to n do
Rectangle(xr[i]-v,yr[i]-v,xr[i]+v,yr[i]+v);//прямоугольник вместо точек
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
i:integer;
begin
n:=50;
Xn:=3;
Xk:=10;
Stringgrid1.RowCount:=n+1 ;
Stringgrid1.cells[0,0]:='№';
Stringgrid1.cells[1,0]:='X';
stringgrid1.cells[2,0]:='Y';
for i:=1 to n do
Stringgrid1.cells[0,i]:=''+inttostr(i);
with image1.canvas do
begin
pen.Color:=clred;
Brush.Color:=clwhite;
fillrect(clientrect);
end;
end;
end.
|