Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.11.2008, 13:50   #1
Fonarik
 
Регистрация: 28.10.2008
Сообщений: 9
По умолчанию Решить задачу с помощью подпрограмм

Прошу помощи, т.к. не получается. Задача:
Найти сумму (S) значения функции, где x:=[x1;x2] (x1:=0,01; x2:=0,1)
Функция:
cos(k*pi/4)*exp(k*ln(x))/k!

h =шаг изменения х = 0,01;

1e Значение S:=1;

Вначале мы делали эту задачу с использованием операторов цикла, получалось вот так:
Код:
procedure TForm2.FormCreate(Sender: TObject);
begin
Memo1.Clear;
Edit1.Text:='0,01';
Edit2.Text:='0,1';
Edit3.Text:='0,01';
Edit4.Text:='5';
end;

procedure TForm2.Button1Click(Sender: TObject);
var x1,x2,x,h,a,s,y:extended;
    n,k:integer;
begin
memo1.clear;
x1:=strtofloat(Edit1.text);
x2:=strtofloat(edit2.text);
h:=strtofloat(edit3.Text);
n:=strtoint(edit4.text);
x:=x1;
REPEAT
s:=1;
a:=1;
for k:=1 to n do begin
a:=a*x/k;
s:=s+a*cos(k*pi/4);

end;
Memo1.Lines.Add('x='+floattostrF(x,ffFixed,4,2)+'  s='+floattostrF(s,ffFixed,8,7));
x:=x+h;
Until x>x2;
end;
end.
Буду рад за любую помощь
Fonarik вне форума Ответить с цитированием
Старый 07.11.2008, 22:30   #2
Fonarik
 
Регистрация: 28.10.2008
Сообщений: 9
По умолчанию

собственно сам задал вопрос, сам добился результата, возможно у кого то будет похожее, вот код:
Код:
var x1,x2,h,s,y:extended;
n:integer;
  Form1: TForm1;

implementation

{$R *.dfm}

function sx (x1,h:extended;n:integer):extended;
var a,s: extended;
k:integer;
begin
s:=1; a:=1;
begin
for k:=1 to n do
              begin
a:=a*x1/k;
s:=s+a*cos(k*pi/4);
               end;
end;
sx:=s;
          end;

function yx(x1:extended):extended;
begin
y:=exp(x1*cos(pi/4))*cos(x1*sin(pi/4));
yx:=y;
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
memo1.clear;
x1:=0.01; Edit1.text:=floattostr(x1);
x2:=0.1; Edit2.text:=floattostr(x2);
h:=0.01; Edit3.Text:=floattostr(h);
n:=5; Edit4.Text:=inttostr(n);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
memo1.clear;
x1:=strtofloat(Edit1.text);
x2:=strtofloat(edit2.text);
h:=strtofloat(edit3.Text);
n:=strtoint(edit4.text);

while x1<x2 do
begin
Memo1.Lines.Add('x='+floattostrF(x1,ffFixed,4,2)+'  s='+floattostrF(sx(x1,h,n),ffFixed,8,7)+'  y='+floattostrF(yx(x1),ffFixed,8,7));
x1:=x1+h;
end;
end;
Fonarik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите решить задачу. Кронос Помощь студентам 3 28.10.2007 14:11
проблему возможно решить с помощью хранимой процедуры на SQL? yulia БД в Delphi 8 24.05.2007 20:25