Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.09.2011, 10:43   #1
Татьана
Пользователь
 
Регистрация: 17.09.2011
Сообщений: 35
По умолчанию вычисление

Дано действительное число.Вычислить: sin(x)=x/1!-(x^3)/3!+(x^5)/5!-(x^7)/7!-...((-1)^n)*(x^(2n+1))/(2n+1)!+...
Татьана вне форума Ответить с цитированием
Старый 25.09.2011, 10:50   #2
Step_UA
Форумчанин
 
Аватар для Step_UA
 
Регистрация: 09.06.2011
Сообщений: 388
По умолчанию

Не по теме:
вычислил
на неконкретные вопросы даю неконкретные ответы ...
Step_UA вне форума Ответить с цитированием
Старый 25.09.2011, 10:59   #3
Татьана
Пользователь
 
Регистрация: 17.09.2011
Сообщений: 35
По умолчанию

мне нужно решение задачи на паскале
Татьана вне форума Ответить с цитированием
Старый 25.09.2011, 10:59   #4
VadikV
Форумчанин
 
Аватар для VadikV
 
Регистрация: 08.01.2011
Сообщений: 226
По умолчанию

в чем проблема, то? где наработки? или нужно все за тебя написать? ну тогда контакты в подписи - обращайся.
icq 223-630-454
e-mail vysotskiy@list.ru
сайт http://www.big-library.net/
VadikV вне форума Ответить с цитированием
Старый 25.09.2011, 11:16   #5
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Код:
uses crt;
var x,e,s,t,st:real;
    n,i:integer;
begin
clrscr;
write('x=');
readln(x);
st:=sin(x);{вычисленное аналитически значение}
{вычисление для заданного N членов ряда}
write('Введите количество членов ряда n=');
readln(n);
s:=x;{нулевое значение}
t:=x;
for i:=1 to n do
 begin
  t:=-t*x*x/(2*i*(2*i+1));{меняем знак, домножаем на x^2, делим на 2 следующих числа}
  s:=s+t;{прибавляем}
 end;
writeln('При N=',n,' sin(',x:0:2,')=',s:0:6,' аналитически=',st:0:6);
{Вычисление при заданной точности (задаем значение eps, порядок 0.0001-0.00000001)}
repeat
write('Введите точность вычислений больше 0 и не более 0.1 e=');
readln(e);
until(e>0)and(e<=0.1);{нужно для проверки ввода, чтобы пользователь не ввел типа 10000}
{считаем сумму членов ряда больше eps}
s:=x;
t:=x;
i:=1;
while abs(t)>=e do
  begin
   t:=-t*x*x/(2*i*(2*i+1));
   s:=s+t;
   inc(i);
 end;
writeln('При точности eps=',e:0:6,' sin(',x:0:2,')=',s:0:6,' аналитически=',st:0:6);
readln
end.
puporev вне форума Ответить с цитированием
Старый 25.09.2011, 11:17   #6
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Если нужен 1 вариант, второй выкиньте.
puporev вне форума Ответить с цитированием
Старый 25.09.2011, 11:26   #7
Татьана
Пользователь
 
Регистрация: 17.09.2011
Сообщений: 35
По умолчанию

объясните пожалуйста хотя бы порядок действий, а на паскале я попробую сама написать
Татьана вне форума Ответить с цитированием
Старый 25.09.2011, 11:29   #8
Татьана
Пользователь
 
Регистрация: 17.09.2011
Сообщений: 35
По умолчанию

Бооольшое вам спасибо )))
Татьана вне форума Ответить с цитированием
Старый 04.10.2011, 13:33   #9
Татьана
Пользователь
 
Регистрация: 17.09.2011
Сообщений: 35
По умолчанию

t:=-t*x*x/(2*i*(2*i+1))-как понять эту строчку???
Татьана вне форума Ответить с цитированием
Старый 04.10.2011, 13:53   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
t:=-t*x*x/(2*i*(2*i+1))-как понять эту строчку???
это выведена т.н. "рекуррентная формула" - это когда следущий член последовательности выражается через предыдущий. (чаще всего берётся формула вычисления i+1 члена последовательности и делится на формулу вычисления i-го члена.
полученная формула в данном случае и используется:
чтобы найти следущий член последовательности,
мы берём предыдущий член последовательности, умножаем его на -1 (т.е. все члены последовательности будут иметь чередующийся знак, если предыдущий был положительный, то этот будет отрицательный и наоборот), умножаем его на X в квадрате и всё это делим на произведение, которое позволяет нам "довычислить" факториал в знаменателе на основании предыдущего числа.

поясню это на примере.
возьмём 4-й чл. последовательности (т.е. i=3 - первый, где X/1! считается в программе нулевым членом)
ну, в предыдущем случае в знаменателе факториал 5!, то в очередном будет
5! (мы его не пишем, он уже входит в предыдущий член, у нас он в t)
умножить на (2*i*(2*i+1)) = 5!*6*7 = 1*2*3*4*5*6*7 = 7!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычисление по формуле.. stud3nt Общие вопросы Delphi 2 09.11.2010 18:33
Вычисление срока Neymexa Microsoft Office Excel 6 15.02.2010 21:50
Вычисление в форме valerij Microsoft Office Excel 4 27.06.2009 01:47
Вычисление felmor Паскаль, Turbo Pascal, PascalABC.NET 0 26.12.2008 17:45
вычисление f(x) felmor Паскаль, Turbo Pascal, PascalABC.NET 0 24.12.2008 22:11