21.12.2010, 20:59 | #1 (permalink) |
Новичок
Регистрация: 21.12.2010
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Вычислить значение суммы
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. Имеется основа, но не понимаю как в нее поставить решение |
21.12.2010, 20:59 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Вот темы, которые вам безусловно будут полезны Вычислить методом тарапеции в VBA Каким-то образом прыгает значение множителя Вычислить сумму Найти среднее значение (двумерный массив) Найти наибольшее отрицательное значение |
22.12.2010, 11:55 | #2 (permalink) |
support
Регистрация: 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.
__________________
Убить всех человеков! |
22.12.2010, 13:12 | #3 (permalink) |
Специалист
Регистрация: 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. Код:
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. |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|