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

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

Автор: r_green
Дата сообщения: 01.12.2010 20:31
popkov

Цитата:
Дефектом является то, что величина перестает быть тождественна самой себе, если устремляется к бесконечности.

Понятно. Простите, я почему-то подумал, что Вы против вычислимости Subtract[a, a] для неопределённого а.

Здесь согласен - дефект. Но дефект скорее не в Mathematica, а в неопределённости самого понятия бесконечности как значения величины.
С математической точки зрения: с одной стороны, результат inf - inf неопределён, а с другой -
a - a = 0 при a = inf. Получаем нарушение симметричности отношения равенства...
Таким образом, понятие бесконечности в математике не менее двусмысленно, чем в Mathematica. Стоит ли усложнять язык, моделируя все причуды этого полужаргонного понятия? А усложнять придётся - как минимум, нужно отазаться от декомпозиции вычисления ф-ции и её аргументов, на случай если аргумент равен inf.

Автор: popkov
Дата сообщения: 02.12.2010 05:44

Цитата:
С математической точки зрения: с одной стороны, результат inf - inf неопределён, а с другой -
a - a = 0 при a = inf.

C математической точки зрения, каждая "бесконечность" индивидуальна, это не просто inf, а предел функции при стремлении её аргумента к некой величине (в т.ч. и ко "сколь угодно большой" величине, т.е. при неограниченном возрастании аргумента). Поэтому с такими объектами можно работать. Эту проблему и метод её решения обсуждает Richard Fateman (один из ключевых разработчиков Maxima) в своей недавней статье (см. раздел 4). Решение, которое он предлагает, - нумеровать "бесконечности" в рамках одной программы и не объединять разные (а также "бесконечности" и константы) до окончания вычисления. При этом одинаковые "бесконечности" могут вычитаться (получится ноль), складываться и т.д. Вероятно, при дальнейшем развитии CAS станет возможно работать с "бесконечностями" именно как с пределами, а не просто нумеровать их. Но пока - хоть так бы...
Автор: r_green
Дата сообщения: 02.12.2010 12:14
popkov

Цитата:
Какому математическому объекту соответствует объект Mathematica и её язык с таким двусмысленным поведением?

Например, Mathematica полностью моделирует кольцо целых чисел (Z).

Цитата:
Решение, которое он предлагает, - нумеровать "бесконечности" в рамках одной программы

Мне кажется, это не очень хорошее решение. Оно подходит для простых присваиваний a = inf,
но как быть с
a = Limit[expr]
b = Limit[expr]
?
Если просто каждый раз генерировать уникальную бесконечность, то нельзя будет вычислять a-b в этом случае.

Или ещё проще:
a := Limit[expr]
a-a




Автор: popkov
Дата сообщения: 03.12.2010 05:10
r_green

Цитата:
Если просто каждый раз генерировать уникальную бесконечность

Не каждый раз, а только если такой еще не появлялось.

Автор: popkov
Дата сообщения: 03.12.2010 15:08
Замечательное откровение одного из сотрудников WRI, по-видимому имеющего отношение к разработке функций линейной алгебры в MMa в ответ на вопрос об одной странности пакета LinearAlgebra` в 8-ке:

Вот вопрос:

Цитата:
This is version 8:

I'd like to use LinearAlgebra`MatrixConditionNumber to find
condition number of some matrix.

btw, This command lists the functions in linear algebra.
Names["LinearAlgebra`*"]

But Mathematica says this package is now obsolete, and
functionality is now in the kernel.

