Database Reference
In-Depth Information
In Clojure, it will look similar to this:
user=> (math (FindRoot [(== (Exp (- x 2)) y)
(== (Power y 2) x)] [[x 1] [y 1]]))
[(-> x 0.019026016103714054) (-> y 0.13793482556524314)]
How it works…
This recipe was very simple, but it doesn't hurt to break it down a little:
(FindRoot [(== (Exp (- x 2)) y) (== (Power y 2) x)] [[x 1] [y 1]])
This is just Mathematica's FindRoot function. That's right. All you need to do is call the
function just as you would call any Clojure function, but using the same name that you do in
Mathematica. The arguments to FindRoot are a sequence of Equals expressions and a
sequence of starting points for each variable in the system of equations. These are also the
same as in the Mathematica expression, but Clojuratica, in a good lisp fashion, requires the
operator to always go irst. It deines some aliases to Mathematica functions, such as the
== and - in this expression, which are changed to Equals and Subtract .
(math ...)
Any calls that we make to Mathematica must be wrapped in the math macro. We briely
discussed this macro at the end of the Setting up Mathematica to talk to Clojuratica for Mac
OS X and Linux recipe. It takes the function name and parameters that we just spoke about,
sends these to Mathematica, and returns the answer.
Sending matrixes to Mathematica from
Clojuratica
After the previous recipe, we should be able to execute Mathematica functions from
Clojure. We'll also need to send data to Mathematica so that there's something to call
those functions on.
Getting ready
You must irst have Clojuratica and Mathematica talking to each other. Either complete the
Setting up Mathematica to Talk to Clojuratica for Mac OS X and Linux recipe or the Setting
up Mathematica to Talk to Clojuratica for Windows recipe. Also, you'll need to have called the
init-mma function.
You'll also need to have Incanter listed in the dependencies in your project.clj ile:
(defproject interop "0.1.0-SNAPSHOT"
:description ""
 
Search WWH ::




Custom Search