![]() |
|
|
#1
|
||||
|
||||
|
Код:
function Xi(n: integer): extended; begin Result := (m - n + 1) * power(x, n) / fact(n); end; |
|
#2
|
||||
|
||||
|
Так при положительном m >=n и не будет никогда 0. А вообще дайте конкретные значения всех переменных и что ожидается в ответе, тогда и будем разбираться
|
|
#3
|
||||
|
||||
|
Должен же быть 0 всегда при х=0. Поэтому все выражение должно обращаться в него же, а у меня, например, при m = 4, n = 0, x = 0 выдает ответ 5, т.е. пауэр возвращает 1..
Вот полный код: Код:
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils, Math;
const
eps = 0.001;
var
x: extended;
m: integer;
function Virajenie: extended;
begin
result := power(1 + x, m);
end;
function Fact(n: integer): integer;
begin
if n > 1
then Fact := n * Fact(n - 1)
else Fact := 1;
end;
function Xi(n: integer): extended;
begin
Result := (m - n + 1) * power(x, n) / fact(n);
end;
function Ryad: extended;
var
n: integer;
buf: extended;
begin
n := 0;
Result := 0;
repeat
buf := Xi(n);
writeln('x[',n,'] = ', buf:6:4);
Result := Result + buf;
inc(n);
until abs(xi(n) - xi(n - 1)) < eps;
begin
write('M = ');
readln(m);
x := 0;
writeln('Virajenie = ', Virajenie:6:4);
writeln('Ryad = ', Ryad:6:4);
readln;
end.Последний раз редактировалось Kpyc, 23.10.2011 в 18:51. |
|
#4
|
|||
|
|||
|
и правильно!
любое число в нулевой степени даст 1 Но надо еще помнить что power вычисляет степень через логарифмирование поэтому например power(-4,1.5) даст ошибку. |
|
#5
|
||||
|
||||
|
Ок, мне надо для x:[-0.6;0.5] доказать тождество:
(1+x)^m = 1 + mx + m (m - 1) x^2 / 2! + ... + m (m-1) ... (m - n + 1) x^n / n! + .... Выдает уж очень разные числа, в чем может быть причина? Думал проблема в этом, а раз нет, то в чем? UPD тему можно закрывать, проблема была в неверном разложении в ряд. Последний раз редактировалось Kpyc, 24.10.2011 в 16:19. |