Ru-Board.club
← Вернуться в раздел «Программы»

» Mathematica (математика)

Автор: popkov
Дата сообщения: 20.09.2015 17:45
Alex_B
Можно. См страницу документации по ScriptSizeMultipliers. Эту опцию можно добавить в новый стиль для TraditionalForm, например, так:
Код: [no]Cell[StyleData["TraditionalForm"],
FontFamily->"Arial",
ScriptSizeMultipliers -> {.8, .9, .95}] [/no]
Автор: Alex_B
Дата сообщения: 20.09.2015 21:04

Цитата:
Можно.

Отлично! Все сработало.
Автор: 1lex1
Дата сообщения: 12.10.2015 15:26
Как получить 0 из выражения (-1)1/3 + (-1)2/3 ?



Mathematica 9.0.1.0. Win7 x64 SP1. Заранее спасибо за ответ.
Автор: vengr
Дата сообщения: 12.10.2015 17:00
1lex1
in N[(-1)^(1/3) + (-1)^(2/3),20]
out 0.*10^-21 + 1.7320508075688772935 I
Автор: 1lex1
Дата сообщения: 12.10.2015 18:19
vengr, а нуля всё равно нет.

Кубический корень даёт 3 результата:



Следовательно (-1)1/3 + (-1)2/3 = (-1)1/3 + 11/3 даёт 3 (или 9) ответа:
0
i·sqrt(3)
-i·sqrt(3)


Почему программа выбирает 3 ответ, а не более простой — первый? В результате она противоречит сама себе:


Как быть уверенным, что в более сложных расчётах не будет использован неподходящий корень.
Автор: vengr
Дата сообщения: 12.10.2015 18:59
1lex1.
Математика пишет, что результатом является комплексное число (а не три ответа, девять ответов, ноль...)
ноль это только действительная часть результата и он может быть получен отбрасыманием мнимой части:

in Re[(-1)^(1/3) + (-1)^(2/3)]
out 0
Автор: popkov
Дата сообщения: 12.10.2015 19:52
1lex1
Цитата:
Как получить 0 из выражения (-1)1/3 + (-1)2/3?

Например, так:
Код: [no]CubeRoot[-1] + CubeRoot[-1]^2[/no]
Автор: Alex_B
Дата сообщения: 12.10.2015 21:53

Цитата:
Кубический корень даёт 3 результата

В Mathematica кубический корень x^(1/3) (как и другие степени) является функцией. А функция всегда имеет единственное значение. Поэтому указанный вами корень дает 1 результат
1/2 + (I Sqrt[3])/2
А вот уравнение x^3 = -1 дает три результата.
Solve[x^3 == -1, x]
{{x -> -1}, {x -> (-1)^(1/3)}, {x -> -(-1)^(2/3)}}
Автор: karl_karlsson
Дата сообщения: 15.10.2015 01:09
1lex1

Цитата:
Как получить 0 из выражения (-1)1/3 + (-1)2/3 ?

Зависит от того, какая у вас реальная задача.
Получение нуля, это не задача - он получится если есть и не получится если нету.


Цитата:
Почему программа выбирает 3 ответ, а не более простой — первый?

Потому что корни вычисляются вот так.
x = r * e^ia
[(x)^(1/y)]_(k+1) = (r)^(1/y) * e^(ia/y) * (e^(2pi*i/y))^k, k=0...y-1

У нас имеется
r = 1
a = pi
y = 3

