Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вывести таблицу значений Y (x) и ее разлож. S(x) 
:(
    Опции темы
Yaroma11
Дата 28.1.2014, 23:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 4.4.2012

Репутация: нет
Всего: нет



Помогите, пожалуйста, не первый день уже воюю.
Мое задание:
Вывести на экран таблицу значений функции y(x) и ее разложения в ряд s(x) для x изменяю-щихся от xn до xk с заданным количеством шагов M ( h = (Xn -Xk)/M) и точностью e (близость значе-ний S(x) и Y(x) во всем диапазоне значений x указывает на правильность вычисления S(x) и Y(x)). При выполнении задания S(x) и Y(x) поместить в функции. В местах возможного возникновения ошибок использовать конструкции для обработки исключительных ситуаций.
user posted image
Непонимаю зачем тут точность(е) и куда ее пихать. Мне бы только код где считается эта таблица. Вот что я напилил:

Код

unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, Math;

type
  TmainForm = class(TForm)
    edit_m: TEdit;
    label_Xn: TLabel;
    label_Xk: TLabel;
    label_m: TLabel;
    label_e: TLabel;
    Memo_Result: TMemo;
    runButton: TButton;
    buttonExit: TButton;
    procedure FormCreate(Sender: TObject);
    procedure runButtonClick(Sender: TObject);
    procedure buttonExitClick(Sender: TObject);

  private
    { Private declarations }
  end;
var
  mainForm: TmainForm;
const
  Xmin : extended = 0.1;          //Поменять для др. вар.
  Xmax : extended = 0.7;         //Поменять для др. вар.
  e : extended =  0.001;        //Поменять для др. вар.
implementation
{$R *.dfm}

procedure TmainForm.FormCreate(Sender: TObject);
begin
  label_Xn.Caption := 'Xn = ' + FloatToStr(Xmin);
  label_Xk.Caption := 'Xk = ' + FloatToStr(Xmax);
  edit_m.Text := '';
 // label_e.Caption := 'e = ' + FloatToStr(e);
end;


procedure drawTableHeader();
begin
  mainForm.Memo_Result.Clear;
  mainForm.Memo_Result.Lines.Add('------------------------------------');
  mainForm.Memo_Result.Lines.Add('|   x   |   Y(x)    |   S(x)    |');
  mainForm.Memo_Result.Lines.Add('------------------------------------');
end;

function getStep(Xn, Xk: extended; m: integer): Extended;
var step: Extended;
begin
  step := (Xk - Xn) / m;
  result := step;
end;

function factorial(n: integer):Integer;
begin
  result := n;
  while  n > 0 do
  begin
    result := result * n;
    Dec(n);      //декремент
  end;
end;

function calculateY(x: Extended): Extended;
begin
  result := (1 + (2*sqr(x))) * exp(sqr(x));                 //Поменять для др. вар.
// result := exp(x/2);
end;

function calculateS(x: extended; n: integer): Extended;
var p: extended;
begin
    result := (((2*n + 1)) * (Power(x, 2*n)))/factorial(n);               //Поменять для др. вар.
  //result := Power(2*x, n) / factorial(n);
end;

function getString(Xn, Y, S: extended):String;
begin
  result := '|  ' + FloatToStr(Xn) + '|' + FloatToStr(Y) + '|' + FloatToStr(S) + '|';
end;


procedure run();
var m, counter: integer;
var resultY, resultS, p, y, Sum: extended;
var Xn:extended;
var Xk:extended;
begin
  Xn:= Xmin;
  Xk:= Xmax;
  m := StrToInt(mainForm.edit_m.Text);
  drawTableHeader();
  while Xn <= Xk+getStep(Xmin, Xmax, m)/2 do
  begin
    Sum := 1;
    counter:=1;
    while counter <= m do
      begin;
         Sum := Sum + calculateS(Xn, counter);
         Inc(counter);
      end;
    mainForm.Memo_Result.Lines.Add(getString(Xn, calculateY(Xn), Sum));
    Xn := Xn + getStep(Xmin, Xmax, m);
  end;
end;



procedure TmainForm.runButtonClick(Sender: TObject);
begin
  run();
end;

procedure TmainForm.buttonExitClick(Sender: TObject);
begin
  close;
end;

end.


Это сообщение отредактировал(а) Yaroma11 - 28.1.2014, 23:15

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  Снимок.JPG 17,22 Kb
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1774 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.