Как стать автором
Обновить

Компания Wolfram Research открыла сервис Tweet-a-Program: интересных программ на языке Wolfram Language, длина которых не превышает 140 символов

Время на прочтение6 мин
Количество просмотров20K
Всего голосов 52: ↑47 и ↓5+42
Комментарии37

Комментарии 37

А можно добавить в хаб «математика»? А то я чисто случайно наткнулся, а новости о «Математике» отслеживаю.
UPD. Прошу прощения, утро для меня ещё не закончилось. Конечно же я прошу добавить не для себя, поскольку факт прочтения налицо. Но есть основания подозревать, что людей, у которых подписка организована подобным образом, хватает.
По-моему, тут что-то не так.
image
Нет, увы, всё так.
Вы о том, что России нет? Так и Турции нет, они частично европейские, а частично азиатские страны. Тут вопрос подхода создателя определения, скорее основанный на предпочтениях.
НЛО прилетело и опубликовало эту надпись здесь
Уже результаты есть референдума. Шотландия предпочла остаться в Великобритании.
Ну поэтому я и сказал, что всё так.
Не нужно мыслить Россию как Европу или ее часть. Россия — это страна-континент, которая не может «присоединяться» к мелкой Европе. Скорее, Европа может присоединиться к России.
Вам двойка по географии
Спасибо =)
> Россия — это страна-континент
image
Отвратительная у Вас аватарка…

Разумеется, в учебнике георграфии написано, что Россия «одна из». Но на карту посмотрите! Сколько занимает обычная европейская страна и сколько Россия. Даже огромные Китай и Индия ни в какое сравнение не идут. Фактически, Россия может все добывать и все производить без внешней помощи. Быть самой себе рынком.

Другие страны такими возможностями не обладают. Именно в этом смысле Россия — страна-континент. Можно ставить в кавычки, но сути не меняет.
А по-моему, милый котик =^_^=
Спасибо! Действительно инетересно. Только на фоне сосиски европейские страны превратились в горошенки. Получилась сосисьска с горошком.
Россия — шестая часть суши, на карте Петерса Россия разве похожа на шестую часть суши? + комментарии к посту tema почитайте
Правильная карта не там, где Гренландия больше Африки, и не на карте Петерса, а где-то посередине, в другом варианте
Справедливости ради. Россия это девятая часть суши (1/8,7, если быть точным), СССР был 1/6 (и то, там очень хитро, 1/6 обитаемой или 1/6,6 общей площади суши).
Действительно, ошибся =) Спасибо
Пасанчики, я понимаю, что хочется в Европу… =)
Изображение на третьем флаге (справа вверху) похоже на R2D2 ^_^
НЛО прилетело и опубликовало эту надпись здесь
Одна важная вещь относительно языка Wolfram Language — и которую он разделяет с обычными человеческими языками — заключается в том, что он не только записывается людьми, но и читается ими же.




Долго пытался понять, как приведенный код выводит эту картинку с совой…
Смотрю на эти красивые картинки, и возникает непреодолимое желание заняться математикой и Wolfram Language в частности.
Хм, напомнило шутку про «хвалителей отечественного кино» из КВН.

Интересно, сможет ли Wolfram обработать вот такой код, взятый из Maxima (правка с учётом среды, естественно, необходима):

depends([u,e,n],[x,y]);
depends([u],[e,n]);

ux:diff(u,e)*diff(e,x)+diff(u,n)*diff(n,x);
uy:diff(u,e)*diff(e,y)+diff(u,n)*diff(n,y);

uxx:diff(ux,x)*a11;
uxy:diff(ux,y)*2*a12;
uyx:diff(uy,x)*2*a12;
uyy:diff(uy,y)*a22;

du:uxx+uxy+uyy;

du,diff(u,n,2):0; da22:ratsimp(du-%);

du,diff(u,e,2):0; da11:ratsimp(du-%);

du,diff(diff(u,n),e):0,diff(diff(u,e),n):0; ratsimp(du-%);

da12:expand(%/diff(diff(u,e),n));

