Вывести в таблицу локальные максимумы и минимумы функции y=sin(a*x^2)

Текст задания :

Вывести значение аргумента при изменении которого от нуля до данного значения, число локальных минимумов и максимумов функции y=sin(a*x^2) достигнет 20.

Решение :

Создаем новый VCL  проект. Бросаем на форму компоненты

TStringGrid; TButton;TEdit;TLabel;и TLabel;

Получится должно что-то вроде этого :

Снимок

Вывод таблицы значений будем осуществлять в компонент StringGrid1.

Единственную кнопку запрограммируем следующим образом :

[cc lang=»delphi» tab_size=»2″ line_numbers=»false» no_links=»false»]

procedure TForm1.Button1Click(Sender: TObject);
var
YY, AA, XX, TT, n, i: integer;
begin
with StringGrid1 do
for i := 0 to ColCount — 1 do
Cols[i].Clear;
AA := strtoint(Form1.Edit1.Text);
StringGrid1.RowCount := 1;
StringGrid1.Rows[0].Strings[1] := ‘Y’;
StringGrid1.Rows[0].Strings[2] := ‘A’;
StringGrid1.Rows[0].Strings[3] := ‘X’;
TT := 1;
n := 0;
XX := 0;
while n < 20 do
begin
YY := Round(Sin(AA * XX * XX));
StringGrid1.Rows[TT].Strings[0] := inttostr(TT);
StringGrid1.Rows[TT].Strings[1] := inttostr(YY);
StringGrid1.Rows[TT].Strings[2] := inttostr(AA);
StringGrid1.Rows[TT].Strings[3] := inttostr(XX);
if (YY = 1) or (YY = -1) then
n := n + 1;
if n = 20 then
break;
inc(TT);
inc(XX);
StringGrid1.RowCount := TT + 1;
end;
ShowMessage(‘X= ‘ + inttostr(XX));
end;

[/cc]

Аргумент a будет задаваться из компонента Edit1 .

В конце работы процедуры мы получим сообщение со значением переменной x.

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *