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

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



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

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

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

Код:
dd[x_/;NumericQ[x]]:=(Export["test.dat",x^2];Import["test.dat"])[[1, 1]]  

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

Всего записей: 145 | Зарегистр. 17-09-2004 | Отправлено: 19:11 11-12-2010 | Исправлено: r_green, 19:26 11-12-2010
popkov

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

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

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

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

В первую очередь к документации, конечно. Но и язык - часть документации. И символ "N" однозначно свидетельствует о предназначении функции - это также и отражено в документации везде.

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



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

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

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

Всего записей: 145 | Зарегистр. 17-09-2004 | Отправлено: 16:34 12-12-2010
popkov

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

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

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

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

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

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



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

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

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

Всего записей: 145 | Зарегистр. 17-09-2004 | Отправлено: 18:32 12-12-2010 | Исправлено: r_green, 18:34 12-12-2010
popkov

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

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

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

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



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

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

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

Всего записей: 145 | Зарегистр. 17-09-2004 | Отправлено: 00:43 13-12-2010
popkov

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
r_green
Цитата:
Даже если символьная обработка сделает решаемыми долю процента численных задач, это уже оправдывает её существование.  
А вы хоть одну такую задачу знаете? Т.е. которая при отключении symbolic preprocessing перестает решаться?

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

Цитата:
Кроме того, аналитический вид ф-ции позволяет оптимизировать её вычисление.  
Если он есть, да и то не всегда. А если его нет (как обычно и бывает на практике), все подвисает или же начинает дичайше тормозить.
 
Добавлено:
И вообще, я сильно подозреваю, что весь этот symbolic preprocessing - лишь интегрированный внутрь функции Compile[].

Всего записей: 1833 | Зарегистр. 22-03-2003 | Отправлено: 07:59 13-12-2010
Colorado90

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте,я на этом форуме недавно и надеюсь мне смогут помочь.Мне задали построить интерполяционный полином Лагранжа с циклом 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

Всего записей: 4 | Зарегистр. 13-12-2010 | Отправлено: 10:59 13-12-2010
r_green



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
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
 

Взято отсюда:
http://www.wolfram.com/mathematica/new-in-8/new-and-improved-core-algorithms/solve-a-numerical-integration-challenge-problem.html
 

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

Это проблема в реализации, а не в самой идее символьной обработки. Т.е. проблема переходная и устраняемая.
Правильная реализация должна давать ускорение.
 
 
Добавлено:
Colorado90
В Mathematica есть встроенная ф-ция:

Код:
 
In[1]:= data = {{1, 66}, {2, 66}, {3, 65}, {4, 64}, {5, 63}, {6, 63}};
 
In[2]:= InterpolatingPolynomial[data, x]
 
Out[2]= 66 + (-(1/
     2) + (1/6 + (-(1/24) + 1/60 (-5 + x)) (-4 + x)) (-3 + x)) (-2 +  
    x) (-1 + x)
 

Всего записей: 145 | Зарегистр. 17-09-2004 | Отправлено: 13:15 13-12-2010
popkov

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

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

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

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

Интересно, кстати, они научили NIntegrate обрабатывать широкий класс таких функций, - или только узкий класс имеющих форму, аналогичную указанной? Если верно второе, - это скорее понт для повышения ажиотажа, чем реальное развитие. Было бы куда лучше, если бы они научили его брать такие интегралы именно без символьной обработки, потому что такие красивые задачи единичны и на практике приходится сталкиваться совсем с другим.

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

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
СПАСИБО.))

Всего записей: 4 | Зарегистр. 13-12-2010 | Отправлено: 17:01 13-12-2010
r_green



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

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

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

Код:
f[x_]:=Sin[Cot[x]]/x

 
 
 
 
Добавлено:
И даже такое издевательство взял:  

Код:
f[x_] := Sin[Exp[Cot[x]]]*Log[x]


 
Добавлено:
А вот это - уже нет:

Код:
Sin[Sin[Cot[x]]]


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

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте,у меня возникло новое затруднение.Я не могу построить график по полиному Лагранжа.Как это можно сделать?

Всего записей: 4 | Зарегистр. 13-12-2010 | Отправлено: 12:54 14-12-2010
r_green



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

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

А как вы пытаетесь его строить?

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Попробовал Wolfram|Alpha.
Значит, если вопрос частный - для некоторых чего то находится. Если вопрос более общий - Wikipedia на световые годы впереди. Думаю, только для конкретных вопросов подходить. И даже тогда слишком много лингвистики и какие то гуманитарные вопросы описываются.  
А вот это уже не та математика и даже не Большая Советская Энциклопедия, а какой то словарь английского языка + справочники финансы, географии и т.д...
 
Например вот такое наблюдал для запросов в данных областях:
Partial Differential Equations, Ordinary Differential Equations, Tensors, Lie Theory, Meteorology

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

 
Подозреваю, что и для другие области такое также наблюдается.

Всего записей: 2027 | Зарегистр. 14-03-2007 | Отправлено: 17:50 16-12-2010
Colorado90

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Мне нужно знать с помощью какой команды он строится Plot, ListPlot.......?

Всего записей: 4 | Зарегистр. 13-12-2010 | Отправлено: 18:27 16-12-2010
r_green



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

Всего записей: 145 | Зарегистр. 17-09-2004 | Отправлено: 00:28 17-12-2010
popkov

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Как вам такая характеристика документации к 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, когда пытаешься опираться на нее в ситуации, где за результат отвечаешь карьерой или репутацией.

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

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Еще одно открытие. Кто бы мог подумать, что комментарии типа "New in 1  |  Last modified in 5", расположенные внизу каждой страницы документации к функциям Mathematica, относятся вовсе не к самим функциям, а всего лишь к этим самым страницам документации (точнее, к той части страницы, что выше "EXAMPLES")! Вот уж не подумал бы! У WR явно своя, особая логика, лишь отчасти пересекающаяся с логикой обычных людей...

Всего записей: 1833 | Зарегистр. 22-03-2003 | Отправлено: 16:10 23-12-2010
Открыть новую тему     Написать ответ в эту тему

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