Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Wolfram Mathematica (математика)

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56

Открыть новую тему     Написать ответ в эту тему

xy



ХУдератор
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Wolfram Mathematica 11

Загрузка и поиск "лекарств"в "Варезнике"


 
Здесь обсуждаем вопросы языка Mathematica и программы, которая ИМХО лучше других выполняет свою задачу и, кроме, того очень точно соответствует своему названию, хотя там не забыли и про физиков и химиков и всех остальных:)

Всего записей: 10530 | Зарегистр. 28-05-2003 | Отправлено: 16:00 01-12-2003 | Исправлено: virussnu, 14:17 05-11-2018
popkov

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Alex_B
Попробуй:
Sum[Cos[n]^2/n^3, {n, 1, Infinity}]
N[Sum[Cos[n]^2/n^3, {n, 1, Infinity}]]

Ответ Mathematica 6.02:
0.367038
0.367072+ 0.0000120766*I

Здесь уже баг налицо...
 
Добавлено:
Забавно, но версия 5.2 выдаёт более правильный ответ:
0.367038
0.367042 + 0.*I

 
Добавлено:
В MuPAD 4.06 (символьно взять не может):
numeric::sum((cos(n))^2/(n^3),n=1..infinity)
0.3670427155

Всего записей: 1805 | Зарегистр. 22-03-2003 | Отправлено: 19:57 30-03-2008 | Исправлено: popkov, 20:05 30-03-2008
Alex_B



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
popkov

Цитата:
Здесь уже баг налицо...  

Странно, а я не вижу.
Если речь идет о точности численного вычисления, то естественно, она будет маленькая. Просто надо точность численного вычисления контролировать. Это можно делать разными способами. Например, так
In[96]:= N[Sum[Cos[n]^2/n^3, {n, 1, Infinity}], 20]
Out[96]= 0.36704271553731162697 + 0.*10^-21 I

Всего записей: 971 | Зарегистр. 10-01-2002 | Отправлено: 20:13 30-03-2008 | Исправлено: Alex_B, 20:21 30-03-2008
vb2008

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Посмотрел я первую ссылку на ошибку Sum - 2 (Cos, invalid Indeterminate, regression bug). Насколько я смог понять, ошибка, о которой там говорится, состоит в том, что Математика не может аналитически вычислить Sum[Cos[n]^2/(n^3+1),{n,1,Infinity}]. Я бы не называл это ошибкой.

 
Я не уверен, где Вы нашли что
 
"Математика не может аналитически вычислить Sum[Cos[n]^2/(n^3+1),{n,1,Infinity}]"
 
Я такого нигде не писал. Вот что писал я:
 
http://groups.google.com/group/alt.math.recreational/browse_thread/thread/207c574740daefda/67fe71e061e4816a?lnk=raot
 
То есть Математика 6 выдает для это суммы значение Indeterminate .
 
Это абсурд ибо Mathematicа 3 в 1996 году эту же сумму считала правильно.
(см ссылку, там точное значение)
 
Затем они сломали что-то и дальше ВСЕ версии вверх дают дурацкое
Indeterminate
 
Да determinate, еще как determinate - это первокурснику ясно - ряд
мажорируется 1/(n^3 + 1), который, очевидно, сходится, да и не
так уж медленно.  
 
 
-----------------------------------------------------------------  
 
           Sum[Cos[n]^2/(n^3 + 1), {n, 1, Infinity}]  
 
-----------------------------------------------------------------  
VERSION           OUTPUT                               RESOLUTION  
-----------------------------------------------------------------  
 
Mathematica 6.0   Indeterminate   <----------------------- BUG #2  
 
Mathematica 5.2   Indeterminate   <----------------------- BUG #2  
 
Mathematica 4.2   Unevaluated   <------------------------- BUG #1  
 
Mathematica 3.0   Correct answer                               OK  
 
-----------------------------------------------------------------
 
Вот такие пирожки.
 
Этот тип багов называется "регрессионный баг".
 
То есть сначала работало, потом, в следующей версии, уже не
работает.