P.S. Это всего лишь несколько строк на странице введения в Уравнения Мат. Физики Тихонова
Дайте ссылку на страницу, попробую вам привести то, как она будет выглядеть в Wolfram Language.
Сабж: Тихонов, Самарский, УМФ, 7-е издание, стр. 16 (глава 1).
Или вставьте для визуального осмотра мой код в онлайн-версии Maxima maxima-online.org/
Хотя она мне не нравится, флаги свёртки по-умолчанию не установлены.
Понял вас.

По сути там решается задача о переводе дифференциального уравнения из одной системы координат в другую.

Некоторое время назад в Русскоязычной поддержке Wolfram Mathematica задавали вопрос об этом.

Для ответа на него я создал довольно общий код, который обрабатывает произвольное дифференциальное уравнение и переводит его из одной системы координат в другую, при этом используется встроенная в Wolfram Language поддержка работы с системами координат (CoordinateTransform).

То что делает ваша программа на Maxima — небольшой и простой частный случай (фрагмент) этой программы, который вы можете легко выцепить из нее.
Привожу код (в виде картинки для читаемости):



Код в виде текста
\[ScriptCapitalD]Transform[expr_,$\[ScriptCapitalD]Functions_,$\[ScriptCapitalD]Variables_,$\[ScriptCapitalD]NewVariables_,system1_->system2_,assumptions_:True]:=Module[{inner,\[ScriptCapitalD]},\[ScriptCapitalD][sym_/;MemberQ[$\[ScriptCapitalD]Functions,sym],var_/;MemberQ[$\[ScriptCapitalD]Variables,var]]:=Sum[\[ScriptCapitalD][sym,{inner}]\[ScriptCapitalD][inner,{var}],{inner,$\[ScriptCapitalD]NewVariables}];
\[ScriptCapitalD][expr1_+expr2_,var_]:=\[ScriptCapitalD][expr1,var]+\[ScriptCapitalD][expr2,var];
\[ScriptCapitalD][\[ScriptCapitalD][vars1__]\[ScriptCapitalD][vars2__],var_]:=\[ScriptCapitalD][\[ScriptCapitalD][vars1],var]\[ScriptCapitalD][vars2]+\[ScriptCapitalD][vars1]\[ScriptCapitalD][\[ScriptCapitalD][vars2],var];
\[ScriptCapitalD][\[ScriptCapitalD][sym_/;MemberQ[$\[ScriptCapitalD]Functions,sym],var1_List],var2_]:=Sum[\[ScriptCapitalD][sym,Sort[var1~Join~{inner}]]\[ScriptCapitalD][inner,{var2}],{inner,$\[ScriptCapitalD]NewVariables}];
\[ScriptCapitalD][\[ScriptCapitalD][sym_/;MemberQ[$\[ScriptCapitalD]NewVariables,sym],var1_List],var2_]:=\[ScriptCapitalD][sym,Sort[var1~Join~{var2}]];
\[ScriptCapitalD][Derivative[ders__][f_][vars__]]:=Fold[\[ScriptCapitalD][#1,#2]&,f,Flatten[MapThread[Table[#1,{#2}]&,{{vars},{ders}}]]];
\[ScriptCapitalD][someExpr_]:=someExpr/.Derivative[ders__][f_][vars__]:>\[ScriptCapitalD][Derivative[ders][f][vars]];
coordinateTransformRules=Thread[$\[ScriptCapitalD]NewVariables->CoordinateTransform[system1->system2,$\[ScriptCapitalD]Variables]];
inverseCoordinateTransformRules=Thread[$\[ScriptCapitalD]Variables->CoordinateTransform[system2->system1,$\[ScriptCapitalD]NewVariables]];
\[ScriptCapitalD]InverseRules={HoldPattern[\[ScriptCapitalD][sym_/;MemberQ[$\[ScriptCapitalD]NewVariables,sym],vars_]]:>With[{function=sym/.coordinateTransformRules},D[function,Sequence@@vars]],HoldPattern[\[ScriptCapitalD][sym_/;MemberQ[$\[ScriptCapitalD]Functions,sym],vars_]]:>D[sym@@$\[ScriptCapitalD]NewVariables,Sequence@@vars]};
FullSimplify[Expand[\[ScriptCapitalD][expr]]/.\[ScriptCapitalD]InverseRules/.inverseCoordinateTransformRules,assumptions]]


Ниже представлено несколько примеров использования:

1) перевод УрЧП из декартовой в полярную систему координат:


2) перевод УрЧП из декартовой в сферическую систему координат:


3) перевод УрЧП из декартовой в пораболическую систему координат:


Код примеров в виде текста
Понял вас.

По сути там решается задача о переводе дифференциального уравнения из одной системы координат в другую.

Некоторое время назад в <a href="http://vk.com/wolframmathematica">Русскоязычной поддержке Wolfram Mathematica</a> задавали вопрос об этом.

Для ответа на него я создал довольно общий код, который обрабатывает произвольное дифференциальное уравнение и переводит его из одной системы координат в другую, при этом используется встроенная в Wolfram Language поддержка работы с системами координат (<a href="http://reference.wolfram.com/language/ref/CoordinateTransform.html">CoordinateTransform</a>).

То что делает ваша программа на Maxima  - небольшой и простой частный случай (фрагмент) этой программы, который вы можете легко выцепить из нее.
Привожу код (в виде картинки для читаемости):

<img src="https://habrastorage.org/files/d41/828/4b1/d418284b1a83478e8993d735b9424f02.png"/>

<spoiler title="Код примеров в виде текста"><source>
equation=D[u[x,y],x,x]+D[u[x,y],y,y];
TraditionalForm@Row[{equation," -> ",
\[ScriptCapitalD]Transform[equation,{u},{x,y},{r,\[Phi]},"Cartesian"->"Polar",{r>0,0<\[Phi]<2 Pi}]}]

equation=D[u[x,y,z],x,x]+D[u[x,y,z],y,y]+D[u[x,y,z],z,z];
TraditionalForm@Row[{equation," -> ",
\[ScriptCapitalD]Transform[equation,{u},{x,y,z},{r,\[Theta],\[Phi]},"Cartesian"->"Spherical",{r>0,0<\[Theta]<Pi,-Pi<\[Phi]<Pi}]}]

equation=D[T[A,B],A]+2 D[T[A,B],A,B]+1/x D[T[A,B],B,B];
TraditionalForm@Row[{equation," -> ",
\[ScriptCapitalD]Transform[equation,{T},{A,B},{\[CapitalPsi],\[CapitalOmega]},"Cartesian"->"PlanarParabolic",{\[CapitalPsi]\[Element]Reals,0<=\[CapitalOmega],(\[CapitalPsi]!=0||\[CapitalOmega]!=0)}]}]
Но количество координатных систем ограничено, как это ограничение обойти?
Фантастика… Теперь видно, что система стоит своих денег. Спасибо.
Первая моя программа Tweet-a-Program) Манипулятор, иллюстрирующий работу всех булевых функций трех аргументов с помощью диаграммы Эуйлера-Венна, в качестве универсального множества взят круг.

Manipulate[i=BooleanFunction[n,#]&;RegionPlot[i[Norm[{X,Y}-.2#]<=.5&/@{-{1,1},{1,-1},{0,1}}],Element[{X,Y},Disk[]]],{n,1,256,1}]


image
Продолжение традиций 1K демо.
Были же и 256 байт демо, как-то они тут больше подходят имхо. :)
Да и меньше по-моему тоже были, 128 байт, хотя их я не помню.
Подозреваю, что 4K и 1K и так редко набирает большое количество работ на демопатях, а поход глубже это совсем редкость, так что отдельную номинацию делать довольно бессмысленно, разве что в рамке wild demo принять. Вот и остается тема уделом совсем безумцев.
НЛО прилетело и опубликовало эту надпись здесь
Зарегистрируйтесь на Хабре, чтобы оставить комментарий