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

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
r_green, popkov
Думаю, проблема возникает от того, что Mathematica объединяет компьютерная алгебра и численный пакет. Значит, имеются абсолютные алгебраические операции символьным переменным и те же операции, численных переменных. Но у численных переменных ни ноль ни бесконечность не единственные. Также существует неопределенный элемент - тот элемент, значение которого меньше значения вычислительной погрешности.
Численное точное преставление имеет такую особенность
1/3 = 0,3333333(3)
2/3 = 0,6666666(6)
3/3 = 0,9999999(9)
3/3 = 1,0000000(0)
целые числа можно представить двумя способами.
Если уже численным образом, то что то такое получается
0,9999999(random) уже одно и то же вне зависимости от того что имеется у random
1,0000000(random) совсем другое, также вне зависимости от того что имеется у random
А это уже множества, если надо их описывать точным алгебраическим образом.
 
Не знаю насколько правильно все описал, но идея вот такая - например, Times[] абсолютный алгебраический и Times[] численный, это разные операции. Один оперирует объектом, другой - его  представлением у которого кроме абсолютных алгебраических явлении наблюдая свои численные явления.

Всего записей: 2027 | Зарегистр. 14-03-2007 | Отправлено: 12:59 13-02-2011 | Исправлено: karl_karlsson, 13:00 13-02-2011
popkov

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

Цитата:
Всё, что я предложил - это рассматривать Times[] как модель математической операции умножения. Вряд ли это можно назвать отступлением от общей логики математического пакета вообще, а не только Mathematica...

А как отделить те функции, которые следует рассматривать как модели математических операций от тех, которые надо рассматривать именно как функции, специфические для данной среды программирования?
 
Например, ранее обсуждавшиеся операции Equal и SameQ. Как минимум первая из них - явно ассоциируется с математической операцией равенства. Однако это "равенство" на деле игнорирует последние 7 цифр битового представления числа! Так можно ли утверждать, что функция Equal является моделью математической операции равенства?!  
 
Хорошо, что в справке к Equal это хотя бы упомянуто. А в справках к Greater и Less - даже не упоминается, хотя действут та же "фича"!  
 
Ну и где здесь единая логика?! Как пользователь должен выбирать функции, если их названия лгут, и даже в справке к ним зачастую нельзя найти важнейших их "особенностей", несовместимых с их простым математическим предназначением?
 
Добавлено:
Откровенно говоря, я вообще не понимаю, с какого черта разработчики решили отбрасывать последние 7 цифр битового представления числа. Почему не 8? Почему не 2? Даже эта, полудокументированная особенность, "подвешивает" пользователя. Хотя я и видел в документации это замечание раньше, я пропускал его "мимо ушей" из-за очевидной абсурдности и полной неочевидности мотивации такого поведения примитивнейших и фундаментальнейших (казалось бы!) функций.  
 
Предположим, я захотел написать функцию, которая будет сравнивать все цифры битового представления числа. Оказывается, эта элементарнейшая задача в Mathematica требует привлечения таких сложных функций, как RealDigits или SetPrecision. И только путем проб и ошибок можно обнаружить, что реализовать полноценную операцию равенства, по-видимому, можно с помощью функций Min и Max, которые по счастливой случайности не отбрасывают последние 7 цифр двоичного представления числа (что в справке не отражено). Однако по самой очевидной логике эти функции должны быть сложнее, чем операция Equal, а последняя - фундаментальнее, чем предыдущие! На деле же для реализации примитивнейшей функции проверки равенства двух чисел своими силами (удивительно, но среди встроенных функций ее нет!) надо прибегать к более сложным функциям! Где здесь логика?!

Всего записей: 1833 | Зарегистр. 22-03-2003 | Отправлено: 14:03 13-02-2011 | Исправлено: popkov, 14:30 13-02-2011
karl_karlsson



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

Цитата:
Например, ранее обсуждавшиеся операции Equal и SameQ. Как минимум первая из них - явно ассоциируется с математической операцией равенства. Однако это "равенство" на деле игнорирует последние 7 цифр битового представления числа! Так можно ли утверждать, что функция Equal является моделью математической операции равенства?!  