<<LinearAlgebra`
General::obspkg: {At Line = 3, the input was:,
<<LinearAlgebra`,LinearAlgebra`} is now obsolete. The
legacy version being loaded may conflict with current
Mathematica functionality. See the Compatibility Guide for
updating information. >>

But When I follow the above, I get to page, where at the bottom
it shows 3 functions, one of them is MatrixConditionNumber,
but it does not show what replaced it in the kernel, instead
it points to a link to MathSource article:

"These functions were available in previous versions of Mathematica
and are now available on the web at
library.wolfram.com/infocenter/MathSource/6770"

?

So, is there no build-in function to compute condition number now
in Mathematica?

I know I can find the max eigenvalue, divide it by the min
eigenvalue (absolute values), and this gives me the condition
number. But should not such a function be part of the system?

Or may be I overlooked it? I did search for it, can't find it
in the documenation center.

btw, I did also try the natural language interface also, and I asked
W/ALpha by typing

= matrix condition number

but it replied back with a chemical formula C16 H13 C1 N2 O, named diazepam, which is not what I wanted.

thanks,
--Nasser

(особенно забавен ответ Wolfram|Alpha ).

И вот ответ разработчика:

Цитата:
I made the suggestion that MatrixConditionNumber become a true kernel
function.

I still use the LinearAlgebra`MatrixConditionNumber to find the condition
number.

> I know I can find the max eigenvalue, divide it by the min
> eigenvalue (absolute values), and this gives me the condition
> number. But should not such a function be part of the system?

Yes, I agree.

Oliver


