Как написать лямбду в вольфраме
Wolfram|Alpha — база знаний и набор вычислительных алгоритмов (англ. computational knowledge engine ), вопросно-ответная система. Запущена 15 мая 2009 года. Не является поисковой системой.
Содержание
- Solve [Cos[x]+Cos[2x]+Sin[4x]=0,x]или Cos[x]+Cos[2x]+Sin[4x]=0;
- Solve[x^5+x^4+x+1=0,x] или x^5+x^4+x+1=0;
- Solve[Log[3,x²+x+1]-Log[9,x²]=0,x] или \Log[3,x²+x+1]-Log[9,x²]=0.
- Cos[x+y]=0 или Solve[Cos[x+y]=0,x] или Solve[Cos[x+y]=0,y];
- x²+y²-5=0 или Solve[x²+y²-5=0,x] или Solve[x²+y²-5=0,y];
- x+y+z+t+p+q=9.
- Cos[10x]-1/2>0 или Solve[Cos[10x]-1/2>0,x];
- x^2+5x+10>=0 или Solve[x^2+5x+10>=0,x].
Если Ваше неравенство содержит несколько переменных, то запись: f[x, y,…,z]>0 или f[x, y,…,z]>=0 даст весьма разнообразный набор сведений, как и в случае соответствующих уравнений. Чтобы получить решение такого неравенства по какой-либо одной из переменных нужно написать в строке: Solve[f[x, y,…,z]>0,j] или Solve[f[x, y,…,z]>=0,j], где j — интересующая Вас переменная.
- Cos[x+y]>0 или Solve[Cos[x+y]>0,x] или Solve[Cos[x+y]>0,y];
- x^2+y^3-5
- x+y+z+t+p+q>=9.
- x^3+y^3==9&&x+y=1;
- x+y+z+p==1&&x+y-2z+3p=2&&x+y-p=-3;
- Sin[x+y]+Cos[x+y]==Sqrt[3]/4&&x+y²=1;
- Log[x+5]=0&&x+y+z
Wolfram Alpha способен находить пределы функций, последовательностей, различные производные, определенные и неопределенные интегралы, решать дифференциальные уравнения и их системы и многое многое другое.
- Limit[n^3/(n^4 + 2*n), n -> Infinity];
- Limit[(1+1/n)^n, n -> Infinity].
- D[x*E^x, x];
- D[x^3*E^x, ];
- D[x^3*y^2*Sin[x+y], x];
- D[x^3*y^2*Sin[x+y], y],
- D[x/(x+y^4), ].
- Integrate[Sin[x]/x², x].
- Integrate[x^10*ArcSin[x], x].
- Integrate[(x+Sin[x])/x, ].
- Integrate[Log[x^3+1]/x^5, ].
Если Вам требуется решить задачу Коши, то впишите: F[x, y, y',y'',…], y[s]==A,y'[s]==B, …. Если нужно получить решение краевой задачи, что краевые условия, так же перечисляются через запятую, причем они должны иметь вид y[s]==S.
Решение систем дифференциальных уравнений также просто, достаточно вписать: , где f_1, f_2, …, f_n — дифференциальные уравнения, входящие в систему. К сожалению, решение задач Коши и краевых задач для систем дифференциальных уравнений пока что не поддерживается.
Using pure functions will let us unlock a new level of power in the Wolfram Language, and also let us redo some of the things we ’ ve done before in a simpler and more elegant way.
But now let ’ s say we want to include the parameter 5 in Blur. How can we do that? The answer is to use a pure function.
Now that we ’ ve seen some examples of pure functions in action, let ’ s look more abstractly at what ’ s going on.
We can put slots wherever we want in the pure function, as many times as we want. All the slots will get filled with whatever the pure function is applied to.
OK, now we ’ re ready to finally discuss how pure functions really work. When we write f[x] , we ’ re applying the function f to x . Often we ’ ll use a specific named function instead of f , say Blur, so we have Blur[x] , etc.
But the point is that we can also replace f with a pure function. Then whatever we apply this to will be used to fill the slot in the pure function.
So now we can see what /@ is doing: it ’ s just applying the pure function to each element in the list.
Why is this useful? First of all, because it ’ s the foundation for all the things pure functions do with /@ . But it ’ s actually also often useful on its own, for example as a way to avoid having to repeat things.
In the Wolfram Language, a pure function works just like anything else. On its own, though, it doesn ’ t do anything.
Answer & check your solution
Answer & check your solution
Answer & check your solution
Answer & check your solution
Answer & check your solution
Answer & check your solution
Answer & check your solution
Answer & check your solution
Answer & check your solution
Because all they do is serve as functions that can be applied to arguments. They ’ re also sometimes called anonymous functions, because, unlike say Blur, they ’ re not referred to by a name. Here I ’ m calling them “ pure anonymous functions ” to communicate both meanings.
The & (ampersand) indicates that what comes before it is the “ body ” of a pure function, not the name of a function. f/@ gives , but f&/@ gives .
На хабре уже не раз упоминалась Mathematica и если вам хочется начать работать с ней, то эта статья для вас. Я расскажу об основных аспектах работы с нею и покажу несколько интересных нововведений из последних версий Wolfram Mathematica.
Изучение
Блокноты и Ячейки
- Ячейки ввода – в них задаются команды, которые будут вычислены
- Ячейки результата – в них выводится результат вычислений
- Другие ячейки – ячейки с текстом, заголовки и все остальное
Нумерация ячеек идёт в том порядке в котором вы их запустили. Для того что-бы вычислить значение ячейки нажмите SHIFT+ENTER или правый ENTER, либо Evaluation -> Evaluate Cells.
Для того что-бы обратиться к значению последней вычисленной ячейке используйте знак %.
Бесконечная точность
Одной из замечательных особенностью Mathematica является концепция бесконечной точности. Если результатом вычислений является корень из двух, то она так и напишет.
Вы можете попросить округлить ответ так:
Или же добавить дробную часть (или просто точку) к числам в выражении:
Ввод формул
В Mathematica реализован удобный ввод формул. Но для начала вам могут пригодится палитры (На картинке справа находится Palettes -> Basic Math Assistant).
У каждой кнопочки на палитре, есть свой горячие клавиши. Например, что бы написать знак интеграла нужно нажать Esc int Esc.
Вот список наиболее часто используемых горячих клавиш:
Выражения, Списки, Функции
Все что записано внутри ячеек является выражениями. Каждое выражение состоит из головы и списка. Например в выражение Power[2, 2]. В нём головой является Power, а списком 2, 2.
Даже 2+2 является выражением. Чтобы посмотреть как Mathematica интерпретирует ввод, есть функция FullForm:
Функция Hold просит математику не вычислять выражение. Обратной функция является Evaluate.
Списки в Mathematica создаются при помощи фигурных скобок: <. >, что является сокращением от List[. ].
Для манипуляции со списками в Mathematica есть огромная куча функций. Всё что вам может когда-нибудь понадобиться уже есть там. Вам остаётся только найти нужную функцию.
Для того чтобы получить элемент списка есть функция Part, c сокращённым вариантом в виде двойных квадратных скобок [[. ]] либо с толстыми скобками (Esc [[ Esc).
Поскольку всё является выражениями (и списки тоже), мы может получить голову выражения таким вот способом:
Таким образом индекс первого элемента в списке это 1.
Так же есть возможность заменить голову любого выражения. Это делает функция Apply[head, expression]. Либо её сокращённый вариант @@.
В Mathematica есть несколько способов применить функции(головы) к выражениям. Это обычные квадратные скобки: f[x], префикс: f@x, постфикс: x // f
А так же инфикс: из x ~ f ~ y получим f[x, y].
Однострочное программирование
В Mathematica есть множество функций для обычного программирования, такие как For, If, Switch. Однако, их лучше не использовать без крайней необходимости. Так как практически всё тоже самое можно сделать в одну строчку при помощи специальных функций и их комбинированием (поначалу бывает сложно перестроиться на такой стиль программирования).
Вот хорошее видео демонстрирующее как работают некоторые из функций:
Динамические интерактивные вычисления
Одной из замечательнейших возможностью Mathematica, являются динамические вычисления. Они позволяют манипулировать данными и смотреть на то как динамически меняется результат.
Для динамических вычислений используются функции Dynamic, Manipulate и др.
Заключение
В статье я рассказал о основных аспектах работы в Mathematica. Есть также несколько других важных моментов, таких как паттерны, модули, ядра. О них я расскажу в следующий раз, если эта тема будет интересна вам.
PS Обо всех найденных ошибках сообщайте мне в личку.
Как задать функцию в wolfram mathematica
Основные константы
Основные функции
Решение уравнений
Чтобы получить решение уравнения вида достаточно записать в строке Wolfram|Alpha: f[x]=0, при этом Вы получите некоторую дополнительную информацию, которая генерируется автоматически. Если же Вам необходимо только решение, то необходимо ввести: Solve[f[x]=0, x].
- Solve[Cos[x]+Cos[2x]+Sin[4x]=0,x] или Cos[x]+Cos[2x]+Sin[4x]=0;
- Solve[x^5+x^4+x+1=0,x] или x^5+x^4+x+1=0;
- Solve[Log[3,x^2+x+1]-Log[9,x^2]=0,x] или \Log[3,x^2+x+1]-Log[9,x^2]=0.
Если Ваше уравнение содержит несколько переменных, то запись: f[x, y,…,z]=0 даст весьма разнообразный набор сведений, таких как решение в целых числах, частные производные функции и т. д. Чтобы получить решение уравнения вида по какой-либо одной из переменных, нужно написать в строке: Solve[f[x, y, …, z]=0, j], где — интересующая Вас переменная.
- Cos[x+y]=0 или Solve[Cos[x+y]=0,x] или Solve[Cos[x+y]=0,y];
- x^2+y^2-5=0 или Solve[x^2+y^2-5=0,x] или Solve[x^2+y^2-5=0,y];
- x+y+z+t+p+q=9.
Решение неравенств
Решение в Wolfram Alpha неравенств типа 0" />
, полностью аналогично решению уравнения . Нужно написать в строке WolframAlpha: f[x]>0 или f[x]>=0 или Solve[f[x]>0, x] или Solve[f[x]>=0,x].
- Cos[10x]-1/2>0 или Solve[Cos[10x]-1/2>0,x];
- x^2+5x+10>=0 или Solve[x^2+5x+10>=0,x].
Если Ваше неравенство содержит несколько переменных, то запись: f[x, y,…,z]>0 или f[x, y,…,z]>=0 даст весьма разнообразный набор сведений, как и в случае соответствующих уравнений. Чтобы получить решение такого неравенства по какой-либо одной из переменных нужно написать в строке: Solve[f[x, y,…,z]>0,j] или Solve[f[x, y,…,z]>=0,j], где — интересующая Вас переменная.
- Cos[x+y]>0 или Solve[Cos[x+y]>0,x] или Solve[Cos[x+y]>0,y];
- x^2+y^3-5
- x+y+z+t+p+q>=9.
Решение различных систем уравнений, неравенств и уравнений
- x^3+y^3==9&&x+y=1;
- x+y+z+p==1&&x+y-2z+3p=2&&x+y-p=-3;
- Sin[x+y]+Cos[x+y]==Sqrt[3]/4&&x+y²=1;
- Log[x+5]=0&&x+y+z
Построение графиков функций
Сервис Wolfram Alpha поддерживает возможность построения графиков функций как вида , так и вида . Для того, чтобы построить график функции на отрезке \right]" />
нужно написать в строке Wolfram Alpha: Plot[f[x],]. Если Вы хотите, чтобы диапазон изменения ординаты был конкретным, например \right]" />
, нужно ввести: Plot[f[x],,].
- Plot[x^2+x+2, ];
- Plot[x^2+x+2, ,];
- Plot[Sin[x]^x, ];
- Plot[Sin[x]^x, ,].
Математический анализ
Wolfram Alpha способен находить пределы функций, последовательностей, различные производные, определенные и неопределенные интегралы, решать дифференциальные уравнения и их системы и многое многое другое.
Пределы
нужно написать в строке Wolfram Alpha: Limit[x_n, n -> Infinity].
- Limit[n^3/(n^4 + 2*n), n -> Infinity];
- Limit[(1+1/n)^n, n -> Infinity].
Найти предел функции при можно совершенно аналогично: Limit[f[x], x -> a].
Производные
Для того, чтобы найти производную функции нужно написать в строке WolframAlpha: D[f[x], x]. Если Вам требуется найти производную n-го порядка, то следует написать: D[f[x], ]. В том случае, если Вам требуется найти частную производную функции напишите в окне гаджета: D[f[x, y, z,…,t], j], где — интересующая Вас переменная. Если нужно найти частную производную по некоторой переменной порядка n, то следует ввести: D[f[x, y, z,…,t], ], где означает тоже, что и Выше.
- D[x*E^x, x];
- D[x^3*E^x, ];
- D[x^3*y^2*Sin[x+y], x];
- D[x^3*y^2*Sin[x+y], y],
- D[x/(x+y^4), ].
Интегралы
Для того, чтобы найти неопределенный интеграл от функции нужно написать в строке WolframAlpha: Integrate f[x], x. Найти определенный интеграл " />
так же просто: Integrate[f[x], ] либо Integrate f(x), x=a..b.
- Integrate[Sin[x]/x², x];
- Integrate[x^10*ArcSin[x], x];
- Integrate[(x+Sin[x])/x, ];
- Integrate[Log[x^3+1]/x^5, ].
Дифференциальные уравнения и их системы
Решение систем дифференциальных уравнений также просто, достаточно вписать: , где f_1, f_2, …, f_n — дифференциальные уравнения, входящие в систему. К сожалению, решение задач Коши и краевых задач для систем дифференциальных уравнений пока-что не поддерживается.
Ошибки при работе с системой
Система может допускать некоторые ошибки при решении сложных задач. К примеру, если попытаться решить неравенство -\frac, для чего ввести запрос solve (3x^2-18x+24)/(2x-2)-(3x-12)/(2x^2-6x+4), в котором будет присутствовать точка 1, обращающая оба знаменателя исходного неравенства в 0. Так что весь риск и вся ответственность при использовании Wolfram|Alpha ложится на Вас. Скорее всего, данные недочеты будут скоро исправлены.
Разложение на множители
Например, разложить на множители
x 2 /3 — 3x + 12
factor x^2/3 — 3x + 12
и нажимаем равно (=).
Например, разложить на слагаемые
Partial fraction expansion(1-x^2)/(x^3+x)
используются формулы разложения функций в ряд Тейлора (Taylor series) и ряд Маклорена (Maclaurin series) или
Первое знакомство с Mathematica
С правилами ввода арифметических выражений познакомимся, взяв за основу книгу В. П. Дьяконова [2].
Основные математические операции : сложение , вычитание , умножение и деление , — задаются при помощи операторов. Понятие операторов даёт В. П. Дьяконов [2, с. 175]: "Операторы (от слова operator – исполнитель ) являются элементами записи математических выражений, указывающими на то, какие действия производятся над символьными или числовыми данными. Когда эти данные используются совместно с операторами, их называют операндами". Основные операторы для выполнения арифметических действий: " + ", " – ", " * ", " / ". Возведение в степень осуществляется при помощи знака возведения в степень " ^ ". Примеры использования некоторых операторов приведены на рис. 1.4.
Однако существуют и альтернативные способы задания простейших операторов (П. Веллин и др. [14, с. 19–20]). Так деление можно записать в традиционной форме, в виде дроби, где делимое находится в числителе над горизонтальной чертой, а делитель — в знаменателе, под горизонтальной чертой. Для этого сперва записывается делимое , затем нажимается комбинация клавиш Ctrl+/ , затем вводится делитель.
Подобным же образом можно записать и выражение для возведения в степень: сначала записывается основание , потом нажимается комбинация клавиш Ctrl+^ (на QWERTY-клавиатурах это сочетание Ctrl+Shift+6 ), потом — показатель степени.
При умножении вместо традиционно используемой в качестве знака умножения звёздочки " * " можно использовать пробел . В поздних версиях Mathematica он автоматически заменяется оператором " x ". Примеры альтернативного ввода операторов см. на рис. 1.5.
Е. М. Воробьёв в книге [1, с. 10] акцентирует внимание читателей на немаловажном вопросе порядка выполнения операций при работе со сложными выражениями. Следует знать, что Mathematica придерживается традиционных представлений о старшинстве арифметических операций. Так, например, вычисление выражения даст 14 , а не 20 , как при вычислении . И всё равно, как советует Е. М. Воробьёв [1, с. 10], "не стоит экономить на круглых скобках ( и ) , используемых для группирования" по причине специфического "одноэтажного" характера ввода исходных данных. Чтобы задать выражение , в Mathematica использование круглых скобок оказывается необходимым: . Если ввести , то это будет воспринято как . Другое выражение , записанное на языке Mathematica как , будет сгруппировано как , а выражение — как .
Вообще для вычислений Mathematica использует 4 вида скобок, каждый из которых имеет определённые неперекрывающиеся функции (С. Вольфрам [15, с. 5–6]):
- круглые скобки ( ) , используемые в математических выражениях для группировки отдельных частей выражений;
- квадратные скобки [ ] для функций;
- фигурные скобки < >для списков;
- двойные квадратные [[ ]] для индексирования.
С круглыми скобками мы уже познакомились и знаем, что их назначение то же, что и в математике — задание приоритета математических и логических операций. Квадратные скобки используются для задания аргументов функций. Так, например, для вычисления натурального логарифма вещественного числа 7.62 в окно редактирования следует ввести следующее: Log[7.62] . Следует отметить, что Mathematica различает строчные и прописные буквы, поэтому выражения LOG или log не являются эквивалентами имени Log логарифмической функции (Е. М. Воробьёв [1, с. 11]).
Mathematica содержит огромное количество встроенных функций (команд) — более тысячи. Поэтому, как отмечает Е. М. Воробьёв [1, с. 11], "ее использование как символьного, графического и численного калькулятора сводится в основном к применению различных функций к исходным выражениям, затем к функциям от исходных выражений, затем к функциям от функций от исходных выражений и т.д". Практически невозможно запомнить все имеющиеся в программе функции, способы задания их аргументов, опций и т.д. Однако спасительным в этом случаем является то, что заголовки большинство функций в Mathematica сходны с общепринятыми названиями в англоязычной математической терминологии. Приведём пример. Если возникла необходимость записать число, сопряжённое к тому или иному заданному комплексному числу, вспоминаем или ищем в словаре термин "сопряжённый" на английском языке и пробуем задать функцию в виде Conjugate[expr] , где expr — заданное комплексное выражение , и это приводит к искомому результату — см. пример на рис. 1.6.
Для некоторых математических функций, имеющих собственные обозначения, заголовки функций в Mathematica совпадают с этими обозначениями. Среди них — уже известная нам функция извлечения натурального логарифма Log , дифференцирование D , извлечение квадратного корня Sqrt , нахождение определителя (детерминанта) матрицы Det . В процессе изучения курса мы познакомимся и с другими подобными функциями.
Теперь разберёмся с фигурными скобками < >. Они применяются для построения списков. Список — это один из основных типов данных в Mathematica, который используется для записи векторов и матриц любого порядка, а также для записи дополнительных аргументов в таких функциях, как Plot (для построения графиков зависимостей) и Integrate (для интегрирования выражений).
В качестве иллюстрации к упомянутым функциям программы в примерах на рис. 1.7 мы осуществляем операцию поэлементного перемножения двух векторов (см. In[1] ), а также строим зависимость некоторой математической функции от аргумента ( In[3] ), при этом сами функции программы подробнее разберём в последующих лекциях. В примере In[3] в выражении Plot[Cos[3*x]+x,] список показывает, что функция должна быть построена для x, принадлежащем к интервалу [-5,5] (включая границы). Mathematica обладает очень мощными возможностями для работы со списками, которые будут рассмотрены в последующих лекциях.
Теперь же что касается двойных скобок [[ ]] . Они также используются при работе со списками. При помощи них можно обращаться акцентированно к элементу списка с конкретным номером. Так в примере In[2] на рис. 1.7 мы вынуждаем Mathematica показать нам второй по счёту элемент списка , который задан в In[1] .
Для подготовки полноценных программ помимо средств организации циклов необходимы и средства для создания разветвляющихся программ произвольной структуры. Обычно они реализуются с помощью условных выражений, позволяющих в зависимости от выполнения или невыполнения некоторого условия (condition) выполнять те или иные фрагменты программ.
Рис. 10.5. Продолжение вычислений после команды Interrupt[ ]
Функция IF
Как у большинства языков программирования, условные выражения задаются с помощью оператора или функции IF. Система Mathematica имеет функцию If, формы которой представлены ниже:
- If [condition, t, f] – возвращает t, если результатом вычисления condition является True, и f, если результат равен False;
- If [condition, t, f, u ] – то же, но дает и, если в результате вычисления condition не было получено ни True, ни False.
Следующий пример показывает создание программной процедуры с циклом Do, выход из которой реализуется с помощью функции If и директивы прерывания Aborted[ ]:
Научный форум dxdy
Скоро закипю наверное.
Задача: есть известная функция . Функция записывается следующим образом:
=1$" />
Как задать в математике?!
Да, спасибо. разобрался, спустившись до элементарных примеров, где всё работает отлично. Проблема оказалась в том, что в моем случае — результат численного решения ОДУ, и похоже математика не понимает этого.
мда. похоже придется MathLab разворачивать (
Сомнения, что в формате численного решения может ввести в тупик математику, оказались небезпочвенными и в конечном итоге, получилось так как нужно. Напишу с чем боролся последние 4 часа — глядишь кому понадобится.
Было написано:
Condition
is a pattern which matches only if the evaluation of test yields True .
represents a rule which applies only if the evaluation of test yields True .
is a definition to be used only if test yields True .
Details
Examples
Make a definition with the condition that x should be positive:
Replace all elements which satisfy the condition of being negative:
Share a variable between a condition and function body:
Use Condition inside a function body to control evaluation:
Condition evaluates a Boolean expression on named parts of a pattern:
PatternTest applies test functions to patterns, which need not have names:
Use Except to effectively negate Condition :
Repeated [ p /; test ] requires that every named pattern in p have the same value throughout the sequence:
The same is true of RepeatedNull :
Use PatternTest in combination with unnamed patterns to allow a sequence of nonidentical elements:
Читайте также: