Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.12.31;
Скачать: CL | DM;

Вниз

ПОМОГИТЕ РАЗОБРАТЬСЯ С ЗАДАЧЕЙ   Найти похожие ветки 

 
Караед   (2006-12-07 17:05) [0]

Помогите пожалуйста с задачей не могу ни как её сделать:
Для данного x (вещественное число, вводится с клавиатуры) вычислить значение выражения:
x – x3/3! + x5/5! – x7/7! + x9/9! – x11/11! +  … .Вычисления производить до тех пор, пока разница между двумя соседними слагаемыми не станет меньше 0,00001 (выражение N! Называется "N факториал" и вычисляется как произведение всех чисел от 1 до N: N! = 1*2*3*4…*N). Для проверки сравните результат с синусом x. Правильно реализованные в программе вычисления в результате должны давать расхождение только в последних знаках после запятой.
Данную задачу нужно реализовать с помощью цикла While на PASCAL`Е(и ни как иначе).


 
iXT   (2006-12-07 17:12) [1]

С чем помочь? Написать функцию?


 
novill ©   (2006-12-07 17:18) [2]

> [0] Караед   (07.12.06 17:05)
Тут программы бесплатно не пишут. А помогают только тем,кто пытается делать сам :)

Как ты пробовал это сделать?


 
Андрей Сенченко ©   (2006-12-07 17:18) [3]

While abs(предыдущее - текущее) > 0,00001 do
begin

end;


 
Desdechado ©   (2006-12-07 17:19) [4]

x3/3!
это чего


 
Jeer ©   (2006-12-07 17:45) [5]


> Desdechado ©   (07.12.06 17:19) [4]



> это чего


Это попытка черного едальщика выругаться формулой.


 
Ega23 (from home)   (2006-12-07 18:51) [6]


> Данную задачу нужно реализовать с помощью цикла While на
> PASCAL`Е(и ни как иначе).


Сколько?


 
TUser ©   (2006-12-07 18:52) [7]

Интересно, сколько же местных все-таки нуждаются в расшифровке обозначения N!?


 
TUser ©   (2006-12-07 18:54) [8]

> и ни как иначе

Вот засада-то, а ведь наверняка есть стандартная функциевина в моделе math :)


 
Vga ©   (2006-12-07 19:21) [9]

function Series(x)
 local Res, OldRes, Power, Sign;
 OldRes=0;
 Res=x;
 Sign=-1;
 Pow=3;
 while math.abs(Res-OldRes)>0.0001 do
   OldRes=Res;
   Res=Res+Sign*(math.pow(x, Pow)/Fact(Pow));
   Pow=Pow+2;
   Sign=Sign*-1;
 end;
 return Res;
end;

Только это отнюдь не паскаль :)


 
Alien1769 ©   (2006-12-07 19:25) [10]

Напиши ход мыслей своих, даже без паскаля. А с паскалем можем помочь


 
Vga ©   (2006-12-07 19:26) [11]

> [10] Alien1769 ©   (07.12.06 19:25)

Это кому?


 
Alien1769 ©   (2006-12-07 19:29) [12]

автору ветки


 
Думкин ©   (2006-12-07 19:32) [13]

Тут недавно вычисляли синус 30-ю способами. Ищи в архивах. Удачи. Может до зачета успеешь.


 
Alien1769 ©   (2006-12-07 19:36) [14]


> Думкин ©   (07.12.06 19:32) [13]
> Тут недавно вычисляли синус 30-ю способами. Ищи в архивах.
>  Удачи. Может до зачета успеешь.


Ну вот все испортил, обидно :))


 
Думкин ©   (2006-12-07 19:44) [15]

> Alien1769 ©   (07.12.06 19:36) [14]

я? Да ты что? Код уже дали. :)
Но тут и такой момент. Если автор не почесался и не хочет, то вряд ли он и в архивы полезет. :)
К тому же после показа синуса, я бы на месте преподавателя предложил ему про косинус, а через неделю про экспоненту, через неделю про тангенс. А там и сессия закончится.


 
Vga ©   (2006-12-07 20:04) [16]

> [15] Думкин ©   (07.12.06 19:44)

Код не на паскале и с ошибкой :)


 
Думкин ©   (2006-12-08 05:57) [17]


> Vga ©   (07.12.06 20:04) [16]


> Ну вот все испортил, обидно :))


:)


 
Vga ©   (2006-12-08 14:16) [18]

> [17] Думкин ©   (08.12.06 05:57)

ТЗ внимательнее надо читать... Хотя при тестах ошибка на длину ряда не повлияла...


 
Vga ©   (2006-12-08 14:23) [19]

> внимательнее надо читать...

внимательнее надо было читать...


 
Думкин ©   (2006-12-08 14:25) [20]


> Vga ©   (08.12.06 14:23) [19]

Ну там что под слагаемым еще понимать, и под разностью.


