2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


В этом разделе нельзя создавать новые темы.

Если Вы хотите задать новый вопрос, то не дописывайте его в существующую тему, а создайте новую в корневом разделе "Помогите решить/разобраться (М)".

Если Вы зададите новый вопрос в существующей теме, то в случае нарушения оформления или других правил форума Ваше сообщение и все ответы на него могут быть удалены без предупреждения.

Не ищите на этом форуме халяву, правила запрещают участникам публиковать готовые решения стандартных учебных задач. Автор вопроса обязан привести свои попытки решения и указать конкретные затруднения.

Обязательно просмотрите тему Правила данного раздела, иначе Ваша тема может быть удалена или перемещена в Карантин, а Вы так и не узнаете, почему.



Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Частичная сумма ряда
Сообщение19.02.2012, 19:12 
Аватара пользователя


01/12/11

8634
Вычислить:
$\sum\limits_{k=1}^{10^6}\lfloor\sqrt k\rfloor$

У меня получился ответ 666167500, хотела сверить с Альфой, но она такие большие числа не берёт: http://www.wolframalpha.com/input/?i=su ... to+1000000
Вот тысячу берёт, а миллион - хоть ложись да помирай!

Вот мои соображения:
Имеем ряд $1, 1, 1, 2, 2, 2, 2, 2, \dots$ , сумма которого равна $1\cdot 3+2\cdot 5+\dots +n(2n+1)+\dots$
Таким образом, искомая сумма равна $1000+\sum\limits_{k=1}^{999}2k^2+k$
Воспользовавшись формулой $\sum\limits_{k=1}^{n}k^2=\frac{n(n+1)(2n+1)}{6}$, имеем
$1000+\sum\limits_{k=1}^{999}2k^2+k=1000+\frac{999\cdot 1000\cdot 1999}{6}\cdot 2+\sum\limits_{k=1}^{999}k$, что, в свою очередь, равно $1000+333\cdot 1000\cdot 1999+999\cdot 500=666167500$

Где брешь?

 Профиль  
                  
 
 Re: Частичная сумма ряда
Сообщение19.02.2012, 19:19 
Заслуженный участник
Аватара пользователя


23/07/08
10910
Crna Gora
Проверил на C++, ответ правильный.

 Профиль  
                  
 
 Re: Частичная сумма ряда
Сообщение19.02.2012, 19:21 
Заслуженный участник


20/12/10
9110
Ktina в сообщении #540602 писал(а):
Вот тысячу берёт, а миллион - хоть ложись да помирай!
Просто подождать подольше нужно. Но вручную, конечно, быстрее будет.

 Профиль  
                  
 
 Re: Частичная сумма ряда
Сообщение19.02.2012, 19:24 
Аватара пользователя


01/12/11

8634
svv в сообщении #540603 писал(а):
Проверил на C++, ответ правильный.

(Оффтоп)

Ой, а можно код?


-- 19.02.2012, 18:25 --

nnosipov в сообщении #540604 писал(а):
Ktina в сообщении #540602 писал(а):
Вот тысячу берёт, а миллион - хоть ложись да помирай!
Просто подождать подольше нужно. Но вручную, конечно, быстрее будет.

(Оффтоп)

Это же в каком веке мы живём, что вручную быстрее?

 Профиль  
                  
 
 Re: Частичная сумма ряда
Сообщение19.02.2012, 19:28 
Заслуженный участник


09/09/10
3729
Ktina
Используется синтаксис C++
double s = 0.0;
for (int i = 1; i <= 1000 * 1000; i++)
  s += floor(sqrt((double)i));
printf("%d\n", s);

 Профиль  
                  
 
 Re: Частичная сумма ряда
Сообщение19.02.2012, 19:31 
Заслуженный участник


20/12/10
9110
Ktina в сообщении #540605 писал(а):

(Оффтоп)

Это же в каком веке мы живём, что вручную быстрее?

(Оффтоп)