[(-1)^(1/3)]_(k+1) = e^(pi*i/3) * (e^(2pi*i/3)^k, k=0...2

Отсюда корни будут
[(-1)^(1/3)]_1 = e^(i*pi/3)
[(-1)^(1/3)]_2 = e^(i*pi) = -1
[(-1)^(1/3)]_3 = e^(i*5pi/3)

Поэтому сразу видно, что Mathematica делает не что иное, как берет первое попавшее значение.

Alex_B

Цитата:
В Mathematica кубический корень x^(1/3) (как и другие степени) является функцией

Строго говоря, они (разработчики Mathematica) иногда (возможно и чаще) сами не понимают что и зачем вычисляют.


Цитата:
А функция всегда имеет единственное значение.

Только однозначные функции имеют единственное значение.
А вот все корни неоднозначные.
Автор: Alex_B
Дата сообщения: 15.10.2015 01:47
karl_karlsson


Цитата:
Только однозначные функции имеют единственное значение

"Неоднозначные функции" это не функции, а отношения.
Как вы представляет себе, от чего зависит результат действия "неоднозначной функции"? У нее есть свобода выбора?
Автор: karl_karlsson
Дата сообщения: 15.10.2015 10:47
Alex_B
Свойство однозначности не инвариантно по отношению к замене системы координат.
На примере окружности это будет вот так.

y = (+/-) sqrt(1-x^2)
r = 1

Поэтому, если это представляет некую физическую задачу, то физический смысл неоднозначности не будет. Отсюда и

Цитата:
Зависит от того, какая у вас реальная задача.


Такие вопросы на rutracker обсуждали, но уже Matematica удалили правообладатели.
Потом и ЛС пропали, так как их ненадолго сохраняют.
Еще графические калькуляторы обсуждали - график функции и есть инвариант, но не ее координатное представление внутри какой нибудь системы координат.
Автор: vikkiv
Дата сообщения: 15.10.2015 11:51

Цитата:
Такие вопросы на rutracker обсуждали, но уже Matematica удалили правообладатели.
немного ещё на exponenta больше программные обсуждения по этому пакету, варезные там нельзя..
Автор: Alex_B
Дата сообщения: 15.10.2015 23:56
karl_karlsson

Цитата:
= (+/-) sqrt

Скажите пожалуйста,
1) это один, два или три символа?
2) что он или они обозначают?
Автор: karl_karlsson
Дата сообщения: 16.10.2015 00:31
Alex_B
(+/-) sqrt(1-x^2) -> (sqrt(1-x^2)) U (-sqrt(1-x^2))

Окружность - Уравнения


Цитата:
В декартовой системе координат окружность не является графиком (однозначной) функции, но она может быть описана как объединение графиков двух следующих (однозначных) функций:
Автор: Alex_B
Дата сообщения: 16.10.2015 13:08
karl_karlsson

Цитата:
(sqrt(1-x^2)) U (-sqrt(1-x^2))

Во-первых, то, что вы написали, является однозначной, а не "неоднозначной функций".
Во-вторых, вы ввели функцию, значения которой выходят из области действительных и комплексных чисел.
Это всё равно что, когда играешь в компьютерную игру, провалиться за текстуры, если не понятно.
Автор: burewisnyk
Дата сообщения: 26.10.2015 10:28
Добрый день всем!
Скажите, возможно ли получить в Mathematica график с двумя осями ординат и разрывами по оси абцис с изменением масштаба одержанных промежутков и если да, то каким образом. График должен быть типа вот этого:

Если коротко, то есть два частотных спектра: перемещения и силы. На графике нужно провести их сравнение в диапазонах частот 0-1 Гц, 5-7 Гц, 20-40 Гц
Автор: karl_karlsson
Дата сообщения: 26.10.2015 14:06
Alex_B
Даже не знаю что сказать.
Окружность в декартовых координатах двухзначная, и это очевидно даже школьникам.
Значит, получается для записи окружности не хватают комплексных чисел.
Ну что, еще кватернионы надо?

burewisnyk
Например что то такое:

Код:
Graphics[{
Inset[
Plot[{-(x - 0.5)^2 + 1}, {x, 0, 1}, PlotRange -> {0, 1}],
{-1, 0}, Center, {1, 1}],
Inset[
Plot[{-(x - 6)^2 + 1}, {x, 5, 7}, PlotRange -> {0, 1},
Axes -> {True, False}],
{0, 0}, Center, {1, 1}],
Inset[
Plot[{-(x - 30)^2 + 100}, {x, 20, 40}, PlotRange -> {0, 100},
AxesOrigin -> {40, 0}],
{1, 0}, Center, {1, 1}]
},
PlotRange -> 1.5, ImageSize -> 600]
Автор: Alex_B
Дата сообщения: 26.10.2015 14:53