> x9/9! – x11/11!

или

> x9/9! -(– x11/11!)


:)


 
Anatoly Podgoretsky ©   (2006-12-08 14:39) [21]

> Vga  (08.12.2006 14:23:19)  [19]

>> внимательнее надо читать...

> внимательнее надо было читать...

Первое правильнее, не последний и не первый раз.


 
Vga ©   (2006-12-08 15:26) [22]

> [21] Anatoly Podgoretsky ©   (08.12.06 14:39)

В общем случае, а в частном - малость попутал параметры, после перечитывания заметил и исправил.


 
Zeqfreed ©   (2006-12-08 15:36) [23]

Хм, написал на питоне:

#!/usr/bin/python

import math;

def factorial(n):
if (n < 2):
 return n
else:
 return factorial(n - 1)*n
 
acc = 0;
x = 1;
p = 1;
e = 0.000000001;

while (True):
a = (x**p) / factorial(p);
b = -(x**(p+2)) / factorial(p + 2);
acc += a + b;
p += 4;
if (abs(b - a) < e):
 break;
 
print acc;
print math.sin(x);


При x <> 1 вроде все правильно считает, а вот при x = 1 не сходится ряд? Я все правильно сделал?


 
Zeqfreed ©   (2006-12-08 15:38) [24]

Ай-яй-яй, форум съел отступы, смертельные для питона! :)


 
Jeer ©   (2006-12-08 15:41) [25]


> Zeqfreed ©   (08.12.06 15:38) [24]


Вот поэтому мы змей и не едим.


 
Vga ©   (2006-12-08 15:55) [26]

> [23] Zeqfreed ©   (08.12.06 15:36)

У меня при x=1 все нормально


 
Anatoly Podgoretsky ©   (2006-12-08 16:06) [27]

> Zeqfreed  (08.12.2006 15:38:24)  [24]

Что же ты так?
На форум вали, но и свою голову имей, вот пример каждая строка на один пробел больше, в первой 0 пробелов

0
 1
  2

   3
  2

 1
0


 
Zeqfreed ©   (2006-12-08 16:07) [28]


> У меня при x=1 все нормально

Все, разобрался. Оказывается, когда пишешь x = 1, то он рассматривает x как целое число и использует целочисленное деление. Следовательно, нужно писать x = 1.0.
Вот и доверяй этим интерпретаторам, то ли дело паскаль :)


 
Vga ©   (2006-12-08 16:09) [29]

> [28] Zeqfreed ©   (08.12.06 16:07)

Я писал в lua, в нем int отсутствует. Только number, в моей версии - double, хотя можно скомпилить с другим числовым типом, int например.


 
Zeqfreed ©   (2006-12-08 16:10) [30]


> Anatoly Podgoretsky ©   (08.12.06 16:06) [27]

В каком месте тогда съедаются пробелы/табуляции? Ведь съедает скрипт по одному пробелу от строки? Сейчас проведу эксперимент :)

1 Тут один пробел
 2 Тут два
  3 Здесь три
1 Здесь одна табуляция
 2 А здесь две


 
Zeqfreed ©   (2006-12-08 16:12) [31]

Ну вот, первый пробел и первая табуляция пропали, как и следовало ожидать.


 
TUser ©   (2006-12-08 16:13) [32]

> При x <> 1 вроде все правильно считает, а вот при x = 1 не сходится ряд?

Должен сходиться, сказали же уже, что это разложение синуса.


 
Anatoly Podgoretsky ©   (2006-12-08 16:18) [33]

Zeqfreed ©   (08.12.06 16:12) [31]
А у меня полный порядок, не веришь пальцем посчитай


 
Zeqfreed ©   (2006-12-08 16:39) [34]


> TUser ©   (08.12.06 16:13) [32]

Да, я уже понял где ошибся (см. [28]). Все отлично считается.


> Anatoly Podgoretsky ©   (08.12.06 16:18) [33]

Ну я ведь не единственный, у кого такая проблема. Помню, кто-то ещё жаловался. Было бы интересно разобраться в чем все-таки она заключается и как её избегать.


 
Anatoly Podgoretsky ©   (2006-12-08 16:44) [35]

> Zeqfreed  (08.12.2006 16:39:34)  [34]

Заключается она в HTML и в серверном скрипте



Страницы: 1 вся ветка

Текущий архив: 2006.12.31;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.029 c
15-1166028114
Ученик чародея
2006-12-13 19:41
2006.12.31
DOS, Линукс, терминальное решение.


4-1155807718
apic
2006-08-17 13:41
2006.12.31
Битовый массив


15-1165585217
Сатир
2006-12-08 16:40
2006.12.31
Удалиние лишних bpl-ок


15-1165933393
Andre_s
2006-12-12 17:23
2006.12.31
Счетчик печати принтера


2-1165995193
Neket
2006-12-13 10:33
2006.12.31
Запрос POST