Я имел в виду Ваше решение. У меня Maple пока не подсчитал :-) А вот теперь подсчитал: 666167500. Минут 15 прошло.

 Профиль  
                  
 
 Re: Частичная сумма ряда
Сообщение19.02.2012, 19:41 
Заслуженный участник


11/05/08
32166
Ktina в сообщении #540605 писал(а):
Ой, а можно код?

код: [ скачать ] [ спрятать ]
Используется синтаксис Pascal
{$N+E-}

var  i,k: longint;   s: comp;

begin

  s:=0;

  for i:=1 to 1000000 do begin
    k:=trunc(sqrt(i));
    s:=s + k;
  end;

  writeln(s:15:2);
  readln;

end.

Считает где-то одну десятую секунды.

 Профиль  
                  
 
 Re: Частичная сумма ряда
Сообщение19.02.2012, 19:43 
Заслуженный участник
Аватара пользователя


23/07/08
10910
Crna Gora
Используется синтаксис C++
int s=0, a=0;
for (int k=0; k<=1000000; ++k)
{
   while ((a+1)*(a+1)<=k) ++a;
   s+=a;
}
 

Здесь только целочисленные операции, чтобы не мучили сомнения, вдруг где-то что-то не туда округлилось или набежала ошибка.

 Профиль  
                  
 
 Re: Частичная сумма ряда
Сообщение19.02.2012, 19:47 
Заслуженный участник


11/05/08
32166
svv в сообщении #540621 писал(а):
Здесь только целочисленные операции, чтобы не мучили сомнения,

Но это уже почти на пределе: int -- он ведь, насколько помню, четырёхбайтовый.

 Профиль  
                  
 
 Re: Частичная сумма ряда
Сообщение19.02.2012, 19:48 
Заслуженный участник


27/04/09
28128
О временах счёта. Mathematica 8 на P4 3 ГГц (правда, ещё куча программ одновременно работала):
Код:
In[2]:= Timing[Sum[Floor[Sqrt[k]], {k, 1, 10^6}]]
Out[2]= {185.391, 666167500}
In[3]:= Timing[Sum[Floor[Sqrt[k]], {k, 1., 1000000.}]]
Out[3]= {4.25, 666167500}
(Timing выдаёт секунды, затраченные на вычисление, и результат.) Радует, что целочисленно меньше 15 минут. :-)

P. S. Это я рекламирую. :mrgreen:

 Профиль  
                  
 
 Re: Частичная сумма ряда
Сообщение19.02.2012, 19:49 
Заслуженный участник
Аватара пользователя


23/07/08
10910
Crna Gora
Программер обязан знать наизусть: -2147483648...+2147483647
Важно, что 1000000 меньше 2147483648.
А, понял, Вы о сумме. Да, где-то еще один порядок -- и int всё.
В моей среде есть еще __int64

 Профиль  
                  
 
 Re: Частичная сумма ряда
Сообщение19.02.2012, 20:03 
Заслуженный участник


09/09/10
3729
Да, svv молодец — мой код считается 100 миллисекунд, его же менее чем за 100 наносекунд.

 Профиль  
                  
 
 Re: Частичная сумма ряда
Сообщение19.02.2012, 20:05 
Заслуженный участник


27/04/09
28128

(Оффтоп)

Да уж, никакая СКА не сравнится даже с не очень оптимизированным кодом на C++! :D

 Профиль  
                  
 
 Re: Частичная сумма ряда
Сообщение19.02.2012, 20:12 
Заслуженный участник
Аватара пользователя


23/07/08
10910
Crna Gora
Только, к сожалению, и C++ не сравнится по удобству с СКА в тех областях, для которых они были созданы...

 Профиль  
                  
 
 Re: Частичная сумма ряда
Сообщение12.05.2012, 09:43 


27/04/12
5
$\sum\limits_{k=1}^{n}k^2=\frac{n(n+1)(2n+1)}{6}$
А не подскажите вывод этой формулы (или где его можно найти)?

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу 1, 2  След.

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group