|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
как написать формулу
есть формула.вроде написал код.а считает не правильно нифига.помогите разобраться или может свой вариант предложите.при вводе в 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; Последний раз редактировалось rain, 19.03.2008 в 02:43. |
#2
|
|||
|
|||
На рисунке b = 1/ (sum), а у тебя формула: b:=1/(exp(ln(g)*k)/F); Где сумма?
Причём, у меня ответ 1 с хвостиком, да и в циклах пределы, похоже, не правильны (т.е. нет, напр., 0!) |
#3
|
|||
|
|||
дак а цикл for не выполняет функцию суммы например от 0 до n???
exp(ln(g)*k)--это g в степени k. F--это факториал от k. еси я нетак понял то подскажите как правильно сделать.. |
#4
|
|||
|
|||
Начать с правильного расчёта итоговой суммы. Надо:
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
|
|||
|
|||
о пасиба))помоголо)
|