Всего записей: 38 | Зарегистр. 28-03-2008 | Отправлено: 20:15 30-03-2008
Alex_B



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vb2008

Цитата:
Я не уверен, где Вы нашли что  

И я не уверен.

Цитата:
Я такого нигде не писал

Я не утверждал, что Вы это писали.

Цитата:
Это абсурд  

Я не знаю, как Математика вычисляет. Могу предположить, что в прежних версиях для подобных вычиcлений были использованы табличные значения. В новых же версиях применяется какой-то общий метод, который в частных случаях не дает результата. Тогда это не будет абсурдом.

Цитата:
см ссылку, там точное значение

Что-то я не нашел там. Не могли бы Вы зедь указать правильное значение?

Цитата:
Да determinate, еще как determinate  

Ясень корень. Но почему Вы не допускаете, что в избранном ими методе аналитического вычисления бесконечной суммы не может возникнуть indeterminate?

Всего записей: 971 | Зарегистр. 10-01-2002 | Отправлено: 20:34 30-03-2008 | Исправлено: Alex_B, 20:38 30-03-2008
vb2008

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex_B writes
 

Цитата:
Я не утверждал, что Вы это писали.

 
Теперь можете смело утверждать. Это был я.  
 
"Проверено. Мин нет."   (с) Vladimir Bondarenko  Cyber Tester  
 

Цитата:
Что-то я не нашел там. Не могли бы Вы здесь указать правильное значение?

 
Пожалуйста, вклеиваю прямо из моей ссылки... вот она еще раз
 
http://groups.google.com/group/alt.math.recreational/browse_thread/thread/207c574740daefda/67fe71e061e4816a?lnk=raot
 
N[(E^(-2*I-Sqrt[3])*((-I)*(-I+Sqrt[3])*E^(I+2*Sqrt[3])*Beta[E^(-2  
*I),(1-I*Sqrt[3])/2,0]+I*(I+Sqrt[3])*E^I*Beta[E^(-2*I),(1+I*Sqrt[  
3])/2,0]+(-1-I*Sqrt[3])*E^(3*I)*Beta[E^(2*I),(1-I*Sqrt[3])/2,0]+I  
*(I+Sqrt[3])*E^(3*I+2*Sqrt[3])*Beta[E^(2*I),(1+I*Sqrt[3])/2,0]+E^  
(4*I+Sqrt[3])*(2*I-I*Pi+Log[Csc[1]^2/4])+I*E^Sqrt[3]*(-2+Pi+I*Log  
[4*Sin[1]^2]) + 2*E^(2*I+Sqrt[3])*(-4+2*EulerGamma+(1+I*Sqrt[3])*  
PolyGamma[0,(1-I*Sqrt[3])/2]+(1-I*Sqrt[3])*PolyGamma[0,(1+I*Sqrt[  
3])/2])))/24]  
 
           NSum[Cos[n]^2/(n^3 + 1), {n, 1, Infinity}]  
 
                  0.217243  
                  0.217243
 
 

Цитата:
Но почему Вы не допускаете, что в избранном ими методе аналитического вычисления бесконечной суммы не может возникнуть indeterminate?

 
О!
 
В самую точку!
 
Да пусть все, что угодно хоть трижды возникает - мне как покупателю, фиолетово, что у них там происходит - они должны дать ПРАВИЛЬНЫЙ ответ. Тем более, Wolfram Research уже это делала.
 
Если же правильного ответа нет - это БАГ.
 
Извините, но если Вы работали Quality Assurance Engineer, то Вы меня поймете, если нет - примите как оно есть в моей многолетней практике Quality Assurance Engineer, каковой я себе на шампанское и черную икру зарабатываю...

Всего записей: 38 | Зарегистр. 28-03-2008 | Отправлено: 20:49 30-03-2008
popkov

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Любопытно:  
Table[{2*m^z - m^z, FullSimplify[2*m^z - m^z]}, {m, 1, 21}] // TableForm
Наверное, Alex_B не согласится, что это баг, однако очевидно, что у Mathematica серьёзные проблемы с экспоненциальными функциями... Причём именно функции с чётным основанием оказываются камнем преткновения...
 
 
Добавлено:
Alex_B

Цитата:
Тогда это не будет абсурдом.  

По-вашему, не абсурд принуждать пользователей к накоплению предыдущих версий программы, чтобы иметь возможность пользоваться их функционалом, отсутствующим в новой версии? Может, эту функцию проще было бы в виде отдельного подключаемого модуля тогда выпустить? Старый функционал сохранить, и новый добавить... Глупо обманывать ожидания пользователей, заявляя о выпуске "улучшенной" версии, не справляющейся с простыми задачами, которые предыдущая решала "на ура".
Да и скажите пожалуйста, так ли уж похоже, чтобы у Mathematica были таблицы готовых ответов такого типа:

Цитата:
N[(E^(-2*I-Sqrt[3])*((-I)*(-I+Sqrt[3])*E^(I+2*Sqrt[3])*Beta[E^(-2  
*I),(1-I*Sqrt[3])/2,0]+I*(I+Sqrt[3])*E^I*Beta[E^(-2*I),(1+I*Sqrt[  
3])/2,0]+(-1-I*Sqrt[3])*E^(3*I)*Beta[E^(2*I),(1-I*Sqrt[3])/2,0]+I  
*(I+Sqrt[3])*E^(3*I+2*Sqrt[3])*Beta[E^(2*I),(1+I*Sqrt[3])/2,0]+E^  
(4*I+Sqrt[3])*(2*I-I*Pi+Log[Csc[1]^2/4])+I*E^Sqrt[3]*(-2+Pi+I*Log  
[4*Sin[1]^2]) + 2*E^(2*I+Sqrt[3])*(-4+2*EulerGamma+(1+I*Sqrt[3])*  
PolyGamma[0,(1-I*Sqrt[3])/2]+(1-I*Sqrt[3])*PolyGamma[0,(1+I*Sqrt[  
3])/2])))/24]  

 
Добавлено:

Цитата:
Странно, а я не вижу.
Если речь идет о точности численного вычисления, то естественно, она будет маленькая.

Согласен, немного погорячился, но немного странно, что функция N[] предыдущей версии по умолчанию выдавала ответ, в котором правильные все знаки, а новая - с неправильными знаками?

Всего записей: 1805 | Зарегистр. 22-03-2003 | Отправлено: 21:05 30-03-2008 | Исправлено: popkov, 21:23 30-03-2008
Alex_B



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vb2008

Цитата:
я себе на шампанское и черную икру зарабатываю

С чем Вас и поздравляю!
 

Цитата:
Если же правильного ответа нет - это БАГ.

Если неправильный ответ - это ошибка (грубый баг).
Если правильный ответ существует, а его нет - это баг.
 
Сейчас я вижу, что правильный ответ существует, поэтому неспособность Математики вычислить Sum[Cos[n]^2/(n^3+1),{n,1,Infinity}] можно считать багом.
 
Вычисляет ли старая Математика Sum[Cos[n]^2/(n^3+a),{n,1,Infinity}]?

Всего записей: 971 | Зарегистр. 10-01-2002 | Отправлено: 21:27 30-03-2008 | Исправлено: Alex_B, 21:34 30-03-2008
vb2008

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Вычисляет ли старая Математика Sum[Cos[n]^2/(n^3+a),{n,1,Infinity}]?

 
Совершенно верно. Версия Mathematica 3.0 вычисляет и эту параметрическую  
сумму без запинки - вот результат
 
(-4*I*LerchPhi[E^(-2*I), 1, 1 + a^(1/3)] - 2*(-1)^(1/6)*LerchPhi[E^(-2*I), 1, 1 + a^(1/3)] -  
2*(-1)^(5/6)*LerchPhi[E^(-2*I), 1, 1 + a^(1/3)] + 2*I*LerchPhi[E^(-2*I), 1, (2 - a^(1/3) - I*Sqrt[3]*a^(1/3))/2] +  
(-1)^(1/6)*LerchPhi[E^(-2*I), 1, (2 - a^(1/3) - I*Sqrt[3]*a^(1/3))/2] +  
(-1)^(5/6)*LerchPhi[E^(-2*I), 1, (2 - a^(1/3) - I*Sqrt[3]*a^(1/3))/2] -  
2*Sqrt[3]*LerchPhi[E^(-2*I), 1, (2 - a^(1/3) - I*Sqrt[3]*a^(1/3))/2] -  
(-1)^(1/3)*Sqrt[3]*LerchPhi[E^(-2*I), 1, (2 - a^(1/3) - I*Sqrt[3]*a^(1/3))/2] +  
(-1)^(2/3)*Sqrt[3]*LerchPhi[E^(-2*I), 1, (2 - a^(1/3) - I*Sqrt[3]*a^(1/3))/2] +  
2*I*LerchPhi[E^(-2*I), 1, (2 - a^(1/3) + I*Sqrt[3]*a^(1/3))/2] + (-1)^(1/6)*LerchPhi[E^(-2*I), 1,  
(2 - a^(1/3) + I*Sqrt[3]*a^(1/3))/2] + (-1)^(5/6)*LerchPhi[E^(-2*I), 1, (2 - a^(1/3) + I*Sqrt[3]*a^(1/3))/2] +  
2*Sqrt[3]*LerchPhi[E^(-2*I), 1, (2 - a^(1/3) + I*Sqrt[3]*a^(1/3))/2] +  
(-1)^(1/3)*Sqrt[3]*LerchPhi[E^(-2*I), 1, (2 - a^(1/3) + I*Sqrt[3]*a^(1/3))/2] -  
(-1)^(2/3)*Sqrt[3]*LerchPhi[E^(-2*I), 1, (2 - a^(1/3) + I*Sqrt[3]*a^(1/3))/2] -  
4*I*E^(4*I)*LerchPhi[E^(2*I), 1, 1 + a^(1/3)] - 2*(-1)^(1/6)*E^(4*I)*LerchPhi[E^(2*I), 1, 1 + a^(1/3)] -  
2*(-1)^(5/6)*E^(4*I)*LerchPhi[E^(2*I), 1, 1 + a^(1/3)] + 2*I*E^(4*I)*LerchPhi[E^(2*I), 1,  
(2 - a^(1/3) - I*Sqrt[3]*a^(1/3))/2] + (-1)^(1/6)*E^(4*I)*LerchPhi[E^(2*I), 1,  
(2 - a^(1/3) - I*Sqrt[3]*a^(1/3))/2] + (-1)^(5/6)*E^(4*I)*LerchPhi[E^(2*I), 1,  
(2 - a^(1/3) - I*Sqrt[3]*a^(1/3))/2] - 2*Sqrt[3]*E^(4*I)*LerchPhi[E^(2*I), 1,  
(2 - a^(1/3) - I*Sqrt[3]*a^(1/3))/2] - (-1)^(1/3)*Sqrt[3]*E^(4*I)*
LerchPhi[E^(2*I), 1, (2 - a^(1/3) - I*Sqrt[3]*a^(1/3))/2] + (-1)^(2/3)*Sqrt[3]*E^(4*I)*
LerchPhi[E^(2*I), 1, (2 - a^(1/3) - I*Sqrt[3]*a^(1/3))/2] + 2*I*E^(4*I)*LerchPhi[E^(2*I), 1,  
(2 - a^(1/3) + I*Sqrt[3]*a^(1/3))/2] + (-1)^(1/6)*E^(4*I)*LerchPhi[E^(2*I), 1,  
(2 - a^(1/3) + I*Sqrt[3]*a^(1/3))/2] + (-1)^(5/6)*E^(4*I)*LerchPhi[E^(2*I), 1,  
(2 - a^(1/3) + I*Sqrt[3]*a^(1/3))/2] + 2*Sqrt[3]*E^(4*I)*LerchPhi[E^(2*I), 1,  
(2 - a^(1/3) + I*Sqrt[3]*a^(1/3))/2] + (-1)^(1/3)*Sqrt[3]*E^(4*I)*
LerchPhi[E^(2*I), 1, (2 - a^(1/3) + I*Sqrt[3]*a^(1/3))/2] - (-1)^(2/3)*Sqrt[3]*E^(4*I)*
LerchPhi[E^(2*I), 1, (2 - a^(1/3) + I*Sqrt[3]*a^(1/3))/2] + 12*I*E^(2*I)*PolyGamma[0, 1 + a^(1/3)] +  
6*(-I + Sqrt[3])*E^(2*I)*PolyGamma[0, 1 - (-1)^(1/3)*a^(1/3)] - 12*(-1)^(1/6)*E^(2*I)*PolyGamma[0, 1 + (-1)^(2/3)*a^(1/3)])/
(2*(-1 + (-1)^(1/3))*(1 + (-1)^(1/3))^2*(-3 + I*Sqrt[3])*(-3*I + Sqrt[3])*a^(2/3)*E^(2*I))
 
и если подставить %/.{a->1}
 
выдает именно тот громоздкий, но правильный ответ, который я только что
привел. То есть в 1996 году все считалось прекрасно.  
 
Но  начиная с версии Mathematica 4.0 2000 года и по сю пору ни одна из версий
Mathematica не дает более того правильного ответа, а всучивает мне как покупателю математически некорректный ответ, Indeterminate.
 

Цитата:
С чем Вас и поздравляю!

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

Всего записей: 38 | Зарегистр. 28-03-2008 | Отправлено: 21:44 30-03-2008
Alex_B



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vb2008

Цитата:
Версия Mathematica 3.0 вычисляет и эту параметрическую сумму без запинки - вот результат  

Математика 6.1 тоже сумела это сделать, но через промежуточные преобразования.
Представляем Cos[n]^2/(a + n^3) в виде (1 + Cos[2 n])/(2 (a + n^3)). Затем заменяем переменные и разбиваем на две суммы. Причем каждая сумма вычисляется аналитически, а результаты совпадают с численными оценками. Суммирование лучше производить от 0 до Infinity: таким способом результат лучше упрощается. Результат второй суммы выражается через другие спец. функции, а именно, только через Hypergeometric2F1.
 
Так что можно считать, что здесь баг отсутствует.

Всего записей: 971 | Зарегистр. 10-01-2002 | Отправлено: 23:25 30-03-2008 | Исправлено: Alex_B, 23:28 30-03-2008
popkov

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Alex_B

Цитата:
Так что можно считать, что здесь баг отсутствует.

Может, проще вообще обойтись без Mathematica? Тогда уж точно баг отсутствует...

Всего записей: 1805 | Зарегистр. 22-03-2003 | Отправлено: 23:47 30-03-2008
vb2008

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex_B writes
 

Цитата:
Так что можно считать, что здесь баг отсутствует.

 
Если мы хотим действовать в рамках Quality Assurance Engineering  
ну типа знаменитой книжке Канера  "Тестирование программного  
обеспечения"  
 
   http://www.books.ru/shop/books/6004
 
то единственный ответ - регрессионный баг.
 
...
 
Если Вы сильнее меня в QAE, я хочу учиться у Вас.
 
Если я сильнее Вас в QAE, почему бы Вам не учиться у меня?
 
Я с точки зрения QAE - вот он... еще и не весь...
 
   http://www.cas-testing.org/index.php?list=3
 
Могу ли я увидеть Ваши QAE достижения?
     
 
Добавлено:
Alex_B
 

Цитата:
Математика 6.1 тоже сумела это сделать, но через промежуточные преобразования.  
Представляем Cos[n]^2/(a + n^3) в виде (1 + Cos[2 n])/(2 (a + n^3)). Затем заменяем переменные и разбиваем на две суммы. Причем каждая сумма вычисляется аналитически, а результаты совпадают с численными оценками. Суммирование лучше производить от 0 до Infinity: таким способом результат лучше упрощается. Результат второй суммы выражается через другие спец. функции, а именно, только через Hypergeometric2F1.

 
Вы несомненно обожаете математику как науку (или это искусство?)!
 
Безусловно, Вы правы, что искусный аналитик - а я не сомневаюсь, что Вы еще далеко не продемонстрировали всех Ваших талантов - в состоянии вынудить Mathematica сделать многое...
 
Тут ведь вопрос в несколько ином... Ведь она ж сама должна это делать... да и делала уже!
 
"За шо ж дэньгы-то плачены??!! Все, заработанное непосильным трудом!!"  
 
Вот есть 2,000,000+ покупателей у Wolfram Research - реальных, платящих.... надо ж как-то денежки отрабатывать... уже-ж работало!
 
Так нет.... одно лечим, два калечим....
 
Единственная за 15 лет система компьютерной алгебры, которая, к моему крайнему изумлению, почти НЕ содержала регрессионных багов - это Derive, который я помогал улучшать с 1993 до 2006.  
 
А TI-Nspire.... я промолчу..........

Всего записей: 38 | Зарегистр. 28-03-2008 | Отправлено: 00:17 31-03-2008
Griefin

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Если заводить речь о недостатках, то в Mathematica 6.x их море. Прежде всего, весьма существенно снизилась скорость вычисления элементарных функций и численного интегрирования по сравнению с 5.2. См. результаты выполнения стандартной функции Benchmark: http://img211.imageshack.us/img211/9857/60vs52re6.gif В результате, многие из моих расчетов (заключающиеся, главным образом, в численном интегрировании от сложных комбинаций элементарных и специальных функций) в 6.x стали работать раза в два-три медленнее. Таким образом, пакет версии 6.x сейчас можно использовать как средство для рисования красивых графиков и демонстраций, а более старые версии -- для дела. Интересно, каким образом подобные вещи могли остаться незамеченными?

Всего записей: 759 | Зарегистр. 19-07-2003 | Отправлено: 23:16 31-03-2008 | Исправлено: Griefin, 23:27 31-03-2008
popkov

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
Интересно, каким образом подобные вещи могли остаться незамеченными?

Потому что никто не пишет и не обсуждает. Все молчат, как рыбы, как будто так и надо.  
А откуда сам график?

Кстати, наткнулся сегодня на любопытный эксперимент, демонстрирующий утечки памяти в Mathematica 6.02. К сожалению, это же касается и 5.2-версии...

Всего записей: 1805 | Зарегистр. 22-03-2003 | Отправлено: 00:08 01-04-2008
Griefin

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
График строился в Excel на основе вывода функции Benchmark[].

Всего записей: 759 | Зарегистр. 19-07-2003 | Отправлено: 00:53 01-04-2008
vikkiv



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Griefin

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

 
Да у большинства пока не тот уровень и естественно не те запросы.. У меня всё примитивнее.. может только через пару лет - но вряд-ли к тому времени здесь публика останется та-же (ну и версия соответственно с новыми багами)..

Всего записей: 722 | Зарегистр. 10-11-2005 | Отправлено: 03:29 01-04-2008
Alex_B



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
popkov
Посмотрел еще одну твою ссылку. Там нашел сообщение об ошибке
 
NSum[(Cos[n]/n)^1,{n,1,Infinity}]     slow convergence  
0.0420195    RIGHT
NSum[(Cos[n]/n)^2,{n,1,Infinity}]    fast convergence  
0.572578    WRONG
 
Насколько я смог понять, ошибку находят в расхождении между точным значением
 
s1=Sum[(Cos[n]/n)^2,{n,1,Infinity}]//N
0.574138  
 
и значением 0.572578, полученным в результате численного суммирования. При этом обращают внимание на такое обстоятельство, что числовое суммирование  первого ряда дает значение близкое к точному, хотя ряд сходится медленнее, чем во второй случае.
 
На мой взгляд, здесь нет никакой ошибки. Ошибка была бы тогда, если бы Математика сказала о завышенной точности полученного результата, несоответствующей действительности.
 