В точности то что писал выше. Надо иметь Equal абсолютный алгебраический и Equal численный. Это является Equal численный. Отличатся будут они множеством аргументов над которое они оперируют и реализацией.
 

Цитата:
Ну и где здесь единая логика?! Как пользователь должен выбирать функции, если их названия лгут, и даже в справке к ним зачастую нельзя найти важнейших их "особенностей", несовместимых с их простым математическим предназначением?

Конечно логики нету. Если абсолютные алгебраические операции символьным переменным и те же операции, численных переменных совместить в одно, то такое и получается.
 

Цитата:
Откровенно говоря, я вообще не понимаю, с какого черта разработчики решили отбрасывать последние 7 цифр битового представления числа. Почему не 8? Почему не 2?

Потому что численный Equal работает над представлением. Но представлении целое множество. Почему мы десятичной системой используем? Так выбрали.
 

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

Это уже машинно специфическое программирование, отладка и т.д. На графических калькуляторах, например, такое сделать нельзя, потому что внутренним представлением увидеть извне нельзя. Так и надо быт ввиду его машинной специфики.
 

Цитата:
И только путем проб и ошибок можно обнаружить, что реализовать полноценную операцию равенства, по-видимому, можно с помощью функций Min и Max, которые по счастливой случайности не отбрасывают последние 7 цифр двоичного представления числа (что в справке не отражено).

У них вполне возможно имеется нерегулярное поведение. Что то отличающееся абсолютных алгебраических операции. Аккумуляция ошибок, округление и т.д.

Всего записей: 2027 | Зарегистр. 14-03-2007 | Отправлено: 15:47 13-02-2011
popkov

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
karl_karlsson
Цитата:
У них вполне возможно имеется нерегулярное поведение. Что то отличающееся абсолютных алгебраических операции. Аккумуляция ошибок, округление и т.д.  

Да какое может быть округление, если речь идет о двоичном представлении числа?! Функция сравнения битовых последовательностей встроена в процессор, здесь "измудряться" некуда!
 
Откровенно говоря, этот последний пост - асолютно деструктивен! Вместо анализа причин и следствий у вас один ответ: "на все воля Божья" (точнее, воля разработчиков)! Остается только добавить: "Неисповедимы пути Господни" и закрывать эту тему нафиг, как и вообще любую науку, отличную от богословия! Прямо противно становится, ей богу!
 
Добавлено:
r_green

Цитата:
Всё, что я предложил - это рассматривать Times[] как модель математической операции умножения.

Какое отношение к математической операции умножения может иметь следующее поведение:
 
In[1]:= 0*{}
 
Out[1]= {}
 
In[2]:= 0*a
 
Out[2]= 0
 
In[3]:= a = {}; 0*a
 
Out[3]= {}
 
Явно, что здесь дело вовсе не в том, что разработчики стремились максимально приблизить некоторые функции к моделям математических операций. Но тогда остается по-прежнему непонятным вот это:
 
In[1]:=
0 * "some string"
 
Out[1]=
0

Всего записей: 1833 | Зарегистр. 22-03-2003 | Отправлено: 17:39 13-02-2011
karl_karlsson



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

Цитата:
Да какое может быть округление, если речь идет о двоичном представлении числа?! Функция сравнения битовых последовательностей встроена в процессор, здесь "измудряться" некуда!

У этих чисел есть свое происхождение, какие то вычисления.
Вот где вычислительная алгебра отличается абсолютной - число абсолют, его представление варианта (не скажу так ли в точности терминология, но что то такое). Результата абсолютного вычисления не зависит ни от чем, например получается pi, вот pi, символ pi. Вот уже численным способом получается представление pi, которое является варианта параметров вычислительного процесса.
Сравнять двух абсолютных pi всегда дает один и тот же результат, так как абсолютное pi только одним и является. Оно всегда самим собой и равняется.
А вот сравнять двух его представлении вполне возможно, так как они могут и отличатся.
 
Даже точное двоичное представление вырождено:
1 = 1,0000000(0)
1 = 0,1111111(1)
Если сделать переход к численное двоичное представление
1,0000000(random)
0,1111111(random)
вырождение снимается и они уже отличаются. Так, округление является неотъемлемого свойства всякого представления.
 

Цитата:
Вместо анализа причин и следствий у вас один ответ: "на все воля Божья" (точнее, воля разработчиков)!

Значит, фундаментальная причина состоится в том, что абсолютные объекты алгебры в природе не существуют. Другими словами все их точные представления бесконечны и вырождены.
Также не существует какое то привилегированное естественное представление. Поэтому у разработчиков есть свобода выбора. Вот, его документация совсем другое дело.
 

Цитата:
Остается только добавить: "Неисповедимы пути Господни"

Ну, к сожалению, состояние дел в многих областей теории чисел такое и является на самом деле на сегодня.
 

Цитата:
и закрывать эту тему нафиг, как и вообще любую науку, отличную от богословия!

Значит код Mathematica закрытым и является, также и микрокод процессоров, как и самое их устройство. Реверсинг тоже наука, но уже выходить за рамки использования, как и написал отладка и т.д.
 

Цитата:
Прямо противно становится, ей богу!

Ну не поняли что имел ввиду. Русский у меня не очень...
 
Добавлено:

Цитата:

Код:
In[1]:= 0*{}  
Out[1]= {}  
In[2]:= 0*a  
Out[2]= 0  
In[3]:= a = {}; 0*a  
Out[3]= {}

 
Это так и надо быт. Empty set, так сказать, является "ниже" нуля.
Нуль - у нас число и оно нуль.
Empty set - у нас даже ничего нет.

Всего записей: 2027 | Зарегистр. 14-03-2007 | Отправлено: 18:41 13-02-2011
popkov

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
karl_karlsson
Цитата:
Даже точное двоичное представление вырождено:
1 = 1,0000000(0)
1 = 0,1111111(1)  
Ну вообще-то второе число - лишь бесконечно близко к единице, но всегда заведомо меньше ее. Впрочем, я не специалист в области теории чисел, так что вопрос, равны ли бесконечно близкие величины в ней, не стану трогать. В системах компьютерной математики они равны быть не могут, поэтому и вопрос о "вырождении" снимается: всегда можно сказать, какое число больше, какое меньше!
Цитата:
Значит, фундаментальная причина состоится в том, что абсолютные объекты алгебры в природе не существуют. Другими словами все их точные представления бесконечны и вырождены.
Первый вариант представления единицы стал "бесконечным" только благодаря вашему желанию. Бесконечная дробь - это сумма бесконечного ряда рациональных чисел, каждое из которых является отношением двух натуральных чисел, каждое из которых, в свою очередь, имеет однозначное и невырожденное представление в математике! Иначе вся математика превратилась бы в муть, и не только не приводила бы ум в порядок (как говорил Ломоносов), но лишала бы всякой ясности ума!  

Цитата:
Также не существует какое то привилегированное естественное представление. Поэтому у разработчиков есть свобода выбора.  

Никакой свободы выбора в случае двух вариантов представления единицы не вижу: если она и есть в чистой математике, то в машинной математике в данном случае все однозначно! Не надо мутить воду!

Цитата:
 Ну, к сожалению, состояние дел в многих областей теории чисел такое и является на самом деле на сегодня.
Это весьма прискорбно. Похоже, вы слишком глубоко углубились в свою область, где нет ясности. В результате утратили и ясность собственного мышления. Сразу вспоминается мой знакомый, который после окончания мехмата МГУ (с красным дипломом) признался, что не может вспомнить, как решается квадратное уравнение...

Всего записей: 1833 | Зарегистр. 22-03-2003 | Отправлено: 20:47 13-02-2011
karl_karlsson



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