Цитата:
Окружность в декартовых координатах

Мы говорили про "неоднозначные" функции, а не про окружности.


Цитата:
Значит, получается для записи окружности не хватают комплексных чисел.

Для задания окружности хватит одних действительных чисел.
Автор: karl_karlsson
Дата сообщения: 26.10.2015 19:26
Alex_B

Цитата:
Мы говорили про "неоднозначные" функции, а не про окружности.

И привел пример окружности, которая в декартовых координатах задается двухзначной функции, а вот в полярные (это ее собственные координаты между прочим) - однозначной.
Что означает, многозначность - однозначность не есть инвариант.
Автор: Alex_B
Дата сообщения: 26.10.2015 21:19

Цитата:
И привел пример окружности, которая в декартовых координатах задается двухзначной функции

Я не вижу, где там "двухзначная функция". Вы можете привести пример "двухзначной функции"? Вы пытались привести пример "неоднозначной функции", но привели пример обычной функции, причем не пригодной для вычислений.
Автор: BookWarrior
Дата сообщения: 10.12.2015 14:35
ShaLun

Цитата:
По-моему, в метематике есть глюк и я его недавно обнаружил.
Проверьте:
1.) Запустите математику
2.) Вставьте следующие строки каждая в свою ячейку:
a^(-s)/2+a^(1-s)/(s-1)+2*Integrate[(a^2+y^2)^(-s/2)*Sin[s*ArcTan[y/a]]/(Exp[2Pi*y]-1),{y,0,Infinity}]/.{s->-2,a->6}
 
((2^(-1-k)*(-((2-a+b)^k*(-1+a-b+k))+(a-b)^k*(1-a+b+k)))/(1+k)+Integrate[(-1+Coth[Pi*y])*(-(((a-b)^2/4+y^2)^(k/2)*Sin[k*ArcTan[(2*y)/(a-b)]])+((2-a+b)^2/4+y^2)^(k/2)*Sin[k*ArcTan[(2*y)/(2-a+b)]]),{y,0,Infinity}])/.{a->2,b->5,k->2}
 
a^(-s)/2+a^(1-s)/(s-1)+2*Integrate[(a^2+y^2)^(-s/2)*Sin[s*ArcTan[y/a]]/(Exp[2Pi*y]-1),{y,0,Infinity}]/.{s->-2,a->6}
 
3.) Выполните их по очереди
У меня получилось, что первая дает -55, вторая 13/3, третья -54. Но ведь первая и третья одинаковы.
первая дала -55.
средняя не хочет вычисляться - тормознул.
последняя дала -55.

Версия 7.0

Причин наблюдения разных результатов может быть несколько, но без ковыряния твоего компа это сложно понять. Забей, в М. случаются порой вещи. Рецепт один - наблюдай и кодируй так, чтобы несколько повторов начисто давало одинаковый результат. Очень частой проблемой волшебных результатов, например, являются пробелы: М. различает что-то 3 или 4 штуки разных пробелов (это у неё они пробелы, причём почти невидимые), например в результате копирования кода откуда-нибудь, и они дают жестокие артефакты.
Автор: RuPurple
Дата сообщения: 25.01.2016 18:00
Помогите, пожалуйста, разобраться с простенькой задачкой. Нужно подобрать значения параметров экспоненциальной функции.
Ввожу в Математику следующие данные:

Код: tdep = {{250, 20} , {273, 10} , {293, 5} , {315, 2.5} , {333, 1}}
ListPlot[tdep]
FindFit[tdep, b Exp[-k x], {b, k}, x]
Автор: vikkiv
Дата сообщения: 25.01.2016 20:56
RuPurple
у тебя f(20)=250 или f(250)=20 ?
если первый вариант
Код: data={{20,250},{10,273},{5,293},{2.5,315},{1,333}};model=a*Exp[b*x];
fit=ReplaceAll[model,FindFit[data,model,{a,b},x]];
Show[Plot[fit,{x,1,20}],ListPlot[data]]
Автор: RuPurple
Дата сообщения: 25.01.2016 21:21
vikkiv
У меня второй вариант, т.е. f(250)=20. И подходящую функцию я нашел с помощью Wolfram Alpha.
Но меня интересует, почему Mathematica дает неправильный результат, т.е. неправильно подбирает коэффициенты. Что это - ошибка в программе или я что-то не так ввожу?
И еще, я сейчас заметил, что немного ошибся со значениями. Правильно должно быть так: {253, 20} , {273, 10} , {293, 5} , {313, 2.5} , {333, 1.2}. Тогда функция 130251./E^(0.0347086 x) , которую дает Wolfram Alpha, точно ложится на точки. Но это не суть важно, так как Mathematica все равно дает неправильный результат и в том и в другом случае. Вот хотел бы узнать, почему?
Автор: vikkiv
Дата сообщения: 25.01.2016 21:40
RuPurple
У меня WolframAlpha на этот метод тоже выдаёт сомнительные результаты
может ты что-то другое использовал чтобы коэффициенты получить? у каждой функции своя область применения и ограничения.


...кстати с точки зрения статистического анализа подходящая функция выбирается как минимум через R^2 , края на характер отклонений ещё стоит проверить, часто бывает что такие функции по ним начинают давать всё худшие результаты.. (не говоря уже о знании процесса за данными, некоторые вообще полиномы 3+ на свою голову выбирают)
Автор: karl_karlsson
Дата сообщения: 26.01.2016 00:05
RuPurple
Сразу видно на глаз, что b ~ ln(2)/20 ~ 3,47*10^-2

Похоже a ~ 10^5, (253/20~12, 20*2^12).

Ну не знаю, пока поздно вечером - это либо алгоритмы Mathematica слишком ограничены, либо сюда имеется баг, какие присутствуют не один и не два.
Автор: RuPurple
Дата сообщения: 26.01.2016 13:21
vikkiv
В WolframAlpha действительно использовался другой метод. Но в Mathematica, кажется, такой метод отсутствует.

karl_karlsson
Похоже все-таки какой-то баг. В справке Mathematica по функции FindFit имеется очень похожий пример с подбором коэффициентов для a*Exp[-b*x]. И он отрабатывается на ура. Кроме того, несколько дней назад я решил аналогичную задачку с помощью FindFit. Правда, в том случае точек было значительно больше.
Автор: karl_karlsson
Дата сообщения: 26.01.2016 15:47
RuPurple
Похоже алгоритмы:

Код: FindFit[{{253, 20}, {273, 10}, {293, 5}, {313, 2.5}, {333, 1.25}},
a*Exp[b*x], {a, b}, x, Method -> NMinimize]
Автор: popkov
Дата сообщения: 26.01.2016 17:00
RuPurple
Некорректный фитинг экспоненты - очень стандартные "грабли", на которые наступают начинающие пользователи Mathematica год за годом. На сайтах, посвященных Mathematica, темы с обсуждением этой проблемы появляются регулярно. Например, вот сравнительно недавняя тема, где описана именно твоя проблема, причем практически твоими же словами, и дается несколько рецептов ее решения:
http://mathematica.stackexchange.com/q/87645

Насчет алгоритма, используемого Wolfram|Alpha, есть комментарий одного из разработчиков:
http://mathematica.stackexchange.com/a/54638
Если вкратце, то они планируют добавить этот алгоритм в будущем.
Автор: karl_karlsson
Дата сообщения: 26.01.2016 17:59
popkov
Да, не в этом состоится проблема, я уже проверял.

Код: FindFit[{{0, 20}, {20, 10}, {40, 5}, {60, 2.5}, {80, 1.25}},
a*Exp[b*x], {a, b}, x]

Страницы: 12345678910111213141516171819202122232425262728293031323334

Предыдущая тема: Идея несуществующей программы...


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.