Хорошая точность первого числового суммирования (по сравнению со вторым) объясняется тем, что в первом случае мы имеем знакопеременный ряд, а во втором – нет.  Так что к своей сумме первый ряд приближается с двух сторон, и по малому числу слагаемых мы можем довольно точно предсказать результат.
Оценить же точность второго суммирования мы можем несколькими способами. Например, так
 
NSum[(Cos[n]/n)^2, {n, 1, 500}]
0.57314
 
Ясно, что уже третья значащая цифра неточна. Точность суммирования мы можем несколько увеличить так
 
s2 = NSum[(Cos[n]/n)^2, {n, 1, Infinity}, AccuracyGoal -> 10,  PrecisionGoal -> 10]
0.573969
 
Ошибка s1 – s2 составит 0.00017. Она немаленькая, но реальная. Метод числового бесконечного суммирования дает хороший результат для положительной функции только в том случае, если она монотонная, а у нас она осциллирующая.
 
Следующие ошибки посмотрю позже.
 
ЗЫ
На личные вопросы отвечу позже. В первую очередь меня Математика интересует.
 
ЗЫЫ
Еще более точный метод суммирования для этого случая будет следующий
 
NSum[(Cos[n]/n)^2, {n, 1, Infinity}, Method -> "EulerMaclaurin"]
0.574138
 
Так что, Математика с этой задачей успешно справилась

Всего записей: 971 | Зарегистр. 10-01-2002 | Отправлено: 05:26 01-04-2008 | Исправлено: Alex_B, 08:52 01-04-2008
vb2008

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex_B writes

Цитата:
знакопеременный ряд

 
Стоп-стоп. Знакопеременный ряд - это
 
    a0 - a1 + a2 - a3 ... где aj > 0.
 
У нас здесь Cos[n] не ведет себя так хорошо (предсказуемо) и регулярности в чередовании знаков нет и вещи типа признака Лейбница напрямую неприменимы.
 
N[Table[Cos[n]/n, {n, 1, 20}], 2]
 
{0.54, -0.21, -0.33, -0.16, 0.057, 0.16, 0.11, -0.018, -0.10, -0.084, 0.00040, 0.070, 0.070,
   0.0098, -0.051, -0.060, -0.016, 0.037, 0.052, 0.020}
 
Вообще, знак n-го члена здесь *невозможно* предсказать.
 
(кто сомневается, скажите, какой знак имеет 1000000000!-й член?)
 
"Вот такие, понимашь, политические расколбасы"  
 
Конечно, в целом можно пытаться ускорять сходимость разными эйлерами и шенксами...  но тут как раз это не получится так просто...
 
Так что сама сходимость Cos[n]/n мне не чувствуется как тривиальный факт (хотя ряд, конечно, сходится).

Всего записей: 38 | Зарегистр. 28-03-2008 | Отправлено: 08:24 01-04-2008
Alex_B



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vb2008

Цитата:
У нас здесь Cos[n] не ведет себя так хорошо (предсказуемо) и регулярности в чередовании знаков нет и вещи типа признака Лейбница напрямую неприменимы.  

Да, конечно, это не знакопеременный ряд в собственном смысле. Но здесь мы обсуждаем вопрос не о сходимости \ несходимости ряда, а о странном на первый взгляд обстоятельстве: для более медленно сходящего ряда численное суммирование дает более точный результат.

Всего записей: 971 | Зарегистр. 10-01-2002 | Отправлено: 08:58 01-04-2008
popkov

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
в первом случае мы имеем знакопеременный ряд, а во втором – нет.  Так что к своей сумме первый ряд приближается с двух сторон, и по малому числу слагаемых мы можем довольно точно предсказать результат.  

Давайте не будет голословными, и рассмотрим проблему графически. Для этого построим на одном и том же графике разность между точным и приближённым значениями для каждой из рассматриваемых бесконечных сумм, как зависимость от числа слагаемых в сумме.
Вот программа для версии 6.0.2, выводящая этот график:
sum1 = Sum[Cos[n]/n, {n, 1, Infinity}];
f1[k_] := Sum[Cos[n]/n, {n, 1, k}];
sum2 = Sum[(Cos[n]/n)^2, {n, 1, Infinity}];
f2[k_] := Sum[(Cos[n]/n)^2, {n, 1, k}];
Plot[{sum1 - f1[k], sum2 - f2[k]}, {k, 1, 1000}]