Т.е. разработчик, программируя системное сообщение о том, что функция LinearAlgebra`MatrixConditionNumber является частью устаревшего пакета, исключенного из стандартного инсталлятора Mathematica, и теперь внесена в ядро системы, даже не удосужился это проверить! Оказывается, она вовсе не внесена в ядро, а пакет по-прежнему устанавливается вместе с системой (по крайней мере, та его часть, где определена данная функция - не могу проверить сам ввиду отсутствия 8-ки)! И сам разработчик пользуется ею!.. До чего дошел "прогресс"...

Добавлено:
Ё-мое, в 7.0.1 на странице Compatibility/tutorial/LinearAlgebra/MatrixManipulation внизу написано то же самое, только ссылка на mathsource неверная, в отличие от 8-ки:

Цитата:
These functions were available in previous versions of Mathematica and are now available on the web at library.wolfram.com/infocenter/MathSource/6777:
LinearEquationsToMatrices
InverseMatrixNorm
MatrixConditionNumber

А на странице tutorial/LinearAlgebraMatrixComputations написано:
Цитата:
Additional functionality related to this tutorial has been introduced in subsequent versions of Mathematica. For the latest information, see Matrices and Linear Algebra.
Зашибись!.. Это всё - лишь иллюзии разработчика, который лишь предполагал, что это правда... Но внес в 7-ке в документацию,а в 8-ке даже системное сообщение зафигачил!
Автор: r_green
Дата сообщения: 03.12.2010 16:56

Цитата:
I asked W/ALpha by typing

= matrix condition number

but it replied back with a chemical formula C16 H13 C1 N2 O, named diazepam

Превосходный образец машинного юмора!

Автор: popkov
Дата сообщения: 09.12.2010 19:17
Еще парочка недавно опубликованных фундаментальных глюков Mathematica (проверил присутствие в версиях 5.2 и 7.0.1, но, вероятно, они есть во всех версиях, где есть данные функции).

Глюк первый: "зомби" вылезают из Module[]!
Как вы думаете, почему MathKernel.exe, даже при выставленном
$HistoryLength = 0
, все равно в процессе вычислений (даже если вызывается одна и та же функция, а результаты её работы только экспортируются в файл) постоянно накапливает оперативную память, которую нельзя сбросить (и даже замедлить её наращивание) никакими встроенными функциями? Отчасти на этот вопрос проливает свет недавно обнаруженный баг функции Module[], введенной в версии 2 как альтернатива кривоватому Block[]. Так вот, оказывается, эта функция с легкостью может начать генерировать при каждом её вызове "вечные" мусорные переменные с атрибутом Temporary, в совершенно неограниченном количестве. Причем к каждой такой переменной могут быть привязаны ещё её Definition[] и Attributes[]. Вот уж пример универсальности поговорки: "Нет ничего более постоянного, чем временное (Temporary)!"

Рассмотрим "нормальное" поведение Module[]. Определим простую функцию:
[no]
In[1]:=
a[b_] := Module[{c, d}, c := 1; d := 9; d];[/no]

Теперь посмотрим, какие переменные появились в текущем контексте:

[no]In[2]:=
Names[$Context<>"*"]

Out[2]=
{a,b,c,d}[/no]

Это - "нормально", т.е. by design.

А теперь введем внутрь Module[] условие (Condition[]):
[no]
In[1]:=
a[b_] := Module[{c, d}, c := 1; d := 9; d /; b === 1];
[/no]
Что же мы имеем теперь в текущем контексте?

[no]In[2]:=
Names[$Context<>"*"]

Out[2]=
{a,b,c,c$,d,d$}[/no]

При введении Condition ("/;") появилась мусорная переменная "c$" c атрибутом Temporary, которая к тому же отказывается удаляться через[no] Remove[c$][/no]. Но она хотя бы не размножается. Переменная "d$" вроде как и правда должна появляться из-за Condition.

А теперь посмотрим, что происходит при вызове функции, если условие выполняется:
[no]
In[3]:=
a[1];
Names[$Context <> "*"]
{#,ToString[Definition[#]]}&/@Select[%,MemberQ[Attributes[#],Temporary]&]//ColumnForm

Out[4]=
{a,b,c,c$,d,d$,d$16}

Out[5]=
{"c$","Attributes[c$] = {Temporary}"}
{"d$","Attributes[d$] = {Temporary}"}
{"d$16","Attributes[d$16] = {Temporary}"}[/no]

Если условие в Condition выполняется, происходит генерация "зомби" - мусорных переменных с атрибутом Temporary, которые, согласно документации, должны автоматически удаляться после завершения выполнения Module[]. При каждом выполнении Module[] генерируется новая такая переменная, причем по завершении работы Module[] она не удаляется:
[no]
In[6]:=
Table[a[1],{1000}];
Length@Names[$Context <> "*"]

Out[7]=
1007[/no]

Надо, правда, признать, что при выставлении $HistoryLength = 0 такое поведение воспроизводится только в том случае, если все вызовы a[1] происходили в одной и той же ячейке (см. последний пример). При выполнении новой ячейки лишние мусорные переменные (кроме c$) и в самом деле удаляются, если $HistoryLength = 0. Однако в практических задачах все вызовы как раз и происходят в пределах одной ячейки, поэтому данный баг вылезает "во всей красе". Следует также напомнить, что Module[] активно используется не только в дополнительных пакетах, поставляемых с системой, но и, несомненно, в высокоуровневом коде втроенных в ядро функций.

===============================================
Глюк второй: "шутливый" Compile[].

На этот раз - рандомные результаты работы скомпилированной функции в версиях 5.2 и 7.0.1 (в 8.0 при компиляции возникает runtime error).

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

abc1 = Compile[{}, Module[{a, b, c}, a = 1.0;
b = {1.0, 2.0};
c = {{1.0, 2.0}, {3.0, 4.0}};
a*b*c]];
abc2 = Compile[{}, Module[{a, b, c}, a = 1.0;
b = {1.0, 2.0};
c = {{1.0, 2.0}, {3.0, 4.0}};
(a*b)*c]];
abc3 = Compile[{}, Module[{a, b, c}, a = 1.0;
b = {1.0, 2.0};
c = {{1.0, 2.0}, {3.0, 4.0}};
a*(b*c)]];

Попробуйте теперь несколько раз последовательно выполнить ячейку:

abc1[]
abc2[]
abc3[]

и сравните результаты!
Автор: popkov
Дата сообщения: 10.12.2010 07:30
Дополнение по поводу первого бага.

Даже при выставлении $HistoryLength = 0 мусорные переменные не удаляются при выполнении другой ячейки, если результаты вызовов Module[] были хотя бы на время запомнены в какой-либо переменной:
[no]
In[1]:=
$HistoryLength=0;
a[b_]:=Module[{c,d},c:=1;d:=9;d/;b===1];

In[3]:=
lst=Table[a[1],{1000}];
Length@Names[$Context<>"*"]

Out[4]=
1007

In[5]:=
lst=.
Length@Names[$Context<>"*"]

Out[6]=
1007[/no]

Т.е. этот баг действительно может быть причиной неограниченного роста потребления памяти ядром системы...
Автор: popkov
Дата сообщения: 11.12.2010 14:25
r_green

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

Недавно в официальной группе новостей появилось очередное сообщение о проблеме, вызванной "symbolic preprocessing" числовых функций. Такие проблемы всегда являются камнем преткновения для новичков, поскольку никаких адекватных сведений в документации по ним нет, и человек должен искать наощупь, пробуя все мыслимые варианты обходных путей - причем наиболее очевидные и документированные оказываются ложны! Даже опытным пользователям приходится тратить дни в бесплодных поисках решения проблемы, которой, по определению, просто быть не должно. Проблема в том, что функции, предназначенные для поиска числовых решений, зачем-то пытаются искать их символьно, заводя новичка в ловушку ложности описанного в документации численного предназначения!

Вот очередной крик души:

Цитата:
Тема: Desperate due to NMinimize

I am working with Mathematica 7. I want to use NMinimize to find the
minimum of a function that is calculated by an external program. It is
called by Run with some arguments and it writes the result into a
file. I then use Import to read the value. Such a situation can be
mimicked by:

dd[x_]:=(Export["test.dat",x^2];Import["test.dat"])[[1, 1]]
NMinimize[dd[x],x]

If you give the function dd a value it returns the result correctly
(and writes a file). But NMinimize does not specify a value for x but
tries to evaluate the expression generally for a global x. I tried
everything that I could possibly think of using HoldAll, Unevaluated,
With[{x=x},], ... Nothing worked.

Is there anybody that can help me?


Повторяю, что сообщения о подобных проблемах появляются регулярно, но по ключевым словам их не найти, т.к. авторы таких сообщений и понятия не имеют о "symbolic preprocessing" числовых функций, не упоминающемся в документации нигде в явном виде!
Автор: r_green
Дата сообщения: 11.12.2010 18:11
popkov

Цитата:
Вот очередной крик души

По-моему, проблема решается довольно просто:

Код: dd[x_/;NumericQ[x]]:=(Export["test.dat",x^2];Import["test.dat"])[[1, 1]]
Автор: popkov
Дата сообщения: 12.12.2010 13:43
r_green

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

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

Цитата:
Мне кажется, это вопрос к качеству документации, а не языка.

В первую очередь к документации, конечно. Но и язык - часть документации. И символ "N" однозначно свидетельствует о предназначении функции - это также и отражено в документации везде.
Автор: r_green
Дата сообщения: 12.12.2010 15:34
popkov

Цитата:
символ "N" однозначно свидетельствует о предназначении функции - это также и отражено в документации везде.

N указывает на характер результата ф-ции, а не на способ его вычисления. Алгоритм вычисления этого результата - внутреннее дело ф-ции (если он явно и жёстко не указан в опциях, конечно).
В частности, никто не запрещает воспользоваться в алгоритме аналитическим представлением целевой ф-ции, хотя бы для настройки параметров основного алгоритма.
Автор: popkov
Дата сообщения: 12.12.2010 16:01
r_green

Цитата:
N указывает на характер результата ф-ции, а не на способ его вычисления.

Здесь вы не правы. Почитайте документацию, например:
Цитата:
[no]NMinimize[f,x]
minimizes f numerically with respect to x.[/no]

И сравните, например, с:
Цитата:
[no]FindRoot[f,{x,Subscript[x, 0]}]
searches for a numerical root of f, starting from the point x=Subscript[x, 0].[/no]


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


Добавлено:
Кроме того, как я уже указывал выше, даже при точном задании метода (а все предлагаемые методы - численные), все равно выполняется "symbolic preprocessing", который, кстати, в случае NMinimize и вовсе не упоминается в документации к данной функции. И "крик души", процитированный выше - обычный и неизбежный результат такого издевательства разработчиков.
Автор: r_green
Дата сообщения: 12.12.2010 17:32
popkov

Цитата:
NMinimize[f,x]
minimizes f numerically with respect to x.

Но в какой мере это описание определяет алгоритм NMinimize? По-моему, это только общее указание, что эта ф-ция использует численные методы, не позволяющее делать каких-либо конструктивных выводов относительно алгоритма. Единственное, что можно сказать определённо - это то, что результат ф-ции получится численным.
С другой стороны - FindRoot, по-видимому, тоже применяет численные методы.

Согласен, такая неопределённость в обращении с целевой ф-цией в некоторых случаях нежелательна, но это обстоятельство можно выразить явно, средствами языка (определив ф-цию как вычислимую только для численных аргументов).
Автор: popkov
Дата сообщения: 12.12.2010 19:48
r_green

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

Эх, если бы в примерах использования одним из первых стоял такой "случай", - сколько часов потраченного впустую времени могли бы сэкономить десятки участников группы новостей, уже наступившие на эти "грабли"! И это только участники, которые - лишь малая доля пользователей. Так нет же - в примерах вообще этот "случай" не рассматривается! Я пишу "случай" в кавычках, потому что на практике исключением как раз является случай, когда символьная обработка приносит пользу, а правилом - принципиальная невозможность увеличить эффективность исследования изучаемой функции какой угодно символьной обработкой!
Автор: r_green
Дата сообщения: 12.12.2010 23:43
popkov

Цитата:
на практике исключением как раз является случай, когда символьная обработка приносит пользу, а правилом - принципиальная невозможность увеличить эффективность исследования изучаемой функции какой угодно символьной обработкой!

Даже если символьная обработка сделает решаемыми долю процента численных задач, это уже оправдывает её существование. В конце концов, вряд ли бы Вольфрам стал тратить ресурсы на сферического коня в вакууме.
Кроме того, аналитический вид ф-ции позволяет оптимизировать её вычисление.
Сравните скорость того же NMinimize для достаточно сложной ф-ции в символьном и численном варианте.
Автор: popkov
Дата сообщения: 13.12.2010 06:59
r_green
Цитата:
Даже если символьная обработка сделает решаемыми долю процента численных задач, это уже оправдывает её существование.
А вы хоть одну такую задачу знаете? Т.е. которая при отключении symbolic preprocessing перестает решаться?

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

Цитата:
Кроме того, аналитический вид ф-ции позволяет оптимизировать её вычисление.
Если он есть, да и то не всегда. А если его нет (как обычно и бывает на практике), все подвисает или же начинает дичайше тормозить.

Добавлено:
И вообще, я сильно подозреваю, что весь этот symbolic preprocessing - лишь интегрированный внутрь функции Compile[].
Автор: Colorado90
Дата сообщения: 13.12.2010 09:59
Здравствуйте,я на этом форуме недавно и надеюсь мне смогут помочь.Мне задали построить интерполяционный полином Лагранжа с циклом for по таблице со значениями.Я около двух недель пытаюсь задать полином в программе математика,но пока безуспешно.Вот как я задал таблицу data := {{1, 66}, {2, 66}, {3, 65}, {4, 64}, {5, 63}, {6, 63}};.Мне нужен сам код программы строящий такой полином в математике.Заранее благодарю.

Добавлено:
Вот программа вычисляющая полином Лагранжа,но в программе matlab.Я пытался её переделать в программу для mathematica.Может кто сможет помочь?
function [C,L]=lagran(X,Y)

%Input - X is a vector that contains a list of abscissas
% - Y is a vector that contains a list of ordinates
%Output - C is a matrix that contains the coefficents of
% the Lagrange interpolatory polynomial
% - L is a matrix that contains the Lagrange
% coefficient polynomials

15. Thus to call this function we set up the vectors X and Y with the x and y coefficients of the interpolating points. Then call the function to return the interpolating polynomial in C and the Lagrange coefficients for that polynomial in L. For our above example, it would be:

» X = [1 2 2.5]
» Y = [3 3 3.3]
» [C L] = lagran(X,Y) Should get the same answer is returned as the one we computed step by step above.

Look at how the coefficients are computed in the body of the function

for k=1:n+1 % Calculate each of n+1 Lagrange coefficient
V=1; % Accumulate computations in V temporarily

for j=1:n+1
% Multiply by (x - X(j))/(X(k) - X(j))
if k~=j % Be sure to skip the k'th one
V=conv(V,poly(X(j)))/(X(k)-X(j));
end

end
L(k,=V; % Store Lagrange coefficient in kth row of L
end

The final step is to compute the interpolating polynomial:

C = Y*L
Автор: r_green
Дата сообщения: 13.12.2010 12:15
popkov

Цитата:
А вы хоть одну такую задачу знаете? Т.е. которая при отключении symbolic preprocessing перестает решаться?

Интегрирование сильно осциллирующей ф-ции (правда, работает только в 8.0, в 7-й не берется в обоих режимах):

Код:
In[1]:= f1[x_] := Cos[ Log[x] x^-1] x^-1

In[2]:= f2[x_?NumericQ] := f1[x]

In[3]:= NIntegrate[f1[x], {x, 0, 1}]

Out[3]= 0.323367

In[4]:= NIntegrate[f2[x], {x, 0, 1}]

During evaluation of In[4]:= NIntegrate::ncvb: NIntegrate failed to converge to prescribed accuracy after 9 recursive bisections in x near {x} = {1.56526*10^-57}. NIntegrate obtained 330.0630957491658` and 237.85957645842927` for the integral and error estimates. >>

Out[4]= 330.063
Автор: popkov
Дата сообщения: 13.12.2010 15:24
r_green

Цитата:
Правильная реализация должна давать ускорение.

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

Цитата:
Интегрирование сильно осциллирующей ф-ции

Интересно, кстати, они научили NIntegrate обрабатывать широкий класс таких функций, - или только узкий класс имеющих форму, аналогичную указанной? Если верно второе, - это скорее понт для повышения ажиотажа, чем реальное развитие. Было бы куда лучше, если бы они научили его брать такие интегралы именно без символьной обработки, потому что такие красивые задачи единичны и на практике приходится сталкиваться совсем с другим.
Автор: Colorado90
Дата сообщения: 13.12.2010 16:01
СПАСИБО.))
Автор: r_green
Дата сообщения: 13.12.2010 16:27
popkov

Цитата:
Интересно, кстати, они научили NIntegrate обрабатывать широкий класс таких функций, - или только узкий класс имеющих форму, аналогичную указанной?

Похоже, это всё-таки достаточно общий алгоритм.
Вот такую, например, тоже берёт:

Код: f[x_]:=Sin[Cot[x]]/x
Автор: Colorado90
Дата сообщения: 14.12.2010 11:54
Здравствуйте,у меня возникло новое затруднение.Я не могу построить график по полиному Лагранжа.Как это можно сделать?
Автор: r_green
Дата сообщения: 14.12.2010 12:00
Colorado90

Цитата:
Я не могу построить график по полиному Лагранжа.

А как вы пытаетесь его строить?
Автор: karl_karlsson
Дата сообщения: 16.12.2010 16:50
Попробовал Wolfram|Alpha.
Значит, если вопрос частный - для некоторых чего то находится. Если вопрос более общий - Wikipedia на световые годы впереди. Думаю, только для конкретных вопросов подходить. И даже тогда слишком много лингвистики и какие то гуманитарные вопросы описываются.
А вот это уже не та математика и даже не Большая Советская Энциклопедия, а какой то словарь английского языка + справочники финансы, географии и т.д...

Например вот такое наблюдал для запросов в данных областях:
Partial Differential Equations, Ordinary Differential Equations, Tensors, Lie Theory, Meteorology

Цитата:
Additional functionality for this topic is under development...


Подозреваю, что и для другие области такое также наблюдается.
Автор: Colorado90
Дата сообщения: 16.12.2010 17:27
Мне нужно знать с помощью какой команды он строится Plot, ListPlot.......?
Автор: r_green
Дата сообщения: 16.12.2010 23:28
Colorado90
Plot.
Автор: popkov
Дата сообщения: 17.12.2010 15:27
Как вам такая характеристика документации к Mathematica:

(участник вначале отвечает на вопрос о причине его активного интереса к некоторым недокументированным особенностям синтаксиса, используемых на низком уровне системой, которых, как оказалось, не знают даже сами разработчики)
Цитата:
John, Albert, thanks for the info. Very useful.

In <iecr30$bn...@smc.vnet.net> Albert Retey <a...@gmx-topmail.de> writes:

>Instead of these cryptic forms you can almost
>everywhere use the explicit Boxes-expressions, so I wonder why you are
>interested in these?

Well, the simplest answer to that is that, in general, for all x,
if I don't know at all what x is, I have no way of knowing whether
x is something that would be useful (or harmful) to me.

A less flippant answer is this: even though I've been using
Mathematica on and off since the late 80s, I am still *routinely*
puzzled by its behavior. Not "a little puzzled", mind you, but
*utterly and absolutely mystified*, at least once, usually multiple
times per Mathematica sesssion. And I've spent countless of
frustrating hours trying to figure out some bewildering bug in my
Mathematica code. I happen to be quite familiar with several
programming languages and computing environments, and Mathematica
is the only one for which I have this problem after such a long
acquaintance. Therefore, I can't ascribe my difficulties with
Mathematica to my general stupidity, but to the fact that Mathematica
is basically an undocumented box of mysteries. What passes for
"documentation" in Mathematica is, in my opinion, just a few
carefully chosen scraps flung to us by Wolfram to keep appearances.

This is a longwinded explanation for why, over the years, I've
developed what can only be described as paranoia over anything that
the Mathematica documentation chooses to gloss over
, based on the
belief (borne out of painful experience) that some time-devouring
bug in the future could hinge on one of these undocumented details.

I have already given up hope that Wolfram will document Mathematica
properly, but I still cling to the hope that someday I'll learn
the internal rationale for their "documentation" policies. That
remains for me the biggest mystery of all.

~kj
(выделение мое).

На мой взгляд, хорошо передано ощущение от Mathematica, когда пытаешься опираться на нее в ситуации, где за результат отвечаешь карьерой или репутацией.
Автор: popkov
Дата сообщения: 23.12.2010 15:10
Еще одно открытие. Кто бы мог подумать, что комментарии типа "New in 1 | Last modified in 5", расположенные внизу каждой страницы документации к функциям Mathematica, относятся вовсе не к самим функциям, а всего лишь к этим самым страницам документации (точнее, к той части страницы, что выше "EXAMPLES")! Вот уж не подумал бы! У WR явно своя, особая логика, лишь отчасти пересекающаяся с логикой обычных людей...
Автор: Pavel80
Дата сообщения: 23.12.2010 21:45
ОБнаружил такой глюк
При построении графика не строит на интервале от -1 до 1


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

Страницы: 12345678910111213141516171819202122232425262728293031323334

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


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