Цитата:
Ну вообще-то второе число - лишь бесконечно близко к единице, но всегда заведомо меньше ее. Впрочем, я не специалист в области теории чисел, так что вопрос, равны ли бесконечно близкие величины в ней, не стану трогать. В системах компьютерной математики они равны быть не могут, поэтому и вопрос о "вырождении" снимается: всегда можно сказать, какое число больше, какое меньше!

Это аналог десятичного:

Цитата:
3/3 = 0,9999999(9)  
3/3 = 1,0000000(0)

Фихтенгольц Г. М. Курс дифференциального и интегрального исчисления, Том 1, §2, n9
В системах компьютерной математики они уравняются округлением. Для снятия вырождения оно и существует. Есть ли такое у Mathematica? - ну код закрытым является...
 

Цитата:
Первый вариант представления единицы стал "бесконечным" только благодаря вашему желанию.

Ну представления всех рациональных чисел всегда конечны. Так говорить теория информации.
1 = 1,(0)  
1 = 0,(1)
Оба представления конечны. Бесконечные представления имеют только иррациональные числа.
 

Цитата:
Бесконечная дробь - это сумма бесконечного ряда рациональных чисел, каждое из которых является отношением двух натуральных чисел, каждое из которых, в свою очередь, имеет однозначное и невырожденное представление в математике! Иначе вся математика превратилась бы в муть, и не только не приводила бы ум в порядок (как говорил Ломоносов), но лишала бы всякой ясности ума!  

Это абсолютная алгебра. У численною уже бесконечности нет, потому что у них численных представлении нет.
 

Цитата:
Никакой свободы выбора в случае двух вариантов представления единицы не вижу: если она и есть в чистой математике, то в машинной математике в данном случае все однозначно! Не надо мутить воду!

Не это имел ввиду. А вот, у них выбор этих 7 двоичных знаков, для которых речь шла выше.
(Второе представление единицы "не существует численным образом", так как "не существуют численным образом и иррациональные числа".)
Неоднозначное численное представление имеется у рациональных чисел, а вот у рациональных оно бесконечное. Вот где отличия численной и абсолютной математики - подумайте как будете представлять pi. Только через какое то конечное выражение определяющее его. И если у вас двух таких выражении как будете их сравнивать численным образом? Вычисляете.
Если у одного выражения большая численная ошибка (ну алгоритмы), то поэтому и этих 7 знаков отбрасывают... Сравнивать их - отладка алгоритмов уже.
 

Цитата:
Это весьма прискорбно. Похоже, вы слишком глубоко углубились в свою область, где нет ясности. В результате утратили и ясность собственного мышления. Сразу вспоминается мой знакомый, который после окончания мехмата МГУ (с красным дипломом) признался, что не может вспомнить, как решается квадратное уравнение...

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

Всего записей: 2027 | Зарегистр. 14-03-2007 | Отправлено: 21:47 13-02-2011
popkov

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
karl_karlsson
Вы все усложняете. Я не вижу ни малейших оснований препятствовать тому, чтобы два (уже готовых, записанных в двоичном виде и значащих именно то, что написано, без "видений") числа пользователь не мог сравнить простейшей встроенной функцией, как это делается во всех нормальных языках программирования. Вопрос, как получены эти числа, роли не играет никакой.  
 
Добавлено:
r_green

Цитата:
MyEqual[a_, b_] := SetPrecision[a, Precision[a] + 3] == SetPrecision[b, Precision[b] + 3]  

Только что было предложено более красивое решение:
 
MyEqual[x_, y_] := Order[x, y] == 0
 
Эта функция позволяет проверить равенство двух чисел, не отбрасывая последние 7 цифр двоичного представления!

Всего записей: 1833 | Зарегистр. 22-03-2003 | Отправлено: 22:05 13-02-2011
karl_karlsson



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

Цитата:
Вы все усложняете.

Так и есть на самом деле, это самая большая проблема у меня насчет математики.
 

Цитата:
Я не вижу ни малейших оснований препятствовать тому, чтобы два (уже готовых, записанных в двоичном виде и значащих именно то, что написано, без "видений") числа пользователь не мог сравнить простейшей встроенной функцией, как это делается во всех нормальных языках программирования. Вопрос, как получены эти числа, роли не играет никакой.

Это действительно так.
Думаю, надо было Mathematica помечала каким то образом то что сама вычисляла и то что ее предоставлено извне. Это физическим образом представлении величин - значение +/- ошибка исчислении.
И чтобы была команда менять значении ошибок.

Всего записей: 2027 | Зарегистр. 14-03-2007 | Отправлено: 22:43 13-02-2011
TomasVercetti

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кто-нибудь занимался приобретением Mathematica (для организации)? А то я им в wolfram и e-mail отправлял, и с сайта форму — молчат как партизаны!

Всего записей: 319 | Зарегистр. 09-01-2006 | Отправлено: 13:55 16-02-2011
popkov

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Очень грустный глюк NIntegrate 7-ки:
 
In[15]:= NIntegrate[Sin[x^2], {x, -5, -2}]
 
Out[15]= 0.276859
 
In[1]:= N[Integrate[Sin[x^2], {x, -5, -2}]]
 
Out[1]= -0.276859
 
В 5-ке все в порядке. В 8-ке исправили, но что-то уж слишком печально все это...
 
Добавлено:
Любопытно, кстати, что при отключении symbolic preprocessing все становится как надо:
 
In[15]:= f[x_?NumericQ] := Sin[x^2]
NIntegrate[f[x], {x, -5, -2}]

 
Out[16]= -0.276859
 
In[6]:= NIntegrate[Sin[x^2], {x, -5, -2},  
 Method -> {"SymbolicPreprocessing", "SymbolicProcessing" -> 0}]

Out[6]= -0.276859

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

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

Цитата:
Кто-нибудь занимался приобретением Mathematica (для организации)? А то я им в wolfram и e-mail отправлял, и с сайта форму — молчат как партизаны!
 

 
Нужно писать в Softline:  
http://soft.softline.ru
 
Мы покупали через эту фирму.

Всего записей: 780 | Зарегистр. 26-02-2005 | Отправлено: 16:28 16-02-2011 | Исправлено: Andrew10, 16:28 16-02-2011
TomasVercetti

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Andrew10,
 
Спасибо, написал им. Как быстро они обычно отвечают?

Всего записей: 319 | Зарегистр. 09-01-2006 | Отправлено: 17:29 16-02-2011 | Исправлено: TomasVercetti, 17:31 16-02-2011
vikkiv



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TomasVercetti
 
Если до десяти лицензий то смысла запросов прайс-листа - нет,
на организацию лицензия покупается так-же как и для домашнего пользования - через их веб-магазин на сайте (скачать или получить диск / электронный инвойс),
store.wolfram.com/catalog/
(выбрав страну / у лицензии есть ограничения по стране приобритения/пользования, хотя если например научный/торговый агент ездит по странам в командировки - наверное у них уточнять надо)
 
просто выбрать надо не "домашную версию" , а обычную
(ещё есть прайсы для образовательных учереждений и для гос-организаций)
На "soft.softline.ru" казалось-бы дороговато, но эта та-же цена что и на "wolfram.com" просто ещё плюсом идёт 18% НДС (если скачваете то под таможенный режим ничего не попадает, следовательно таможенных сборов/пошлин нет)
 
 
А вообще вы покупаете ключ, т.е. права пользования интеллектуальной собственностю, отсюда - большой вопрос насчет ставки ндс 18% ..
Мутить можно и через частника (тогда сампрайс софта на порядок ниже, но для РФ нету домашних лицензий т.к. знают чем грозит..).. хотя не думаю что для серёзной организации ндс такое-уж нежелательное препятствие.
 
(Ответ: нет , для приобритения на компанию не занимался)

Всего записей: 747 | Зарегистр. 10-11-2005 | Отправлено: 17:46 16-02-2011 | Исправлено: vikkiv, 17:53 16-02-2011
TomasVercetti

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vikkiv,
 
Спасибо — интересная информация к размышлению. Приобретаться будет (если будет) более 10 точно; для университета. Проблема в том, что, по информации с офиц. сайта, поддержка количества ядер на компьютере, возможность организации кластера — это всё отдельные плюшки за отдельные деньги, цену же предлагают узнавать в индивидуальном порядке.

Всего записей: 319 | Зарегистр. 09-01-2006 | Отправлено: 18:22 16-02-2011
Andrew10

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TomasVercetti
Если для университета, то обязательно нужно покупать академическую лицензию, это дает существенные скидки, хотя и дополнительная морока с оформлением покупки. В частности, мы подписывали у ректора гарантию, что условия пользования лицензией будут строго соблюдаться, а также посылали копии документов, что Вуз официально аккредитован, сейчас точно не помню какие. Но если написать в SoftLine, то они все объяснят, и даже потом долго будут еще слать всякие рекламы и предложения по почте про обновления а также и про другие программные продукты.

Всего записей: 780 | Зарегистр. 26-02-2005 | Отправлено: 22:18 16-02-2011
TomasVercetti

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо всем за помощь — дело в производстве! Кстати, сказали, что "8.0.1 coming soon".
 
Попутно возник теоретический вопрос — погуглил, но ответа не нашёл.Предположим, хочу ввести запись в виде 1.5e10. Есть предопределённые инфиксные операторы, на которые можео навесить функционал, например, A\[CirclePlus]B. Можно ли произвольный символ (e) так опредлить? (Просто на e нужное правило навесить можно с помощью Notation InfixNotation, но необходимо писать «1.5e 10» — с пробелом после e.) Либо, другой вариант, назначить (input)box'ам, удовлетворяющим шаблону типа _Number e _Number, соответствующее правило. Есть у кого-нибудь идеи, как это можно сделать? Спасибо.
 
P.S.: С 23-м!

Всего записей: 319 | Зарегистр. 09-01-2006 | Отправлено: 22:13 22-02-2011 | Исправлено: TomasVercetti, 09:35 23-02-2011
popkov

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

Цитата:
Есть предопределённые инфиксные операторы, на которые можео навесить функционал, например, A\[CirclePlus]B. Можно ли произвольный символ (e) так опредлить?

Сам символ, наверное, нельзя, но его аналог из Unicode, выглядящий похоже, возможно, все же можно. Думая над вашим вопросом, я обнаружил очень интересный файлик \SystemFiles\FrontEnd\TextResources\UnicodeCharacters.tr, в котором, судя по его виду, определяются функции юникодовых символов, включая и \[CirclePlus]. Сейчас попробую поиграть с ним.
 
Добавлено:
Поиграл, но результаты отрицательные. Разве что разработчики могут подсказать какую-то хитрость.

Всего записей: 1833 | Зарегистр. 22-03-2003 | Отправлено: 16:04 23-02-2011
r_green



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

Цитата:
Попутно возник теоретический вопрос — погуглил, но ответа не нашёл.Предположим, хочу ввести запись в виде 1.5e10.

 

Код:
 
In[1]:= MakeExpression[
  RowBox[{m_ /; NumberQ[ToExpression[m]],  
    e_ /; StringMatchQ[e, "e" ~~ __?(IntegerQ[ToExpression[#]] &)]}],  
  f_] := MakeExpression[m <> "*^" <> StringDrop[e, 1], f]
 
In[2]:= 1.234567e8
 
Out[2]= 1.23457*10^8
 

 
 
Добавлено:
В Mathematica 8 это не работает толком - видимо баг. В 7.01 всё нормально.

Всего записей: 145 | Зарегистр. 17-09-2004 | Отправлено: 20:24 23-02-2011 | Исправлено: r_green, 21:51 23-02-2011
TomasVercetti

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
popkov, r_green — спасибо! Буду разбираться. На самом деле, в 8ке само по себе число рассчитывается правильно, но 5*1.234567e8 или 1.234567e8*5 уже нет.

Всего записей: 319 | Зарегистр. 09-01-2006 | Отправлено: 23:25 24-02-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