А теперь посмотрим на сам график (синяя кривая - для первой разности, красная - для второй, что очевидно):
   
Так который ряд сходится быстрее?
 
Добавлено:
Alex_B

Цитата:
Ошибка была бы тогда, если бы Математика сказала о завышенной точности полученного результата, несоответствующей действительности.  

Такая проблема действительно существует, и весьма актуальна! Вы её, собственно, подробно описали в своём посте:

Цитата:
Насколько я смог понять, ошибку находят в расхождении между точным значением
 
s1=Sum[(Cos[n]/n)^2,{n,1,Infinity}]//N
0.574138  
 
и значением 0.572578, полученным в результате численного суммирования.  

Действительно, расхождение уже в третьем знаке, а Mathematica выводит до 6-го! Мягко говоря, это подстава! При этом в документации они ещё пишут, что Mathematica "отслеживает точность, и выводит максимальное число достоверных знаков" (в вольном переводе по памяти)! Здесь явное нае....во!

Всего записей: 1805 | Зарегистр. 22-03-2003 | Отправлено: 19:59 01-04-2008 | Исправлено: popkov, 20:42 01-04-2008
Alex_B



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
popkov
Посмотрел третью твою ссылку на  ошибку. Насколько я смог понять, ошибка заключается в том, что при вычислении
 
Integrate[Sqrt[I x - x^2] Sqrt[I x - 3], {x, -1, 1}]
 
Математика дает неправильный результат.  Наличие ошибки подтверждаю.
 
Как эту ошибку можно обойти и избежать подобных ошибок в будущем? Стратегия очевидна. Строим график подинтегрального выражения, находим особые точи и разбиваем область интегрирования на части без особых точек. В данном конкретном случае строим график подинтегрального выражения Re[Sqrt[I x - x^2] Sqrt[I x - 3]], убеждаемся в наличии особой точки при x = 0 (бесконечная производная первого порядка), заменяем наш интеграл на
 
2 Integrate[Sqrt[I x - x^2] Sqrt[I x - 3], {x,0, 1}]
 
и получаем правильный результат.
 
vb2008

Цитата:
скажите, какой знак имеет 1000000000!-й член?)  

Для справедливости моего вывода достаточно заметить, что число последовательных членов с одним знаком не бывает больше четырех и на каждом более или менее большом отрезке число положительных и отрицательных членов приблизительно одинаково. Уверен, все это можно доказать математически. Здесь же я пытаюсь интуитивно понять, что происходит.
 
popkov

Цитата:
Так который ряд сходится быстрее?

Первый ряд сходится медленнее, а второй быстрее, как я и говорил. С этим как раз и была связана проблема.
 
 
Добавлено:
popkov

Цитата:
Действительно, расхождение уже в третьем знаке, а Mathematica выводит до 6-го! Мягко говоря, это подстава!  При этом в документации они ещё пишут, что Mathematica "отслеживает точность, и выводит максимальное число достоверных знаков" (в вольном переводе по памяти)! Здесь явное нае....во!  

 
Нет, в документации пишется другое: N[expr,n] attempts to give a result with n-digit precision. Unless numbers in expr are exact, or of sufficiently high precision, N[expr,n] may not be able to give results with n-digit precision. Мы здесь используем не стандартную числовую функцию, а процедуру бесконечного числового суммирования. Наивно надеяться, что точность будет в 16 значащих цифр.
 
Другие ошибки посмотрю позже.

Всего записей: 971 | Зарегистр. 10-01-2002 | Отправлено: 03:05 02-04-2008 | Исправлено: Alex_B, 03:25 02-04-2008
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56

Компьютерный форум Ru.Board » Компьютеры » Программы » Wolfram Mathematica (математика)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru