![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Значит вот какое дело.
У меня имеется код программы которая строит графики, а конкретно для функции 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. |
#2
|
|||
|
|||
![]() 64-я строка в приведенном коде.
Код:
Y[i]:=sqr(x[i])+exp(-1*x[i])+sqrt(3); //расчет точек по координате |
#3
|
|||
|
|||
![]() Цитата:
Вот спасибо, очень сильно помогли, дай бог вам здоровья ![]() |
#4
|
|||
|
|||
![]() Рано я сказал спасибо
![]() Есть еще кое что, программа строит график в виде Снимок2.JPG А мне необходимо чтобы строил в виде Снимок.JPG как мне добиться этого? Код:
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; 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); dx:=(Xk-Xn)/(n-1);//расчет шага for i:=1 to n do begin X[i]:=Xn+(i-1)*dx;//расчет точек по абсциссе. Y[i]:=sqr(x[i])+exp(-1*x[i])+sqrt(3); //расчет точек по ординате. 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. |
#5
|
|||
|
|||
![]() А с фига ли?
a^x всегда растет быстрее, чем x^n соотв. это не будет параболой, а будет экспонентой. |
#6
|
|||
|
|||
![]() Я имел в виду, как сделать чтобы в моей программе были подписаны оси координат, и может некоторые значения, а то просто голый график.
|