|
Главная | Правила | Регистрация | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
![]() |
|
Опции темы | Опции просмотра |
![]() |
#1 (permalink) |
Новичок
Регистрация: 25.05.2011
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
![]() Программа:вычисления таблицы значений функции Y=f(X,AB) , построение графика, при заданных значениях аргумента Х и параметра А. Параметр В принимает значение, численно равное корню нелинейного уравнения.Входные данные: Xn – начальное значение аргумента Х Dx – шаг изменения аргумента Х N - значений параметра, изменяемого от значения An с шагом Da An - начальное значение параметра А Ak – конечное значение параметра А Da – шаг изменения параметра А В – параметр, принимающий значение, равное корню нелинейного уравнения Главная функция: F:=A*B*(sin(x)*sin(x))/sqrt(x); Код: Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, TeEngine, Series, ExtCtrls, TeeProcs, Chart, Grids; type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Edit5: TEdit; Edit6: TEdit; StringGrid1: TStringGrid; StringGrid2: TStringGrid; Chart1: TChart; Edit7: TEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; Button1: TButton; Button2: TButton; Label9: TLabel; Label10: TLabel; procedure Button1Click(Sender: TObject); procedure Edit6Change(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} function FB(x,e:real):real; var x0:real; begin repeat x0:=x; x:=sqrt(2-exp(-x0)); until(abs(x-x0)<e); FB:=x; end; function F(x,A,B:real):real; begin F:=A*B*(sin(x)*sin(x))/sqrt(x); end; {procedure Tab(Xn,Dx:real; N,j:integer; B:real; A:mas1); var i:integer; X,Y:real; begin X:=Xn; begin for i:=j to (N+j) do begin if (x<=0) then begin StringGrid2.Cells[1,i]:=FloatToStrF(x,fffixed,4,2); StringGrid2.Cells[2,i]:=FloatToStrF(A[i],fffixed,4,2); StringGrid2.Cells[3,i]:='Ошибка'; end else begin Y:=F(X,A[i],B); StringGrid2.Cells[1,i]:=FloatToStrF(x,fffixed,4,2); StringGrid2.Cells[2,i]:=FloatToStrF(A[i],fffixed,4,2); StringGrid2.Cells[3,i]:=FloatToStrF(Y,fffixed,9,7); end; end; end;} procedure TForm1.Button1Click(Sender: TObject); const Nmax=20; type mas1=array[1..Nmax] of extended; var N,i,j,l,k:integer; Xn,Xk,Dx,B,x,y,e:real; A:mas1; begin for i:=0 to (StrToInt(Edit6.Text)-1) do begin Form1.Chart1.Series[i].Active:=True; end; x:=StrToFloat(Edit1.Text); e:=StrToFloat(Edit2.Text); Xn:=StrToFloat(Edit3.Text); Xk:=StrToFloat(Edit4.Text); Dx:=StrToFloat(Edit5.Text); N:=StrToInt(Edit6.Text); for i:=1 to N do begin A[i]:=StrToFloat(StringGrid1.Cells[1,i]); end; l:=Trunc((Xk-Xn)/Dx+1); StringGrid2.RowCount:=(l*N+1); StringGrid2.Cells[0,0]:='№'; StringGrid2.Cells[1,0]:='X'; StringGrid2.Cells[2,0]:='A[i]'; StringGrid2.Cells[3,0]:='Y'; for i:=1 to (l*N+1) do StringGrid2.Cells[0,i]:=IntToStr(i); B:=FB(x,e); Edit7.Text:=FloatToStrF(B,fffixed,10,7); k:=1; begin for i:=1 to N do begin Xn:=StrToFloat(Edit3.Text); for j:=1 to l+1 do begin X:=Xn; begin if (x<=0) then begin StringGrid2.Cells[1,k]:=FloatToStrF(x,fffixed,4,2); StringGrid2.Cells[2,k]:=FloatToStrF(A[i],fffixed,4,2); StringGrid2.Cells[3,k]:='Ошибка'; k:=k+1; end else begin Y:=F(X,A[i],B); StringGrid2.Cells[1,k]:=FloatToStrF(x,fffixed,4,2); StringGrid2.Cells[2,k]:=FloatToStrF(A[i],fffixed,4,2); StringGrid2.Cells[3,k]:=FloatToStrF(Y,fffixed,9,7); Form1.Chart1.Series[i-1].AddXY(x,y); k:=k+1; end; end; Xn:=Xn+Dx; end; end; end; end; procedure TForm1.Edit6Change(Sender: TObject); var k,i:integer; begin StringGrid1.Cells[0,0]:='№'; StringGrid1.Cells[1,0]:='А'; k:=StrToInt(Edit6.Text); StringGrid1.RowCount:=(k+1); for i:=1 to k do begin StringGrid1.Cells[0,i]:=IntToStr(i); Form1.Chart1.AddSeries(TLineSeries.Create(Self)); end; end; procedure TForm1.Button2Click(Sender: TObject); var i:integer; begin Edit1.Text:=''; Edit2.Text:=''; Edit3.Text:=''; Edit4.Text:=''; Edit5.Text:=''; Edit7.Text:=''; StringGrid1.Cells[0,0]:=''; StringGrid1.Cells[1,0]:=''; StringGrid1.RowCount:=(3); for i:=1 to 3 do begin StringGrid1.Cells[0,i]:=''; StringGrid1.Cells[1,i]:=''; StringGrid1.Cells[2,i]:=''; end; StringGrid2.RowCount:=(5); for i:=1 to 5 do begin StringGrid2.Cells[0,i]:=''; StringGrid2.Cells[1,i]:=''; StringGrid2.Cells[2,i]:=''; StringGrid2.Cells[3,i]:=''; StringGrid2.Cells[4,i]:=''; end; StringGrid2.Cells[0,0]:=''; StringGrid2.Cells[1,0]:=''; StringGrid2.Cells[2,0]:=''; StringGrid2.Cells[3,0]:=''; for i:=0 to (StrToInt(Edit6.Text)-1) do begin Form1.Chart1.Series[i].Clear; Form1.Chart1.Series[i].Active:=False; end; end; end. |
![]() |
![]() |
![]() |
|
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
В решении проблемы вам так же могут помочь аналогичные обсуждения Дайте, пожалуйста, описание внутреннего устройства SATA HDD для ноутбука Описание платы Создание программы в Delphi 7 или TurboPascal |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
![]() |
Опции темы | |
Опции просмотра | |
|
|