aboutsummaryrefslogtreecommitdiff
path: root/src/hyper/pages/ANNA-ES.ht
blob: 87145df699eb7aa7a7cfedae88ac7a61d0fd277c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
\begin{page}{UXANNA}{AXIOM/NAG Expert System}
\centerline{\tt{\inputbitmap{\htbmdir{}/anna_logo.xbm}}\rm}
\newline
\centerline{This expert system chooses, and uses, NAG numerical routines.}
\begin{scroll}
\blankline
\indent{2}
\beginmenu
\menumemolink{Integration}{UXANNAInt}
\blankline
\menumemolink{Ordinary Differential Equations}{UXANNAOde}
\blankline
\menumemolink{Partial Differential Equations}{UXANNAPde}
\blankline
\menumemolink{Optimization}{UXANNAOpt}
\vspace{10}
\menumemolink{About the AXIOM/NAG Expert System}{UXANNATxt}
%\unixcommand{(Postscript)}{ghostview \ \htbmdir{}/anna.ps}
%\blankline
%\menumemolink{How to use the NAGLINK}{nagLinkIntroPage}
%\blankline
%\menumemolink{Tutorial}{tutorialIntroPage}
%\blankline
%\item \menulispdownlink{Interpolation}{(|interp1|}
\endmenu
\indent{0}
\end{scroll}
%\unixcommand{Netscape}{netscape \ http:\/\/www.bath.ac.uk\/\~masbjd\/anna.html}
\autobutt{HelpContents}
\end{page}

\begin{page}{UXANNAInt}{Integration}
Welcome to the Integration section of {\tt
\inputbitmap{\htbmdir{}/anna.xbm.tiny}}, the {\em AXIOM/NAG Expert
System}.  This system chooses, and uses, NAG numerical routines.
\begin{scroll}
\blankline
\indent{2}
\beginmenu
\item \menulispdownlink{Integration}{(|annaInt|)}\space{}\newline
\indent{5} Integrating a function over a finite or infinite range.
\blankline
\item \menulispdownlink{Multiple Integration}{(|annaMInt|)}\space{}\newline
\indent{5} Integrating a multivariate function over a finite space.  
The dimensions of the space need to be 2 <= n <= 15.
\blankline
\menudownlink{Examples}{UXANNAIntEx}\space{}\newline
\indent{5} Examples of integration.  These examples cover all of the major 
methods.  Parameters can be changed to investigate the effect 
on the choice of method.
\endmenu
\indent{0}
\end{scroll}
\autobutt{MainHelp}
\end{page}

\begin{page}{UXANNAOde}{Ordinary Differential Equations}
Welcome to the Ordinary Differential Equations section of {\tt
\inputbitmap{\htbmdir{}/anna.xbm.tiny}}, the 
{\em AXIOM/NAG Expert System}.  
This system chooses, and uses, NAG numerical routines.
\begin{scroll}
\blankline
\blankline
\indent{2}
\beginmenu
\item \menulispdownlink{Ordinary Differential Equations}{(|annaOde|)}\space{}\newline
\indent{5} Finding a solution to an Initial Value Problem of a set of Ordinary Differential Equations.
\blankline
\menudownlink{Examples}{UXANNAOdeEx}\newline
\indent{5} Examples of ODE problems with various features using both stiff
and non-stiff methods.  Parameters can be changed to investigate the effect 
on the choice of method.
\autobutt{MainHelp}
\endmenu
\indent{0}
\end{scroll}
\end{page}

\begin{page}{UXANNAOpt}{Optimization}
Welcome to the Optimization section of {\tt
\inputbitmap{\htbmdir{}/anna.xbm.tiny}}, the {\em AXIOM/NAG Expert System}.  
This system chooses, and uses, NAG numerical routines.
\begin{scroll}
\blankline
\indent{2}
\beginmenu
\item \menulispdownlink{Optimization of a Single Multivariate Function}
{(|annaOpt|)}\space{}\newline
\indent{6} Finding the minimum of a function in n variables. 
\newline
\indent{6} Linear Programming and Quadratic Programming problems.
\blankline
\indent{4} 
\beginmenu
\menudownlink{Examples}{UXANNAOptEx}\newline
\indent{8} Examples of optimization problems with various constraint features.
\endmenu
\blankline
\item \menulispdownlink{Optimization of a set of observations of a data set}
{(|annaOpt2|)}\space{}\newline
\indent{6} Least-squares problems.
\newline
\indent{6} Checking the goodness of fit of a least-squares model.
\blankline
\indent{4} 
\beginmenu
\menudownlink{Examples}{UXANNAOpt2Ex}\newline
\indent{8} Examples of least squares problems.
\endmenu
\endmenu
\indent{0}
\end{scroll}
\autobutt{MainHelp}
\end{page}

\begin{page}{UXANNAPde}{Partial Differential Equations}
Welcome to the Partial Differential Equations section of {\tt
\inputbitmap{\htbmdir{}/anna.xbm.tiny}}, the
{\em AXIOM/NAG Expert System}.  
\begin{scroll}
\indent{2}
\beginmenu
\menulispdownlink{Second Order Elliptic Partial Differential Equation}{(|annaPDESolve|)}
\newline
\indent{4} Discretizing the PDE:
\newline
\centerline{\inputbitmap{\htbmdir{}/d03eef.xbm}}
defined on a rectangular region with boundary conditions of the form 
\centerline{\inputbitmap{\htbmdir{}/d03eef1.bitmap}} 
and solving the resulting
seven-diagonal finite difference equations using a multigrid technique.
\blankline
%\menulispdownlink{Helmholtz Equation in 3-D, Cartesian Coordinates}{(|d03fafVars|)}
%\newline
%\indent{4} Descretizing the PDE:
%\newline
%\centerline{\inputbitmap{\htbmdir{}/d03faf.xbm}}
%and solving the resulting
%seven-diagonal finite difference equations using a method based on the Fast
%Fourier Transform.
\endmenu
\end{scroll}
\autobutt{MainHelp}
\end{page}

\begin{page}{UXANNAOptEx}{Examples Using the AXIOM/NAG Expert System}
\begin{scroll}
Select any of these examples and you will be presented with a page which
contains active areas for the function and its parameters.
\blankline
These parameters can be altered by selecting the area and replacing the
default parameters by the new values. 
\blankline
\beginmenu
\item \menulispdownlink{Example 1: \newline 
\indent{2} Minimize the function: 
\centerline{\inputbitmap{\htbmdir{}/opt1.xbm}}}{(|annaOptDefaultSolve1|)}\space{}
\blankline
\item \menulispdownlink{Example 2: \newline 
\indent{2} Minimize the function: 
\centerline{\inputbitmap{\htbmdir{}/opt2.xbm}}}{(|annaOptDefaultSolve2|)}\space{}
\newline \indent{3} With conditions: 
\centerline{\inputbitmap{\htbmdir{}/opt2c.xbm}}
\blankline
\item \menulispdownlink{Example 3: \newline 
\indent{2} Minimize the function: 
\centerline{\inputbitmap{\htbmdir{}/opt3.xbm}}}{(|annaOptDefaultSolve3|)}\space{}
\newline \indent{3} With conditions: 
\centerline{\inputbitmap{\htbmdir{}/opt3c1.xbm}}
\centerline{\inputbitmap{\htbmdir{}/opt3c2.xbm}}
\blankline
\item \menulispdownlink{Example 4: \newline 
\indent{2} Minimize the function: 
\centerline{\inputbitmap{\htbmdir{}/opt4.xbm}}
}{(|annaOptDefaultSolve4|)}\space{}
\newline \indent{3} With conditions: 
\centerline{\inputbitmap{\htbmdir{}/opt4c1.xbm}}
\centerline{\inputbitmap{\htbmdir{}/opt4c2.xbm}}
\centerline{\inputbitmap{\htbmdir{}/opt4c3.xbm}}
\blankline
\item \menulispdownlink{Example 5: \newline 
\indent{2} Minimize the function: 
\centerline{\inputbitmap{\htbmdir{}/opt5.xbm}}
}{(|annaOptDefaultSolve5|)}\space{}
\newline \indent{3} With conditions: 
\centerline{\inputbitmap{\htbmdir{}/opt4c1.xbm}}
\centerline{\inputbitmap{\htbmdir{}/opt4c2.xbm}}
\centerline{\inputbitmap{\htbmdir{}/opt4c3.xbm}}
\blankline
\endmenu
\end{scroll}
\autobutt{Mainhelp}
\end{page}

\begin{page}{UXANNAOpt2Ex}{Examples Using the AXIOM/NAG Expert System}
\begin{scroll}
Select this example and you will be presented with a page which
contains active areas for the function and its parameters.
\blankline
These parameters can be altered by selecting the area and replacing the
default parameters by the new values. 
\blankline
\beginmenu
\blankline
\item \menulispdownlink{Example 1: \newline 
\indent{2} Calculate a least-squares minimization of the following functions: 
\centerline{\inputbitmap{\htbmdir{}/opt61.xbm}}
\centerline{\inputbitmap{\htbmdir{}/opt62.xbm}}
\centerline{\inputbitmap{\htbmdir{}/opt63.xbm}}}
{(|annaOpt2DefaultSolve|)}\space{}
\endmenu
\end{scroll}
\autobutt{MainHelp}
\end{page}


\begin{page}{UXANNAIntEx}{Examples Using the AXIOM/NAG Expert System}
\begin{scroll}
Select any of these examples and you will be presented with a page which
contains active areas for the function and its parameters.
\blankline
These parameters can be altered by selecting the area and replacing the
default parameters by the new values.  In this way you can investigate the
effect of the new parameters on the choice of method.
\blankline
\beginmenu
\item \menulispdownlink{Example 1: \newline 
\centerline{\inputbitmap{\htbmdir{}/int1.xbm}}}{(|annaFoo|)}\space{}
\blankline
\item \menulispdownlink{Example 2: \newline 
\centerline{\inputbitmap{\htbmdir{}/int2.xbm}}}{(|annaBar|)}\space{}
\blankline
\item \menulispdownlink{Example 3: \newline 
\centerline{\inputbitmap{\htbmdir{}/int3.xbm}}}{(|annaJoe|)}\space{}
\blankline
\item \menulispdownlink{Example 4: \newline 
\centerline{\inputbitmap{\htbmdir{}/int4.xbm}}}{(|annaSue|)}\space{}
\blankline
\item \menulispdownlink{Example 5: \newline 
\centerline{\inputbitmap{\htbmdir{}/int5.xbm}}}{(|annaAnn|)}\space{}
\blankline
\item \menulispdownlink{Example 6: \newline 
\centerline{\inputbitmap{\htbmdir{}/int6.xbm}}}{(|annaBab|)}\space{}
\blankline
\item \menulispdownlink{Example 7: \newline 
\centerline{\inputbitmap{\htbmdir{}/int7.xbm}}}{(|annaFnar|)}\space{}
\blankline
\item \menulispdownlink{Example 8: \newline 
\centerline{\inputbitmap{\htbmdir{}/int8.xbm}}}{(|annaDan|)}\space{}
\blankline
\item \menulispdownlink{Example 9: \newline 
\centerline{\inputbitmap{\htbmdir{}/int9.xbm}}}{(|annaBlah|)}\space{}
\blankline
\item \menulispdownlink{Example 10: \newline 
\centerline{\inputbitmap{\htbmdir{}/int10.xbm}}}{(|annaTub|)}\space{}
\blankline
\item \menulispdownlink{Example 11: \newline 
\centerline{\inputbitmap{\htbmdir{}/int13.xbm}}}{(|annaRats|)}\space{}
\blankline
\item \menulispdownlink{Example 12: \newline 
\centerline{\inputbitmap{\htbmdir{}/int11.xbm}}}{(|annaMInt|)}\space{}
\endmenu
\end{scroll}
\autobutt{MainHelp}
\end{page}

\begin{page}{UXANNAOdeEx}{Examples Using the AXIOM/NAG Expert System}
\begin{scroll}
Analyses the function for various attributes, chooses and 
then uses a suitable ODE solver to provide a 
solution to the system of n ODEs \center{\htbitmap{d02gaf},}
for i = 1,2,...,n.
\blankline
Select either of these examples and you will be presented with a page which
contains active areas for the function and its parameters.
\blankline
These parameters can be altered by selecting the area and replacing the
default parameters by the new values.  In this way you can investigate the
effect of the new parameters on the choice of method.
\blankline
\beginmenu
\item \menulispdownlink{Example 1: \tab{12}
\inputbitmap{\htbmdir{}/ode1.xbm}}{(|annaOdeDefaultSolve1|)}
\blankline with initial conditions: \newline
\tab{12}\inputbitmap{\htbmdir{}/y1.xbm} \space{1} and \space{1}
\inputbitmap{\htbmdir{}/x1.xbm}
\blankline
\blankline
\blankline
\item \menulispdownlink{Example 2: \tab{12}
\inputbitmap{\htbmdir{}/ode2.xbm}}{(|annaOdeDefaultSolve2|)}
\blankline with initial conditions: \newline
\tab{12}\inputbitmap{\htbmdir{}/y2.xbm} \space{1} and \space{1}
\inputbitmap{\htbmdir{}/x1.xbm}
\blankline
\blankline
\blankline
\endmenu
\end{scroll}
\autobutt{MainHelp}
\end{page}

\begin{page}{UXANNATxt}{About the AXIOM/NAG Expert System}
\begin{scroll}
\centerline{\tt\inputbitmap{\htbmdir{}/anna_logo.xbm}\rm} 
\vspace{-30}\horizontalline
In applied mathematics, electronic and chemical engineering, the modelling
process can produce a number of mathematical problems which require numerical
solutions for which symbolic methods are either not possible or not obvious. 
With the plethora of numerical library routines for the solution of these
problems often the numerical analyst has to answer the question {\em Which
routine to choose?} 
\blankline
Some analysis needs to be carried out before the
appropriate routine can be identified i.e. {\em How stiff is this ODE?} and
{\em Is this function continuous?}  It may well be the case that more than
one routine is applicable to the problem.  So the question may become {\em
Which is likely to be the best?}  Such a choice may be critical for both
accuracy and efficiency.
\blankline
An expert system is thus required to make this choice based on the result of
its own analysis of the problem, call the routine and act on the outcome. 
This may be to put the answer in a relevant form or react to an apparent
failure of the chosen routine and thus choose and call an alternative.  
It should also have sufficient explanation mechanisms to inform on the choice
of routine and the reasons for that choice.
\blankline
\end{scroll}
\downlink{ Examples }{UXANNAEx}
\downlink{ Introduction }{UXANNAIntro}
\downlink{ Decision Agents }{UXANNADec}
\downlink{ Inference Mechanisms }{UXANNAInfer}
\downlink{ Measure Functions }{UXANNAMeas}
\end{page}

\begin{page}{UXANNAIntro}{Introduction to the AXIOM/NAG Expert System}
\begin{scroll}
\centerline{\tt\inputbitmap{\htbmdir{}/anna_logo.xbm}\rm}
\vspace{-30}\horizontalline
Deciding amongst, and then implementing, several possible approaches to
solving a numerical problem can be daunting for a novice user, or tedious for
an expert.  Different attributes of the problem need to be
identified and their possible interactions weighed up before a final decision
about which method to use can be made. 
\blankline
The implementation is then largely an
automatic, if laborious, process of writing, compiling and linking usually
Fortran code.  The aim is to build an expert system which will use computer
algebra to analyse such features of a problem, inference mechanisms and a
knowledge base to choose a numerical method appropriate to the solution of a
given problem.  
\blankline
Any interactive system is constrained by the need to provide a reasonable
response time for the user.  Given the complexity of some of the analysis our
system will need to do, it is clear that we should only aim to select a good
method, rather than try to identify the best one available.  The overall goal
is to provide a ``black-box'' interface to numerical software which allows
non-experts access to its full potential.  It will also provide explanation
mechanisms commensurate with its role as a teaching aid.
\blankline
Given, say, an integration to perform (which may or may not be able to be
handled symbolically), the system should choose and apply an appropriate
method, thus mirroring as closely as possible the way that an experienced
numerical analyst would think so, for example, given an integration to
perform:\newline
{\it \centerline{\inputbitmap{\htbmdir{}/int1.xbm}}}
\newline
the experienced analyst would see that the integral is semi-infinite and
transform it by splitting the range and transforming the integral over {\it
[1,\inputbitmap{\htbmdir{}/infty.xbm}]} into an integral over 
{\it [0,1] } using the transformation {\it x -> 1/t}.  
A different numerical routine might be used over each
sub-region and the results added to give the final answer. 
\blankline
It then requires
the translation of the problem into Fortran code which may be extensive.
Even with this simple example, the process is quite involved.
\blankline
\end{scroll}
\autobuttons
\downlink{ Decision Agents }{UXANNADec}
\downlink{ Inference Mechanisms }{UXANNAInfer}
\downlink{ Method Domains }{UXANNAMeth}
\downlink{ Measure Functions }{UXANNAMeas}
\end{page}

\begin{page}{UXANNAEx}{Example using the AXIOM/NAG Expert System}
\begin{scroll}
\xtc{
{\bf Example 1}: The integral
{\centerline{\inputbitmap{\htbmdir{}/int1.xbm}}}
\newline
is performed as follows:
\blankline
}{}
\xtc{
}{
\spadpaste{ans := integrate((exp(-X^3)+exp(-3*X^2))/sqrt(X),0.0..\%plusInfinity)\bound{ans} }
}
\blankline
\xtc{
It creates a composite structure for which the field containing the result can be 
expanded as required.\blankline
}{
\spadpaste{ans . 'result\free{ans}}
}
\blankline
\xtc{
}{
\spadpaste{ans . 'abserr\free{ans}}
}
\blankline
This system has performed the analysis described above, done the necessary
problem transformation, written any necessary Fortran, called two different
numerical routines, and amalgamated their
results.  This whole process was transparent to the user.
\end{scroll}
\autobuttons
\downlink{Example 2}{UXANNAEx2}
%\downlink{Decision Agents}{UXANNADec}
\end{page}

\begin{page}{UXANNAEx2}{Example using the AXIOM/NAG Expert System}
\begin{scroll}
\xtc{
{\bf Example 2}: The ODE
{\centerline{\inputbitmap{\htbmdir{}/ode3.xbm}\space{1}with
\space{1}
{\inputbitmap{\htbmdir{}/y3.xbm}}}}
\newline
could be solved as follows:
\blankline
}{}
\xtc{
}{
\spadpaste{ans2 := solve([Y[2],-1001*Y[2]-1000*Y[1]], 0.0, 10.0,
[1.0,-1.0], [2,4,6,8], 1.0e-4)\bound{ans2} }
}
\blankline
\xtc{
It creates a composite structure for which the field containing the result can be 
expanded as required.\blankline
}{
\spadpaste{ans2 . 'result\free{ans2}}
}
\blankline
\xtc{
}{
\spadpaste{ans2 . 'y\free{ans2}}
}
\blankline
\end{scroll}
\autobuttons
\downlink{Example 3}{UXANNAEx3}
%\downlink{Decision Agents}{UXANNADec}
\end{page}

\begin{page}{UXANNAEx3}{Example using the AXIOM/NAG Expert System}
\begin{scroll}
\xtc{
{\bf Example 3}: The function
{\centerline{\inputbitmap{\htbmdir{}/opt2.xbm}}}
with simple bounds
{\centerline{\inputbitmap{\htbmdir{}/opt2c.xbm}}}
\newline
could be minimized as follows:
\blankline
}{}
\xtc{
}{
\spadpaste{ans3 := optimize((X[1]+10*X[2])**2 + 5*(X[3]-X[4])**2 + 
(X[2]-2*X[3])**4 + 10*(X[1]-X[4])**4, [3,-1,0,1], [1,-2,\%minusInfinity,1], 
[3,0,\%plusInfinity,3])\bound{ans3} }
}
\blankline
\xtc{
It creates a composite structure for which the field containing the minimum can be 
expanded as required.\blankline
}{
\spadpaste{ans3 . objf\free{ans3}}
}
\blankline
\xtc{
}{
\spadpaste{ans3 . x\free{ans3}}
}
\blankline
\xtc{
}{
\spadpaste{ans3 . attributes\free{ans3}}
}
\blankline
\end{scroll}
\autobuttons
\downlink{Decision Agents}{UXANNADec}
\end{page}

\begin{page}{UXANNADec}{Decision Agents}
\begin{scroll}
\blankline
Some features are either present or absent in a problem.  Examples of such
binary decisions include {\em is a matrix symmetric?} and {\em is a
function continuous?}  However in practice many questions are about the {\em
degree} to which a problem exhibits a property: {\em how much does a
function oscillate?}, or {\em how stiff are these differential equations?}
\blankline
We have therefore created decision agents of two types, reflecting their
property --- {\em Binary Agents} are Boolean functions returning either true
or false and {\em Intensity Functions} are quantitative and return a range of
different values, either numerical or structured types. The framework we are
developing is able to deal with both these forms of information.  
\blankline

In any given problem area (for example solving ordinary differential
equations, optimization etc.) we have a selection of {\em methods}.  These
might be to use a particular NAG routine, or they might involve employing a
higher-level strategy such as transforming the problem into an equivalent,
but easier to solve, form.  
\blankline
Associated with every method we define a {\em
measure function} which assesses the suitability of that method to a
particular problem.  Each measure function has access to a range of symbolic
{\em agents} which can answer questions about the various properties of the
problem in hand.
\blankline
\end{scroll}
\downlink{ Inference Mechanisms }{UXANNAInfer}
\downlink{ Method Domains }{UXANNAMeth}
\downlink{ Measure Functions }{UXANNAMeas}
\downlink{ Computational Agents }{UXANNAAgent}

\end{page}

\begin{page}{UXANNAInfer}{Inference Mechanisms}
\begin{scroll}
\blankline
The inference machine will take the problem description as provided by the
user and perform an initial analysis to verify its validity.  It will
consider, in turn, all of the available methods within its knowledge base
which might solve that problem.  In doing so it analyses the input problem to
find out about any attributes that could affect the ability of the methods
under consideration to perform effectively.  
\blankline
Some of these
measures may use lazy evaluation in the sense that, if a method already
assessed is believed to be a good candidate, and if evaluating the current
measure will be relatively expensive, then that measure will not be evaluated
unless later evidence shows that the selected method is not, in fact, a
successful strategy, for example if it has failed.
\end{scroll}
\downlink{ Method Domains }{UXANNAMeth}
\downlink{ Measure Functions }{UXANNAMeas}
\downlink{ Computational Agents }{UXANNAAgent}
\downlink{ Examples }{UXANNAEx}
\end{page}

\begin{page}{UXANNAMeth}{Method Domains}
\begin{scroll}
\blankline
An AXIOM {\em domain} has been created for each method or strategy for
solving the problem.  These method domains each implement two functions with
a uniform (method independant) interface.
\blankline {\bf measure:} A function which calculates an estimate of suitability of
this particular method to the problem if there is a possibility that the
method under consideration is more appropriate than one already investigated.
\blankline
If it may be possible to improve on the current favourite method, the function
will call computational agents to analyse the problem for specific features
and calculate the measure from the results these agents return, 
using a variation on the Lucks/Gladwell intensity and compatibility
model if conflict between attributes, as investigated by these computational
agents, may be present.
\blankline
{\bf implementation:} A function which may be one of two distinct kinds. 
The first kind uses the interface to the NAG Library to call a particular 
routine with the required parameters.  Some of the parameters may need to be
calculated from the data provided before the external function call.  
\blankline
The other kind will apply a ``high level'' strategy to try to solve the
problem e.g.~a transformation of an expression from one that is difficult to
solve to one which is easier, or a splitting of the problem into several more
easily solvable parts.  For example, for a solution of the equation above,
since the integral is semi-infinite we might wish to transform the range by,
say, using the mapping {\it y -> 1/x} on the section {\it 1
< x < \inputbitmap{\htbmdir{}/infty.xbm}}) and
adding the result to the unmapped section {\it 0 < x < 1}.
\blankline
\end{scroll}
\downlink{ Measure Functions }{UXANNAMeas}
\downlink{ Computational Agents }{UXANNAAgent}
\downlink{ Examples }{UXANNAEx}
\end{page}

\begin{page}{UXANNAMeas}{Measure Functions}
\begin{scroll}
\blankline
Each measure function will estimate the ability of a particular method to
solve a problem.  It will consult whichever agents are needed to perform
analysis on the problem in order to calculate the measure.  There is a
parameter which would contain the best compatibility
value found so far.  
\blankline
However, the interpretation we give to the results of some tests is not
always clear-cut.  If a set of tests give
conflicting advice as to the appropriateness of a particular method, it
becomes important to decide not only {\it whether} certain properties are
present but also their {\it degree}.  This gives us a basis for estimating the
compatibility of each property.  
\blankline
We have taken for our model the system recommended by Lucks and Gladwell
which uses a system of measurement of compatibility allowing for interaction
and conflict between a number of attributes.  All of these processes may not
be required if the choice is clear-cut e.g. we have an integral to calculate
which has a particular singularity structure for which one particular method
has been specifically constructed.  However, for more difficult cases a
composite picture should be built up to calculate a true measurement. 
\blankline
How the compatibility functions interpret the measurements of various
attributes is up to them and may vary between differing methods.  It is this
area that takes as its basis the {\it judgement} of Numerical Analysis
`experts' whether that be from the documentation (which may be deficient in
certain respects) or from alternative sources.  However, its assessment of
the suitability or otherwise of a particular method is reflected in a single
normalised value facilitating the direct comparison of the suitability of a
number of possible methods.
\blankline
\end{scroll}
\downlink{ Computational Agents }{UXANNAAgent}
\downlink{ Examples }{UXANNAEx}
\end{page}

\begin{page}{UXANNAAgent}{Computational Agents}
\begin{scroll}
\blankline
Computational Agents are those program segments which investigate the
attributes of the input function or functions, such as 
{\bf stiffnessAndStabilityOfODEIF}
(the {\em IF} indicates that it is an {\em Intensity Function} i.e. one that
returns a normalised real number or a set of normalised real numbers).  They
are usually functions or programs written completely in the \Language{}
language and implemented using computer algebra.
\blankline
Some agents will be common to more than one problem domain whereas others
will be specific to a single domain.  They also vary greatly in their
complexity.  It is a fairly simple task to return details about the range of
a function since this information will have been included in the problem
specification.  It is a different order of complexity to return details of
its singularity structure.
\blankline
\xtc{
As an example, here is a call to the computational agent {\bf
singularitiesOf} to obtain the list of singularities of the function 
{\it tan x} which are in the range 
{\it 0..12\inputbitmap{\htbmdir{}/pi.xbm}}:
\blankline
}{
}
\xtc{
}{
\spadpaste{s := singularitiesOf(tan x,[x],0..12*\%pi)$ESCONT \free{lib3} }
}
\blankline
Each of these computational agents which may be called by a number of method
domains retain their output in a dynamic hash-table, so speeding the process
and retaining efficiency.
\end{scroll}
\downlink{ Examples }{UXANNAEx}
\end{page}