Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 21.12.2010, 20:59   #1 (permalink)
Dezertirov
Новичок
 
Регистрация: 21.12.2010
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Red face Вычислить значение суммы

Programm qq;
Var i,j,fact,n:integer;
s,x:real;
begin
writeln;
write('Vvedite n=');
readln(n);
write('Vvedite x=');
readln(x);
s:=0;
for i:=1 to n do begin
fact:=1;
for j:=1 to i do
Fact:=fact*j;
s:=s+EXP(N*ln(1))*(EXP(2*N)*ln(X))/2*N*fact;
end;
writeln('s=',s);
readln;
end.


Имеется основа, но не понимаю как в нее поставить решение
Миниатюры
aacuiyiiue.jpg  
Dezertirov вне форума   Ответить с цитированием

Старый 21.12.2010, 20:59
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Вот темы, которые вам безусловно будут полезны

Вычислить методом тарапеции в VBA
Каким-то образом прыгает значение множителя
Вычислить сумму
Найти среднее значение (двумерный массив)
Найти наибольшее отрицательное значение

Старый 22.12.2010, 11:55   #2 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Вот вариант, хоть и немного нерациональный из-за большого числа вспомогательных переменных, но он будет работать куда как быстрее вашего кода.
Код:
var x,stx,s:real;
     fact:longint;
     i,n,sign:integer;
begin
writeln('Enter expression n');
readln(n);
writeln('Enter expression x');
readln(x);
fact:=1; s:=1; stx:=1;
for i:=1 to n do begin
if i mod 2=1 then sign:=-1 else sign:=1;
stx:=stx*x;
fact:=fact*i;
s:=s+sign*stx/fact; end;
writeln('s=',s);
readln
end.
__________________
Убить всех человеков!
AlexZir вне форума   Ответить с цитированием
Старый 22.12.2010, 13:12   #3 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Уважаемые господа, допрежь всего позвольте заметить, что формула написана неверно: экспонента разлагается не в знакопеременный, а в знакопостоянный ряд, т.е. там везде должны быть плюсы и никаких минусов. С учетом этой поправки имею предложить свой код, по-моему самый простой:
Код:
VAR
 a,S,x:REAL;
 N:Word;
 i:Integer;
BEGIN
 Write('N= ');
 ReadLn(N);
 Write('x= ');
 ReadLn(x);
 a:=1;
 S:=1;
 For i:=1 to N do
  begin
   a:=a*x/i;
   S:=S+a;
  end;
 WriteLn('S=',S:10:5);
 WriteLn('Exp(x)=',Exp(x):10:5);
 ReadLn;
END.
Ну или если слева стоит не Exp(x), а Exp(-x), то ряд будет такой, как написано, и тогда:
Код:
VAR
 a,S,x:REAL;
 N:Word;
 i:Integer;
BEGIN
 Write('N= ');
 ReadLn(N);
 Write('x= ');
 ReadLn(x);
 a:=1;
 S:=1;
 For i:=1 to N do
  begin
   a:=-a*x/i;
   S:=S+a;
  end;
 WriteLn('S=',S:10:5);
 WriteLn('Exp(-x)=',Exp(-x):10:5);
 ReadLn;
END.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

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


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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 15:11.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.