Annotation of OpenXM/src/asir-contrib/packages/doc/m.oxweave, Revision 1.4
1.4 ! takayama 1: /* $OpenXM: OpenXM/src/asir-contrib/packages/doc/m.oxweave,v 1.3 2003/07/16 05:36:24 takayama Exp $ */
1.1 takayama 2: /* Use oxweave to generate documents on this source code
3: Use iso-2022 to write this file. No default use of GL and GR is allowed.
4: */
5:
6:
7: /*&C-texi
8: @c DO NOT EDIT THIS FILE oxmath.texi It is automatically generated
9: @c from asir-contrib/packages/doc/m.oxweave
10: @node Mathematica Functions,,, Top
1.4 ! takayama 11: @menu
! 12: * mathematica.start::
! 13: * mathematica.tree_to_string::
! 14: * mathematica.rtomstr::
! 15: @end menu
! 16:
! 17:
1.1 takayama 18: */
19: /*&jp-texi
20: @chapter Mathematica $BH!?t(B
21:
22: $B$3$N@a$G$O(B Mathematica $B$N(B ox $B%5!<%P(B @code{ox_math}
23: $B$H$N%$%s%?%U%'!<%94X?t$r2r@b$9$k(B.
24: $B$3$l$i$N4X?t$O%U%!%$%k(B @file{m} $B$GDj5A$5$l$F$$$k$N$G$3$N%U%!%$%k$r(B
25: @code{load("m")$} $B$G$3$N%U%!%$%k$r%m!<%I$7$F$+$i;HMQ$7$J$$$H$$$1$J$$(B.
26: @file{m} $B$O(B @file{$(OpenXM_HOME)/lib/asir-contrib} $B$K$"$k(B.
27:
28: $BCm0U(B: @code{ox_reset} $B$OF0$+$J$$(B.
29: */
30: /*&eg-texi
31: @chapter Mathematica Functions
32:
33: This chapter describes interface functions for
34: Mathematica ox server @code{ox_math}.
35: These interface functions are defined in the file @file{m}.
36: You need to load the file before using the interface functions.
37: by the command @code{load("m")$}.
38: The file @file{m} is at @file{$(OpenXM_HOME)/lib/asir-contrib}.
39:
40: Note: @code{ox_reset} does not work.
41: */
42: /*&C-texi
43: @example
44: @include opening.texi
45: [258] load("m")$
1.2 takayama 46: m Version 19991113. mathematica.start, mathematica.tree_to_string, mathematica.n_Eigenvalues
47: [259] mathematica.start();
1.1 takayama 48: ox_math has started.
49: ox_math: Portions copyright 2000 Wolfram Research, Inc.
50: See OpenXM/Copyright/Copyright.mathlink for details.
51: 0
1.2 takayama 52: [260] mathematica.n_Eigenvalues([[1,2],[4,5]]);
1.1 takayama 53: [-0.464102,6.4641]
54: @end example
55: */
56:
57: /*&C-texi
58: @noindent
59: @code{Mathematica} is the trade mark of Wolfram Research Inc.
60: This package requires Mathmatica Version 3.0, so you need
61: Mathematica to make this package work.
62: See @code{http://www.wolfram.com}.
63: The copyright and license agreement of the mathlink is put at
64: @code{OpenXM/Copyright/Copyright.mathlink}
65: Note that the licence prohibits to connect to a mathematica
66: kernel via the internet.
67:
68: @noindent
69: Author of @code{ox_math}: Katsuyoshi Ohara,
70: @code{ohara@@air.s.kanazawa-u.ac.jp}.
71: */
72:
73:
74: /*&jp-texi
75: @section $BH!?t0lMw(B
76: */
77: /*&eg-texi
78: @section Functions
79: */
80: /*&jp-texi
1.2 takayama 81: @node mathematica.start,,, Mathematica Functions
82: @subsection @code{mathematica.start}
83: @findex mathematica.start
1.1 takayama 84: @table @t
1.2 takayama 85: @item mathematica.start()
1.1 takayama 86: :: Localhost $B$G(B @code{ox_math} $B$r5/F0$9$k(B.
87: @end table
88:
89: @table @var
90: @item return
91: $B@0?t(B
92: @end table
93:
94: @itemize @bullet
95: @item Localhost $B$G(B @code{ox_math} $B$r5/F0$9$k(B.
96: $B5/F0$5$l$?(B @code{ox_math} $B$N<1JLHV9f$rLa$9(B.
97: @item @code{Xm_noX =1} $B$H$7$F$*$/$H(B, @code{ox_math} $BMQ$N(B debug window $B$,3+$+$J$$(B.
98: @item $B<1JLHV9f$O(B @code{M_proc} $B$K3JG<$5$l$k(B.
99: @end itemize
100: */
101: /*&eg-texi
1.2 takayama 102: @node mathematica.start,,, Mathematica Functions
103: @subsection @code{mathematica.start}
104: @findex mathematica.start
1.1 takayama 105: @table @t
1.2 takayama 106: @item mathematica.start()
1.1 takayama 107: :: Start @code{ox_math} on the localhost.
108: @end table
109:
110: @table @var
111: @item return
112: Integer
113: @end table
114:
115: @itemize @bullet
116: @item Start @code{ox_math} on the localhost.
117: It returns the descriptor of @code{ox_math}.
118: @item Set @code{Xm_noX = 1} to start @code{ox_math} without a debug window.
119: @item The descriptor is stored in the variable @code{M_proc}.
120: @end itemize
121: */
122: /*&C-texi
123: @example
1.2 takayama 124: P = mathematica.start()
1.1 takayama 125: @end example
126: */
127: /*&jp-texi
128: @table @t
129: @item $B;2>H(B
130: @code{ox_launch}
131: @end table
132: */
133: /*&eg-texi
134: @table @t
135: @item Reference
136: @code{ox_launch}
137: @end table
138: */
139:
140: /*&jp
141: $B0J2<$G(BMathematica $B$r8F$V$?$a$NJd=u4X?t$rDj5A$9$k(B.
142: */
143:
144: /*&jp-texi
1.2 takayama 145: @node mathematica.tree_to_string,,, Mathematica Functions
146: @subsection @code{mathematica.tree_to_string}
147: @findex mathematica.tree_to_string
1.1 takayama 148: @table @t
1.2 takayama 149: @item mathematica.tree_to_string(@var{t})
1.1 takayama 150: :: ox_math $B$NLa$9(B Mathematica $B$NLZ9=B$%G!<%?(B @var{t} $B$r(B @code{asir} $B7A<0$K(B
151: $B$J$*$9(B.
152: @end table
153:
154: @table @var
155: @item return
156: $BJ8;zNs(B
157: @item t
158: $B%j%9%H(B
159: @end table
160: @itemize @bullet
161: @item
162: t $B$O(B @code{ox_math} $B$NLa$9(B Mathematica $B$NLZ9=B$%G!<%?(B.
163: @item
164: ox_math $B$NLa$9(B Mathematica $B$NLZ9=B$%G!<%?(B @var{t} $B$r(B @code{asir} $B7A<0$K(B
165: $B$J$*$9(B.
166: @item
167: @var{t} $B$r$J$k$Y$/(B asir $B$,M}2r$G$-$k7A$G$N(B, $BA0CV$^$?$OCfCV5-K!(B
168: $B$NJ8;zNs$KJQ49$9$k(B.
169: @var{t}$B$N@hF,MWAG$NJ8;zNs$,%-!<%o!<%I$G$"$k$,(B, $B$=$NJ8;z$,JQ49%F!<%V%k$K$J$$(B
170: $B$H$-$O(B, @code{m_} $B$r%-!<%o!<%I$N@hF,$K$D$1$F(B, $B4X?t8F=P7A<0$NJ8;zNs$X(B
171: $B$+$($k(B.
172: @end itemize
173: */
174: /*&eg-texi
1.2 takayama 175: @node mathematica.tree_to_string,,, Mathematica Functions
176: @subsection @code{mathematica.tree_to_string}
177: @findex mathematica.tree_to_string
1.1 takayama 178: @table @t
1.2 takayama 179: @item mathematica.tree_to_string(@var{t})
1.1 takayama 180: :: translates Mathematica tree data @var{t} into a string that can
181: be understandable by @code{asir} as far as possible.
182: @end table
183:
184: @table @var
185: @item return
186: String
187: @item t
188: List
189: @end table
190: @itemize @bullet
191: @item
192: t is a Mathematica tree data which is generated by @code{ox_math}.
193: @item
194: This function
195: translates Mathematica tree data @var{t} into a string that may
196: be understandable by @code{asir}.
197: @item
198: This function translates @var{t} into a prefix or infix expression that may be understantable by @code{asir}.
199: The first element of the list @var{t}
200: is a key word string of the Mathematica object.
201: If this function recognizes the key word, it translates @code{t} into
202: the form that can be understandable by @code{asir}.
203: If it cannot recognizes the key word, it translates @code{t} into
204: a function call with the function name
205: @code{m_(the key word)}.
206: @end itemize
207: */
208: /*&C-texi
209: @example
1.2 takayama 210: [267] mathematica.start();
1.1 takayama 211: 0
212: [268] ox_execute_string(0,"Expand[(x-1)^2]");
213: 0
214: [269] A=ox_pop_cmo(0);
215: [Plus,1,[Times,-2,x],[Power,x,2]]
1.2 takayama 216: [270] mathematica.tree_to_string(A);
1.1 takayama 217: (1)+((-2)*(x))+((x)^(2))
218: [271] eval_str(@@);
219: x^2-2*x+1
220: @end example
221: */
222: /*&C-texi
223: @example
1.2 takayama 224: [259] mathematica.tree_to_string(["List",1,2]);
1.1 takayama 225: [1 , 2]
1.2 takayama 226: [260] mathematica.tree_to_string(["Plus",2,3]);
1.1 takayama 227: (2)+(3)
1.2 takayama 228: [261] mathematica.tree_to_string(["Complex",2.3,4.55]);
229: mathematica.complex(2.3 , 4.55)
230: [362] mathematica.tree_to_string(["Plus",["Complex",1.2,3.5],1/2]);
231: (mathematica.complex(1.2 , 3.5))+(1/2)
1.1 takayama 232: [380] eval_str(@@);
1.3 takayama 233: (1.7+3.5*@@i)
1.1 takayama 234: @end example
235: */
236: /*&jp-texi
237: @table @t
238: @item $B;2>H(B
1.2 takayama 239: @code{ox_pop_cmo}, @code{eval_str}, @code{mathematica.rtomstr}
1.1 takayama 240: @end table
241: */
242: /*&eg-texi
243: @table @t
244: @item Reference
1.2 takayama 245: @code{ox_pop_cmo}, @code{eval_str}, @code{mathematica.rtomstr}
1.1 takayama 246: @end table
247: */
248: /*&jp
249: {\tt m\_tree\_to\_string(L)} $B$O(B, {\tt MathLink} $B$N(B $BLZ7A<0$GM?$($l$?(B
250: $B%*%V%8%(%'%/%H$r$J$k$Y$/(B asir $B$,M}2r$G$-$k7A$G$N(B, $BA0CV$^$?$OCfCV5-K!(B
251: $B$NJ8;zNs$KJQ49$9$k(B. \\
252: $BNc(B: {\tt m\_tree\_to\_string(["Plus",1,2])} $B$OJ8;zNs(B
253: {\tt 1+2} $B$rLa$9(B. \\
254: $B%j%9%H$N@hF,$NJ8;zNs$,%-!<%o!<%I$G$"$k$,(B, $B$=$NJ8;z$,JQ49%F!<%V%k$K$J$$(B
255: $B$H$-$O(B, {\tt m\_} $B$r%-!<%o!<%I$N@hF,$K$D$1$F(B, $B4X?t8F=P7A<0$NJ8;zNs$X(B
256: $BJQ$($k(B.
257: */
258:
259: /*&jp-texi
1.2 takayama 260: @node mathematica.rtomstr,,, Mathematica Functions
261: @subsection @code{mathematica.rtomstr}
262: @findex mathematica.rtomstr
1.1 takayama 263: @table @t
1.2 takayama 264: @item mathematica.rtomstr(@var{t})
1.1 takayama 265: :: @var{t} $B$r$J$k$Y$/(B Mathematica $B$NM}2r2DG=$JJ8;zNs$KJQ$($k(B.
266: @end table
267:
268: @table @var
269: @item return
270: $BJ8;zNs(B
271: @item t
272: $B%*%V%8%'%/%H(B
273: @end table
274: @itemize @bullet
275: @item
276: @var{t} $B$r$J$k$Y$/(B Mathematica $B$,M}2r$G$-$k7A$NJ8;zNs$KJQ49$9$k(B.
277: $B$?$H$($P(B, @code{asir} $B$G$O%j%9%H$r(B @code{[}, @code{]} $B$G0O$`$,(B,
278: Mathematica $B$G$O(B @code{@{}, @code{@}} $B$G0O$`(B.
279: $B$3$N4X?t$O$3$NJQ49$r$*$3$J$&(B.
280: @end itemize
281: */
282: /*&eg-texi
1.2 takayama 283: @node mathematica.rtomstr,,, Mathematica Functions
284: @subsection @code{mathematica.rtomstr}
285: @findex mathematica.rtomstr
1.1 takayama 286: @table @t
1.2 takayama 287: @item mathematica.rtomstr(@var{t})
1.1 takayama 288: :: translate the object @var{t} into a string that can be understandable
289: by Mathematica as far as possible.
290: @end table
291:
292: @table @var
293: @item return
294: String
295: @item t
296: Object
297: @end table
298: @itemize @bullet
299: @item
300: It translates the object @var{t} into a string that can be understandable
301: by Mathematica as far as possible.
302: For example, @code{asir} uses @code{[}, @code{]} to express a list,
303: but @code{Mathematica} uses @code{@{}, @code{@}}.
304: This function makes this sort of translations.
305: @end itemize
306: */
307: /*&C-texi
308: @example
1.2 takayama 309: [259] mathematica.rtomstr([1,2,3]);
1.3 takayama 310: @{1,2,3@}
1.2 takayama 311: [260] mathematica.rtomstr([[1,x,x^2],[1,y,y^2]]);
1.1 takayama 312: @{@{1,x,x^2@},@{1,y,y^2@}@}
313: @end example
314: */
315: /*&jp-texi
316: $B$b$&0l$DNc$r$"$2$h$&(B.
1.2 takayama 317: $B<!$N4X?t(B @code{mathematica.inverse(M)} $B$O(B @code{ox_math}
1.1 takayama 318: $B$r$h$s$G9TNs(B @code{M} $B$N5U9TNs$r7W;;$9$k4X?t$G$"$k(B.
1.2 takayama 319: @code{mathematica.inverse(M)} $B$O<!$N$h$&$K(B @code{r_tostr(M)} $B$rMQ$$$F(B
1.1 takayama 320: asir $B$N9TNs$r(B Mathematica $B7A<0$KJQ49$7$F$+$i(B
321: @code{ox_execute_string} $B$G(B Mathematica $B$K5U9TNs$r7W;;(B
322: $B$5$;$F$$$k(B.
323: */
324: /*&eg-texi
325: Let us see one more example.
1.2 takayama 326: The following function @code{mathematica.inverse(M)} outputs
1.1 takayama 327: the inverse matrix of the matrix @code{M} by calling @code{ox_math}.
328: It translates @code{asir} matrix @code{M} into a Mathematica expression
329: by @code{r_tostr(M)}
330: and makes Mathematica compute the inverse matrix of @code{M} by
331: @code{ox_execute_string}.
332: */
333: /*&C-texi
334: @example
335: def inverse(M) @{
336: P = 0;
1.2 takayama 337: A = mathematica.rtomstr(M);
1.1 takayama 338: ox_execute_string(P,"Inverse["+A+"]");
339: B = ox_pop_cmo(B);
1.2 takayama 340: C = mathematica.tree_to_string(B);
1.1 takayama 341: return(eval_str(C));
342: @}
343:
344: [269] M=[[1,x,x^2],[1,y,y^2],[1,z,z^2]];
345: [[1,x,x^2],[1,y,y^2],[1,z,z^2]]
1.2 takayama 346: [270] A=mathematica.inverse(M)$
1.1 takayama 347: [271] red(A[0][0]);
348: (z*y)/(x^2+(-y-z)*x+z*y)
349: @end example
350: */
351: /*&jp-texi
352: @table @t
353: @item $B;2>H(B
354: @code{ox_execute_string}, @code{ToExpression}(Mathematica),
1.2 takayama 355: @code{mathematica.tree_to_string}
1.1 takayama 356: @end table
357: */
358: /*&eg-texi
359: @table @t
360: @item Reference
361: @code{ox_execute_string}, @code{ToExpression}(Mathematica),
1.2 takayama 362: @code{mathematica.tree_to_string}
1.1 takayama 363: @end table
364: */
365: /*&jp
1.2 takayama 366: $B4X?t(B \verb+ mathematica.rtomstr(L) + $B$O(B asir $B7A<0$N%*%V%8%'%/%H(B L $B$r$J$k$Y$/(B
1.1 takayama 367: Mathematica $B$,M}2r$G$-$k7A$NJ8;zNs$KJQ49$9$k(B.
368: $B$?$H$($P(B, $B%j%9%H(B, $B%Y%/%H%k(B, $B9TNs(B $B$O(B asir $B$G$O(B {\tt [}, {\tt ]}
369: $B$G0O$`$,(B, Mathematica $B$G$O(B, {\tt \{ }, {\tt \}} $B$G0O$`(B.
370: $B8=:_$N$H$3$m$3$N4X?t$O$3$NJQ49$N$_9T$J$C$F$$$k(B. \\
371: $BNc(B:
372: {\footnotesize
373: \begin{verbatim}
1.2 takayama 374: [262] mathematica.rtomstr([1,2,3]);
1.1 takayama 375: {1,2,3}
376: [375] A = newvect(3,[x+2,"Hello",[1/2,3]]);
377: [ x+2 Hello [1/2,3] ]
1.2 takayama 378: [376] mathematica.rtomstr(A);
1.1 takayama 379: {x+2,Hello,{1/2,3}}
380: \end{verbatim}
381: }
382: */
383:
384: end$
385:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>