Pull to refresh

Comments 19

UFO just landed and posted this here
Безусловно, пока что еще не все опции добавлены к функциям Entity и EntityClass. Это принципиально новые и очень мощные объекты в языке, которые строятся на прямом обращении к базам Wolfram|Alpha и курируемым базам Wolfram и здесь не нужно путать все же язык и базы данных Wolfram|Alpha, которые очень обширны на самом деле. Однако, ничто не мешает вам создавать что-то свое:



При этом использование встроенных баз данных может быть очень сложным:



И уж точно за многие годы работы с Wolfram Language я понял и прочувствовал, что все функции в ядре берутся не случайно, а действительно надстраивают по кирпичику общее «здание», делая множество новых вещей очень простыми в реализации.
Попробовал сейчас этот Cloud, почти любой запрос (банально узнать погоду в определенном городе) отваливается с ошибкой «Available session memory for your plan exceeded. Upgrade to increase your allowed session memory.».

И непонятны лимиты: на бесплатном тарифе указан лимит «100 Wolfram|Alpha API calls/month», на максимальном плане — 10 000 этих запросов. По моим представлениям, у подобного сервиса такие ограничения должны быть в сутки, а не в месяц :)))
Имеется ввиду запрос с генерацией полного отчета Wolfram|Alpa или через функцию WolframAlpha. Так что если вы хотите полные отчеты — вы можете их получить сколько угодно бесплатно просто на сайте Wolfram|Alpha. Если у вас все строится на обращениях к Wolfram|Alpha, то для вас подойдет последняя колонка прайс-листа, менеджеры подберут для вас нужную цену, адекватную вашему проекту. Так что в целом прямых обращений к Wolfram|Alpha более чем достаточно.
Кстати, оставлю здесь баг-репорт. Взял студенческую подписку на Wolfram|Alpha Pro. В качестве средства платежа указал PayPal. Система попыталась автоматом сделать подписку на месяц. Отменил в течение минуты после оплаты.
Результат: PayPal сообщил, что деньги перечислены не были из-за подписочной схемы. Вольфрам работает в Про версии, хотя деньги зачислены не были. Мне как-то даже неудобно. Бесплатный месяц это мило, но нечестно.
Спасибо за то, что сообщили, информация передана менеджерам.
Еще есть, конечно, шероховатости (и, пожалуйста, не стесняйтесь рассказывать нам о них!).
Ok. Все ваши сайты и подсайты просто ужасно выглядят на ретине.
10 минут пробовал получить публичную ссылку на интерактивный скрипт — не получилось. У меня кривые руки?
Не могли бы вы привести код, который вы вводили в документе Wolfram Programming Cloud?
Все отлично работает. Важно понимать, что код автора не полный — требуется задать параметризацию поверхности — функции X, Y, Z.
Также должен сказать что код прямо скажем, не хороший, он совершенно не оптимален, его можно сильно улучшить.

Да нет же, внутри всё работает. Я не могу получить публичную ссылку на скрипт (с возможностью ввода). Или это невозможно в принципе?
Ок. Код такой (скопирован из моего облака напрямую):

CloudDeploy[FormFunction[{"X"->"String","Y"->"String","Z"->"String"},
Module[{},
ToExpression[{"X[u_,v_]:=" <> #X, "Y[u_,v_]:=" <> #Y,"Z[u_,v_]:=" <> #Z}];
Conductor[P_] := Block[{u = P[[1]], v = P[[2]]},{X[u,v],Y[u,v],Z[u,v]}];
RangeV = {0, 1}; (*Предел изменения параметра v*)
RangeU = {0, 1}; (*Предел изменения параметра u*)
SquareC[uu_, vv_] :=
Norm[Cross[D[ Conductor[{u, v}], u],D[ Conductor[{u, v}], v]]] /. {u -> uu, v -> vv};
ConductorCharge = 1;
USCoefficient = 1;
NumU = 20;
NumV = 20;
NumberOfPoints = NumV*NumU;
PositionsOfCharges =
Flatten[Table[{RangeU[[
1]] + (RangeU[[2]] - RangeU[[1]])/NumU*(i - 0.5),
RangeV[[1]] + (RangeV[[2]] - RangeV[[1]])/NumV*(j - 0.5)}, {i, 1,
NumU}, {j, 1, NumV}], 1];
PositionsOfPoints =
Flatten[Table[{RangeU[[
1]] + (RangeU[[2]] - RangeU[[1]])/NumU*(i - 0.5001),
RangeV[[1]] + (RangeV[[2]] - RangeV[[1]])/NumV*(j - 0.5001)}, {i,
1, NumU}, {j, 1, NumV}], 1];
Separation[P1_, P2_] := Conductor[P1] - Conductor[P2];
GetDistribution := Module[{i},
B = ConstantArray[0, NumberOfPoints];
B[[NumberOfPoints]] = ConductorCharge;
M = Table[
USCoefficient/
Norm[Separation[PositionsOfCharges[[j]],
PositionsOfPoints[[i]]]], {i, 1, NumberOfPoints}, {j, 1,
NumberOfPoints}];
For[i = 1, i <= NumberOfPoints, i++,
M[[i]] = M[[i]] - M[[NumberOfPoints]]];
M[[NumberOfPoints]] = ConstantArray[1, NumberOfPoints];
Q = LinearSolve[M, B];
];
ShowConductor :=
ParametricPlot3D[
Conductor[{u, v}], {u, RangeU[[1]], RangeU[[2]]}, {v, RangeV[[1]],
RangeV[[2]]},ImageSize->400];
ShowDistribution := Module[{A, i, j},
A = {};
For[i = 1, i <= NumU, i++,
For[j = 1, j <= NumV, j++,
A = Join[
A, {{RangeU[[1]] + (RangeU[[2]] - RangeU[[1]])/NumU*(i - 0.5),
RangeV[[1]] + (RangeV[[2]] - RangeV[[1]])/NumV*(j - 0.5),
Q[[NumV*(i - 1) + j]]}}]
]
];
ListPlot3D[A, AxesLabel -> {"U"*NumU, "V"*NumV, "Sigma"},ImageSize->400]];
ShowRealDistribution := Module[{A, i, j},
A = {};
For[i = 1, i <= NumU, i++,
For[j = 1, j <= NumV, j++,
A = Join[
A, {{RangeU[[1]] + (RangeU[[2]] - RangeU[[1]])/NumU*(i - 0.5),
RangeV[[1]] + (RangeV[[2]] - RangeV[[1]])/NumV*(j - 0.5),
Q[[NumV*(i - 1) + j]]/
SquareC[RangeU[[
1]] + (RangeU[[2]] - RangeU[[1]])/NumU*(i - 0.5),
RangeV[[1]] + (RangeV[[2]] - RangeV[[1]])/NumV*(j - 0.5)]}}]
]
]];
Grid[{{ShowConductor},{GetDistribution},{ShowDistribution}}]
]&,"PNG"]]


Результат:



Спасибо за помощь. Нужно будет лучше изучить специальные облачные функции.
Я не очень в теме, поэтому могу задать тупые вопросы, не судите строго.
Совсем немного почитал и посмотрел о ПО и сервисах вольфрам и заинтересовался.
Собственно, вопросы:
  1. Могу ли я дополнять, расширять базы знаний вольфрама и создавать свои?
  2. Если да, то эта функциональность доступна и локально и в облаке?
  3. Можете привести небольшой пример к выведанным вопросам или дать ссылку на подобный пример?
  4. Базы знаний доступны только онлайн?
  5. Есть ли какие-то сравнения производительности вольфрама по сравнению с другими языками?
  6. Есть ли у языка что-то вроде лайт-версии?
Могу ли я дополнять, расширять базы знаний вольфрама и создавать свои?

Базы Wolfram закрыты, менять именно их вы не сможете, но ничто не мешает вам использовать свои базы или дополнять значения баз Wolfram создавая «обертки» функций баз Wolfram.

Если да, то эта функциональность доступна и локально и в облаке?

Да.

Можете привести небольшой пример к выведанным вопросам или дать ссылку на подобный пример?

Скажем, вот один из примеров, реализованных Леонидом Шифриным.

Базы знаний доступны только онлайн?

Нет. Многие базы доступны офлайн, правда требуют однократной подгрузки. Думаю, понятно, что если бы все было доступно офлайн, то система весила бы несколько сотен терабайт. К тому же вы можете (см. ответ к предыдущему вопросу) закачивать данные и помещать их в мгновенно подгружаемые дампы Mathematica.

Есть ли какие-то сравнения производительности вольфрама по сравнению с другими языками?

Встроенные функции работают либо примерно как C, либо в пару раз медленнее. Ясно, что язык Wolfram — язык сверхвысокого уровня и он просто не может часто сравниться напрямую по производительности с низкоуровневыми языками, это ясно. Но, надо понимать, что в язык Wolfram вы можете подгружать куски кода на другом языке, скажем C, Java, R; использовать мощное распараллеливание, CUDA, OpenCL.
Язык Wolfram идеален для многих задач, одно из таких направлений — любые R&D, когда необходимо налету все менять, использовать метапрограммирование и пр.
Также язык Wolfram в смысле длины кода если не самый, то уж точно один из самых коротких: вот скажем сравнение 13 языков с Wolfram.

Есть ли у языка что-то вроде лайт-версии?

Нет, это противоречит концепции языка Wolfram. Если вы хотите, то Wolfram делает на заказ «урезанные» версии ядра, правда это дорого и по сути бессмысленно.
Спасибо за ответы, поставил себе триал-версию математики — буду разбираться.
Язык терпимый по сложности. Я врач, но для своих нужд я со скрипом и мануалами смог разобраться. Построил красивые графики, потыкал тестами типа Манна-Уитни в данные. Очень изящная концепция. После расчетов в Excel словно праздник.
Sign up to leave a comment.