Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 19.03.2008, 02:36
rain rain вне форума
Прохожий
 
Регистрация: 19.03.2008
Сообщения: 6
Репутация: 10
По умолчанию как написать формулу

есть формула.вроде написал код.а считает не правильно нифига.помогите разобраться или может свой вариант предложите.при вводе в Edit1 значение "3" результат должен быть равен b=0.1854, а у мну выдает 0.972

код:
Код:
procedure TForm1.Button1Click(Sender: TObject);
const g=1.8;
var
F,Q,n,k:integer;
b:real;
begin
n:=StrToInt(Edit1.Text);
for k:=0 to n do begin
F:=1;
Q:=1;
Repeat
F:=F*Q;
Q:=Q+1;
Until Q>k;
b:=1/(exp(ln(g)*k)/F);
end;
label2.Caption:=FloatToStr(b);
end;
Пользуемся тэгами
Изображения
Тип файла: jpg Безымянный.JPG (2.5 Кбайт, 8 просмотров)

Последний раз редактировалось rain, 19.03.2008 в 02:43.
Ответить с цитированием
  #2  
Старый 19.03.2008, 12:51
AlexSku AlexSku вне форума
Специалист
 
Регистрация: 07.05.2007
Адрес: Москва
Сообщения: 884
Репутация: 21699
По умолчанию

На рисунке b = 1/ (sum), а у тебя формула: b:=1/(exp(ln(g)*k)/F); Где сумма?

Причём, у меня ответ 1 с хвостиком, да и в циклах пределы, похоже, не правильны (т.е. нет, напр., 0!)
Ответить с цитированием
  #3  
Старый 19.03.2008, 23:17
rain rain вне форума
Прохожий
 
Регистрация: 19.03.2008
Сообщения: 6
Репутация: 10
По умолчанию

дак а цикл for не выполняет функцию суммы например от 0 до n???

exp(ln(g)*k)--это g в степени k.
F--это факториал от k.

еси я нетак понял то подскажите как правильно сделать..
Ответить с цитированием
  #4  
Старый 20.03.2008, 12:07
AlexSku AlexSku вне форума
Специалист
 
Регистрация: 07.05.2007
Адрес: Москва
Сообщения: 884
Репутация: 21699
По умолчанию

Начать с правильного расчёта итоговой суммы. Надо:
P = 1 / (a0 + a1 +...),
а вы предлагаете (n+1) раз подсчитать значение "b", при этом на каждой итерации цикла новое значение затирает старое и только последнее значение выводится в качестве результата. Надо так:
Код:
S:= 0.0;
for k:=0 to n do
begin
  ...
  b:= <g в степени k> / <k!>;
  S:= S + b;      { или не использовать "b", а сразу формулу из предыдущей строки засунуть в эту строку }
end;
P:= 1.0 / S;
Ответить с цитированием
  #5  
Старый 22.03.2008, 10:33
rain rain вне форума
Прохожий
 
Регистрация: 19.03.2008
Сообщения: 6
Репутация: 10
По умолчанию

о пасиба))помоголо)
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 08:28.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter