Показать сообщение отдельно
Старый 20.03.2019, 12:51   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

И молчанье гробовое было ему ответом...
Ладно, вот Вам программа. Результат выводится в файл, каковой можно использовать для построения графиков (самостоятельного!!!):
Код:
Var
 x:Real;
 n,j:ShortInt;
 P:Array[1..5,-10..10] of Real;
 f:Text;

function Nfact(q:Byte):LongInt;
var
  i:Byte;
  fact:LongInt;
begin
  if q=0 then fact:=1 else
    begin
      fact:=1;
      for i:=1 to q do
        fact:=fact*i;
    end;
  Nfact:=fact;
end;

function Sign(d:Byte):ShortInt;
begin
 if ((d mod 2)=0) then Sign:=1 else Sign:=-1;
end;

function X2np(X:Real; n:Byte):Real;
Var i:Byte;
    Y:Real;
begin
  if n=0 then X2np:=1 else
  if n=1 then X2np:=X else
   begin
    Y:=X;
    for i:=2 to n do Y:=Y*X;
    X2np:=Y;
   end;
end;


function Pnx(n:byte; x:Real):Real;
var
 Sum:Real;
 k:Byte;
begin
 Sum:=0;
 for k:=0 to (n div 2) do
  Sum:=Sum+Sign(k)*Nfact(2*(n-k))/Nfact(k)/Nfact(n-k)/Nfact(n-2*k)*X2np(x,(n-2*k));
 Pnx:=Sum/X2np(2,n);
end;

Begin
 for n:=1 to 5 do
  for j:=-10 to 10 do
   P[n,j]:=Pnx(n,j/10);
 Assign(f,'Result.txt');
 ReWrite(f);
 Writeln(f,'                   n=1         n=2         n=3         n=4         n=5');
 for j:=-10 to 10 do
  begin
   write(f,' x = ',j/10:4:1,'   ');
   for n:=1 to 5 do write(f,P[n,j]:12:7);
   Writeln(f);
  end;
 Close(f);
End.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070