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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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 57

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

xy



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

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


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

Всего записей: 10530 | Зарегистр. 28-05-2003 | Отправлено: 16:00 01-12-2003 | Исправлено: zAlAn711, 18:21 10-01-2024
Pavel80



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ОБнаружил такой глюк
При построении графика не строит на интервале от -1 до 1
 

Код:
Plot[x/Power[x^2 - 1, (3)^-1], {x, -10, 10}]


Всего записей: 279 | Зарегистр. 07-04-2006 | Отправлено: 22:45 23-12-2010 | Исправлено: Pavel80, 23:03 23-12-2010
terminat0r



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Pavel80
это не глюк.
от -1 до 1 корень с отрицательного числа - комплексный
Plot[Re[x/(x^2 - 1)^(1/3)], {x, -10, 10}]

Всего записей: 2084 | Зарегистр. 31-03-2002 | Отправлено: 00:10 24-12-2010 | Исправлено: terminat0r, 00:10 24-12-2010
myual



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

Цитата:
от -1 до 1 корень с отрицательного числа - комплексный  
Plot[Re[x/(x^2 - 1)^(1/3)], {x, -10, 10}]

Какой комплексный? Корень третьей степени?

Всего записей: 245 | Зарегистр. 06-12-2006 | Отправлено: 10:53 24-12-2010
karl_karlsson



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Pavel80
Это так нормальным и является.  
Как сделать его в Mathematica не знаю, а вот в Maple делается так:

Код:
 
plot(x/surd(x^2-1,3),x = -10 .. 10)
 

 
terminat0r
Он действительно комплексным и получается, только используя Re для (-1 < x < 1) получится не то что надо.
Лучше этого Piecewise придумать не успел...

Код:
 
Plot[Piecewise[{{x/(x^2 - 1)^(1/3), x < -1}, {-(x/(1 - x^2)^(1/3)), -1 < x < 1},{x/(x^2 - 1)^(1/3), 1 < x}}],{x, -10, 10}
 

 
myual
Корни всего 3 (1 реальных, 2 комплексно сопряженных) и Mathematica использует не реального из них, а тот у которого угол наименьшим является.
Вот сюда как то выясняется этот вопрос.
И если x > 0 то понятно, уголь является наименьшим у реального корня, а если x<0, то уже нет.

Всего записей: 2027 | Зарегистр. 14-03-2007 | Отправлено: 13:51 24-12-2010
popkov

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Pavel80
Можно легко обойти проблему, определив свою собственную функцию кубического корня, которая для действительных чисел всегда возвращает действительное значение:
 
realCubicRoot[expr_?(Element[#, Reals] &)] := (Sign[expr]*Power[Abs[expr], 1/3])
Plot[x/realCubicRoot[x^2 - 1], {x, -10, 10}]
 
Однако в этом случае функция оказывается разрывной...

Всего записей: 1833 | Зарегистр. 22-03-2003 | Отправлено: 16:00 24-12-2010 | Исправлено: popkov, 17:01 24-12-2010
r_green



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

Всего записей: 145 | Зарегистр. 17-09-2004 | Отправлено: 17:27 24-12-2010 | Исправлено: r_green, 17:30 24-12-2010
Pavel80



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Всем большое спасибо за ответы. Но вопрос остается открытым в том плане, что как после этого вообще доверять этой системе, если не знаешь выведет ли она достоверный результат. И это очень печально, я разочаровался.(((

Всего записей: 279 | Зарегистр. 07-04-2006 | Отправлено: 18:15 24-12-2010
popkov

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

Цитата:
я разочаровался.(((

Рано разочаровываетесь! Я прошел куда более длиный путь, чтобы разочароваться. Главная проблема - фактическое отсутствие спецификации для всех встроенных функций! Они ведут себя непредсказуемо именно в результате политики документирования.

Всего записей: 1833 | Зарегистр. 22-03-2003 | Отправлено: 19:12 24-12-2010
r_green



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

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

В данном случае нет оснований для разочарования - результат достоверный.
 

Всего записей: 145 | Зарегистр. 17-09-2004 | Отправлено: 20:04 24-12-2010
karl_karlsson



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

Цитата:
Однако в этом случае функция оказывается разрывной...

Функция на самом деле разрывной и является. У Maple не получается разрывной, но думаю это какой то недостаток графической системой.  
 
Pavel80
Все системы, которые понимают комплексные числа сделают то же.
Например есть такие программы как GraphCalc, которые больше подходят для несложных графиков.

Всего записей: 2027 | Зарегистр. 14-03-2007 | Отправлено: 21:43 24-12-2010
Alex_B



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

Цитата:
Главная проблема - фактическое отсутствие спецификации для всех встроенных функций! Они ведут себя непредсказуемо

Любопытно. Видимо вы это уже много раз здесь демонстрировали. Не могли бы вы еще раз привести наиболее поучительный пример?

Всего записей: 1088 | Зарегистр. 10-01-2002 | Отправлено: 20:53 26-12-2010
popkov

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Alex_B
Например, вышеупомянутая на данной странице функция Power[], которая при извлечении корня нечетной степени из отрицательного числа возвращает т.н. "principal root" (термин, отчетливого определения которого я так и не нашел. К примеру, для квадратного корня на том же сайте подчеркивается произвольность определения этого понятия, как и на Википедии). Да, в разделе EXAMPLES/Possible Issues  (13) это упоминается в 7-ке (хотя в 5-ке, к примеру, и вовсе нет этой информации). Но примеры работы - не спецификация! Замечание "For complex numbers x and y, Power gives the principal value of e^(y log (x))." относится к комплексным числам, а не к отрицательным. Можно, конечно, утверждать, что действительные числа - подмножество комплексных, но это скорее демагогия, поскольку в Mathematica это совершенно разные объекты. См., напр., на стр. ref/Complex: "Complex is the head used for complex numbers.", что опровергает предположение, что разработчики имели в виду под комплексными числами также и действительные.
 
Собственно, документация к Mathematica даже и не претендует на то, что в ней содержится спецификация встроенных функций: в ней, кроме краткого описания вверху страницы, есть только разделы "MORE INFORMATION" и "EXAMPLES". Уже названия этих разделов намекают, что часть важной информации просто скрывается...

Всего записей: 1833 | Зарегистр. 22-03-2003 | Отправлено: 15:33 04-01-2011 | Исправлено: popkov, 16:56 04-01-2011
popkov

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Кстати, рекомендую интересный анализ работы функции Plot[] в версиях MMa >=6:
 
http://stackoverflow.com/questions/4572183/strange-sinx-graph-in-mathematica/4572266#4572266
 
Для меня лично этот анализ был открытием. Похоже, в 5-й версии был более умный Plot[].

Всего записей: 1833 | Зарегистр. 22-03-2003 | Отправлено: 12:10 05-01-2011
popkov

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Серьезный баг в функции Clip[] (проверил в версиях 5.2 и 7.0.1):
 
In[1]:=
Clip[1.00000000000000036, {0., 1.}]
Clip[1.00000000000000036, {0, 1}]
Clip[1.00000000000000036`17, {0, 1}]

Out[1]=
1.0000000000000004
 
Out[2]=
1.0000000000000004
 
Out[3]=
1.0000000000000004

Всего записей: 1833 | Зарегистр. 22-03-2003 | Отправлено: 12:55 07-01-2011
eriik



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет.
Может кто-нибудь внятно объяснить, почему это не работает (M8):

Код:
 
n = 3; incx = 2; incy = 1;
x = {2., 2., 2.};
y = {1., 1., 1.};
 
FindLibrary[ "c:\\mkl_core.dll"];
fun = LibraryFunctionLoad["c:\\mkl_core.dll",  
   "mkl_blas_sdot", {Integer, {Real, 1, "Shared"},  
    Integer, {Real, 1, "Shared"}, Integer}, Real];
 
res = fun[n, x, incx, y, incy]
 
?

Всего записей: 453 | Зарегистр. 09-01-2003 | Отправлено: 14:08 07-01-2011 | Исправлено: eriik, 14:09 07-01-2011
popkov

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
eriik
Работа с внешними библиотеками в нестандарнтых случаях похожа на шаманство. Думаю, лучше задать этот вопрос разработчику (навернаяка это Todd Gayley tgayley<-"at"->wolfram.com - разработчик NetLink и MathLink, вполне адекватный человек). Только стоит, вероятно, поподробнее рассказать о "c:\\mkl_core.dll" и определенной в ней функции. А потом расскажите нам, если откроется что-то полезное...
 
Добавлено:
eriik
На всякий случай задам стандартный вопрос №1: а вызвать  
Needs["NETLink`"]
перед упомянутым куском кода Вы не забыли?

Всего записей: 1833 | Зарегистр. 22-03-2003 | Отправлено: 19:45 07-01-2011
TomasVercetti

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
popkov,
M8
 
In[5]:= Clip[1.00000000000000036, {0., 1.}]
Clip[1.00000000000000036, {0, 1}]
Clip[1.00000000000000036`17, {0, 1}]
 
Out[5]= 1.
 
Out[6]= 1
 
Out[7]= 1

Всего записей: 319 | Зарегистр. 09-01-2006 | Отправлено: 20:57 07-01-2011
terminat0r



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
eriik
насколько я понимаю, оно и не должно работать. математика не может вызывать с пом. LibraryLink любую библиотеку а только специально написанную под математику
смотрите примеры в SystemFiles/Links/LibraryLink/LibraryResources/Source

Всего записей: 2084 | Зарегистр. 31-03-2002 | Отправлено: 09:29 08-01-2011
karl_karlsson



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
popkov
Похоже в Mathematica 8 этот баг исправили.

Всего записей: 2027 | Зарегистр. 14-03-2007 | Отправлено: 12:45 08-01-2011
TomasVercetti

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Зато появился новый багофич. Была у меня функция — ещё с 5.2 — типа f[x_]:=FindRoof[NIntegrate[...x, y...]+NIntegrate[...x, y...]==0, {y, 0, 500}]. Работала себе и работала (проверено аналитически), до m8. Сейчас всегда выдаёт в качестве решения y=500, и никакие настройки или изменение этого предела не помогают. Сижу пока, разбирвюсь.

Всего записей: 319 | Зарегистр. 09-01-2006 | Отправлено: 15:01 08-01-2011 | Исправлено: TomasVercetti, 15:02 08-01-2011
Открыть новую тему     Написать ответ в эту тему

Страницы: 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 57

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


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

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru