diff options
author | dos-reis <gdr@axiomatics.org> | 2007-09-20 14:50:49 +0000 |
---|---|---|
committer | dos-reis <gdr@axiomatics.org> | 2007-09-20 14:50:49 +0000 |
commit | 0850ca5458cb09b2d04cec162558500e9a05cf4a (patch) | |
tree | aa76b50f08c662dab9a49b6ee9f0dc7318139ea1 /src/interp/nag-e04.boot.pamphlet | |
parent | 6f8caa148526efc14239febdc12f91165389a8ea (diff) | |
download | open-axiom-0850ca5458cb09b2d04cec162558500e9a05cf4a.tar.gz |
Revert commits to the wrong tree.
Diffstat (limited to 'src/interp/nag-e04.boot.pamphlet')
-rw-r--r-- | src/interp/nag-e04.boot.pamphlet | 2520 |
1 files changed, 2520 insertions, 0 deletions
diff --git a/src/interp/nag-e04.boot.pamphlet b/src/interp/nag-e04.boot.pamphlet new file mode 100644 index 00000000..7a63d8e1 --- /dev/null +++ b/src/interp/nag-e04.boot.pamphlet @@ -0,0 +1,2520 @@ +\documentclass{article} +\usepackage{axiom} +\begin{document} +\title{\$SPAD/src/interp nag-e04.boot} +\author{The Axiom Team} +\maketitle +\begin{abstract} +\end{abstract} +\eject +\tableofcontents +\eject +\section{License} +<<license>>= +-- Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. +-- All rights reserved. +-- +-- Redistribution and use in source and binary forms, with or without +-- modification, are permitted provided that the following conditions are +-- met: +-- +-- - Redistributions of source code must retain the above copyright +-- notice, this list of conditions and the following disclaimer. +-- +-- - Redistributions in binary form must reproduce the above copyright +-- notice, this list of conditions and the following disclaimer in +-- the documentation and/or other materials provided with the +-- distribution. +-- +-- - Neither the name of The Numerical ALgorithms Group Ltd. nor the +-- names of its contributors may be used to endorse or promote products +-- derived from this software without specific prior written permission. +-- +-- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +-- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +-- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +-- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER +-- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +-- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +-- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +-- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +-- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +-- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +-- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +@ +<<*>>= +<<license>> + +e04dgf() == + htInitPage('"E04DGF - Unconstrained minimum, pre-conditioned conjugate gradient algorithm, function of several variables using 1st derivatives",nil) + htMakePage '( + (domainConditions + (isDomain EM $EmptyMode) + (isDomain PI (PositiveInteger)) + (isDomain F (Float))) + (text . "\windowlink{Manual Page}{manpageXXe04dgf} for this routine ") + (text . "\newline ") + (text . "\lispwindowlink{Browser operation page}{(|oPageFrom| '|e04dgf| '|NagOptimisationPackage|)} for this routine") + (text . "\newline \horizontalline ") + (text . "E04DGF minimizes {\it F(x)}, an unconstrained nonlinear function") + (text . " of {\it n} variables, using a pre-conditioned quasi-Newton ") + (text . "conjugate gradient method. ") + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "Enter the number of variables, {\it n}: ") + (text . "\newline ") + (bcStrings (5 2 n PI)) + (text . "\blankline ") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Change optional parameters:") + (radioButtons optional + ("" " No" no) + ("" " Yes" yes)) + (text . "\blankline ") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Ifail value:") + (radioButtons ifail + ("" " -1, Print error messages" minusOne) + ("" " 1, Suppress error messages" one))) + htMakeDoneButton('"Continue", 'e04dgfSolve) + htShowPage() + + +e04dgfSolve(htPage) == + n := + $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'n) + objValUnwrap htpLabelSpadValue(htPage, 'n) + error := htpButtonValue(htPage,'ifail) + ifail := + error = 'one => '1 + '-1 + param := htpButtonValue(htPage,'optional) + optional := + param = 'no => '0 + '1 + (n = '2 and optional = 0) => e04dgfDefaultSolve(htPage,ifail,n,optional) + funcList := [['bcStrings,[55, '"exp(X[1])*(4*X[1]**2+2*X[2]**2+4*X[1]*X[2]+2*X[2]+1)", 'f, 'EM]]] + middle := ('"\blankline \menuitemstyle{}\tab{2} Enter initial guess ") + middle := STRCONC(middle,'"of the solution vector {\it x(n)}: \newline ") + middle := cons('text,middle) + vecList := + n='2 => + [['bcStrings,[8,-1.0,'x1,'F]],['bcStrings,[8,1.0,'x2,'F]]] + [fb(i) for i in 1..n] where fb(i) == + xnam := INTERN STRCONC ('"x",STRINGIMAGE i) + ['bcStrings,[8, -1.0, xnam, 'F]] + funcList := [:funcList,middle,:vecList] + if optional = 1 then + opt1Text := '"\blankline \menuitemstyle{}\tab{2} " + opt1Text := STRCONC(opt1Text,'"Estimated optimal function values, {\it es}: \newline ") + optList := [['text,:opt1Text],['bcStrings,[20, 1.0, 'es, 'F]]] + opt2Text := '"\blankline \menuitemstyle{}\tab{2} " + opt2Text := STRCONC(opt2Text,'"Function precision, {\it fu}: \newline ") + optList := [:optList,:[['text,:opt2Text],['bcStrings,[20,"0.4373903597E-14",'fu,'F]]]] + opt3Text := '"\blankline \menuitemstyle{}\tab{2} " + opt3Text := STRCONC(opt3Text,'"Iteration limit, {\it it}: \newline ") + optList := [:optList,:[['text,:opt3Text],['bcStrings,[5,50,'it,'PI]]]] + opt4Text := '"\blankline \menuitemstyle{}\tab{2} " + opt4Text := STRCONC(opt4Text,'"Linesearch tolerance, {\it lin}: \newline ") + optList := [:optList,:[['text,:opt4Text],['bcStrings,[20,"0.9",'lin,'F]]]] + opt5Text := '"\blankline \menuitemstyle{}\tab{2} " + opt5Text := STRCONC(opt5Text,'"List parameters:") + optList := [:optList,:[['text,:opt5Text],['radioButtons,'lis,:[[""," Yes",'true],[""," No",'false]]]]] + opt6Text := '"\blankline \menuitemstyle{}\tab{2} " + opt6Text := STRCONC(opt6Text,'"Maximum step length, {\it ma}: \newline ") + optList := [:optList,:[['text,:opt6Text],['bcStrings,[20,"1.0E+20",'ma,'F]]]] + opt7Text := '"\blankline \menuitemstyle{}\tab{2} " + opt7Text := STRCONC(opt7Text,'"Optimality tolerance, {\it op}: \newline ") + optList := [:optList,:[['text,:opt7Text],['bcStrings,[20,"3.26E-12",'op,'F]]]] + opt9Text := '"\blankline \menuitemstyle{}\tab{2} " + opt9Text := STRCONC(opt9Text,'"Print level, {\it pr}: \newline ") + optList := [:optList,:[['text,:opt9Text],['bcStrings,[5,10,'pr,'PI]]]] + opt10Text := '"\blankline \menuitemstyle{}\tab{2} " + opt10Text := STRCONC(opt10Text,'"Start objective check at variable, {\it sta}: \newline ") + optList := [:optList,:[['text,:opt10Text],['bcStrings,[5,1,'sta,'PI]]]] + opt11Text := '"\blankline \menuitemstyle{}\tab{2} " + opt11Text := STRCONC(opt11Text,'"Stop objective check at variable, {\it sto}: \newline ") + optList := [:optList,:[['text,:opt11Text],['bcStrings,[5,2,'sto,'PI]]]] + opt12Text := '"\blankline \menuitemstyle{}\tab{2} " + opt12Text := STRCONC(opt12Text,'"Verify level, {\it ver}: \newline ") + optList := [:optList,:[['text,:opt12Text],['bcStrings,[5,0,'ver,'PI]]]] + +-- (text . "\blankline ") +-- (text . "\newline ") +-- (text . "\menuitemstyle{}\tab{2}") +-- (text . "List parameters:") +-- (radioButtons lis +-- ("" " Yes" true) +-- ("" " No" false)) + else + optList := [] + equationPart := [ + '(domainConditions + (isDomain EM $EmptyMode) + (isDomain F (Float)) + (isDomain I (Integer))), + :funcList, + :optList] + page := htInitPage('"E04DGF - Unconstrained minimum, pre-conditioned conjugate gradient algorithm, function of several variables using 1st derivatives",nil) + htSay '"\menuitemstyle{}\tab{2} " + htSay '"Enter the objective function, {\it F(x)} in terms of X[1]...X[n]: " + htSay '"\newline " + htMakePage equationPart + htMakeDoneButton('"Continue",'e04dgfGen) + htpSetProperty(page,'n,n) + htpSetProperty(page,'optional,optional) + htpSetProperty(page,'ifail,ifail) + htpSetProperty(page,'inputArea, htpInputAreaAlist htPage) + htShowPage() + + +e04dgfDefaultSolve(htPage,ifail,n,optional) == + page := htInitPage('"E04DGF - Unconstrained minimum, pre-conditioned conjugate gradient algorithm, function of several variables using 1st derivatives",nil) + htMakePage '( + (domainConditions + (isDomain EM $EmptyMode) + (isDomain F (Float)) + (isDomain I (Integer))) + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Enter the objective function, {\it F(x)} in terms of X[1]...X[n]: ") + (text . "\newline ") + (bcStrings (55 "exp(X[1])*(4*X[1]**2+2*X[2]**2+4*X[1]*X[2]+2*X[2]+1)" f EM)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Enter initial guess of the solution vector, {\it x(n)}: \newline") + (bcStrings (8 "-1.0" x1 F)) + (bcStrings (8 "1.0" x2 F))) + htMakeDoneButton('"Continue",'e04dgfGen) + htpSetProperty(page,'n,n) + htpSetProperty(page,'optional,optional) + htpSetProperty(page,'ifail,ifail) + htpSetProperty(page,'inputArea, htpInputAreaAlist htPage) + htShowPage() + + +e04dgfGen htPage == + n := htpProperty(htPage,'n) + optional := htpProperty(htPage,'optional) + ifail := htpProperty(htPage,'ifail) + alist := htpInputAreaAlist htPage + y := alist + if (optional = '0) then + es := '"1.0" + ma := '"1.0E+20" + op := '"3.26E-12" + lin := '"0.9" + fu := '"0.4373903597E-14" + it := 50 + pr := 10 + sta := 1 + sto := 2 + ver := 0 + lis := '"true" + for i in 1..n repeat + temp := STRCONC ((first y).1," ") + xlist := [temp,:xlist] + y := rest y + xstring := bcwords2liststring xlist + f := (first y).1 + else + ver := STRCONC((first y).1," ") + y := rest y + sto := STRCONC((first y).1," ") + y := rest y + sta := STRCONC((first y).1," ") + y := rest y + pr := STRCONC((first y).1," ") + y := rest y + op := STRCONC((first y).1," ") + y := rest y + ma := STRCONC((first y).1," ") + y := rest y + nolist := (first y).1 + lis := + nolist = '" t" => '"false" + '"true" + y := rest y + dummy := first y + y := rest y + lin := STRCONC((first y).1," ") + y := rest y + it := STRCONC((first y).1," ") + y := rest y + fu := STRCONC((first y).1," ") + y := rest y + es := STRCONC((first y).1," ") + y := rest y + for i in 1..n repeat + temp := STRCONC ((first y).1," ") + xlist := [temp,:xlist] + y := rest y + xstring := bcwords2liststring xlist + f := (first y).1 + prefix := STRCONC("e04dgf(",STRINGIMAGE n,", ",es,", ",fu,",") + prefix := STRCONC(prefix,STRINGIMAGE it,", ",lin,", ",lis,", ",ma,", ",op) + prefix := STRCONC(prefix,",",STRINGIMAGE pr,", ",STRINGIMAGE sta,", ") + middle := STRCONC(STRINGIMAGE sto,", ",STRINGIMAGE ver,", [",xstring,"] ,") + middle := STRCONC(middle,STRINGIMAGE ifail," ,") + linkGen STRCONC (prefix,middle,"((",f,")::Expression(Float))::ASP49(OBJFUN))") + +e04fdf() == + htInitPage('"E04FDF - Unconstrained minimum of a sum of squares, combined Gauss-Newton and modified Newton algorithm using function values only",nil) + htMakePage '( + (domainConditions + (isDomain PI (PositiveInteger))) + (text . "\windowlink{Manual Page}{manpageXXe04fdf} for this routine ") + (text . "\newline ") + (text . "\lispwindowlink{Browser operation page}{(|oPageFrom| '|e04fdf| '|NagOptimisationPackage|)} for this routine") + (text . "\newline \horizontalline ") + (text . "\newline ") + (text . "E04FDF is an easy to use routine for finding an unconstrained ") + (text . "minimum of a sum of squares of {\it m} nonlinear functions in ") + (text . "{\it n} variables ({\it m} \htbitmap{great=} {\it n}), i.e., it ") + (text . "is applicable to problems of the form ") + (text . "\center{\htbitmap{e04fdf}} where \center{\htbitmap{e04fdf1}}") + (text . "No derivatives are required. The routine is intended for ") + (text . "functions which have continous first and second derivatives, ") + (text . "though it will usually work if the derivatives have occasional ") + (text . "discontinuities. ") + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Number of functions {\it \htbitmap{fi}(x)}, {\it m}:") + (text . "\newline\tab{2} ") + (bcStrings (5 15 m PI)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Number of variables \htbitmap{xj}, {\it n}:") + (text . "\newline\tab{2} ") + (bcStrings (5 3 n PI)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Dimension of {\it iw}, {\it liw}:") + (text . "\newline\tab{2} ") + (bcStrings (5 1 liw F)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Dimension of {\it w}, {\it lw}:") + (text . "\newline\tab{2} ") + (bcStrings (5 171 lw F)) + (text . "\blankline ") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Ifail value:") + (radioButtons ifail + ("" " -1, Print error messages" minusOne) + ("" " 1, Suppress error messages" one))) + htMakeDoneButton('"Continue", 'e04fdfSolve) + htShowPage() + +e04fdfSolve htPage == + m := + $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'm) + objValUnwrap htpLabelSpadValue(htPage, 'm) + n := + $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'n) + objValUnwrap htpLabelSpadValue(htPage, 'n) + liw := + $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'liw) + objValUnwrap htpLabelSpadValue(htPage, 'liw) + lw := + $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'lw) + objValUnwrap htpLabelSpadValue(htPage, 'lw) + error := htpButtonValue(htPage,'ifail) + ifail := + error = 'one => '1 + '-1 + (m = '15 and n = '3) => e04fdfDefaultSolve(htPage,liw,lw,ifail) + funcList := + "append"/[fa(i) for i in 1..m] where fa(i) == + prefix := ('"\newline {\em Function ") + prefix := STRCONC(prefix,STRINGIMAGE i,'":} \space{1}") + funct := ('"XC[1] + 1") + nam := INTERN STRCONC ('"n",STRINGIMAGE i) + [['text,:prefix],['bcStrings,[42, funct, nam, 'EM]]] + middle := ('"\blankline \menuitemstyle{}\tab{2} Enter initial guess ") + middle := STRCONC(middle,'"of the solution vector {\it x(n)}: \newline ") + middle := cons('text,middle) + vecList := + [fb(i) for i in 1..n] where fb(i) == + xnam := INTERN STRCONC ('"x",STRINGIMAGE i) + ['bcStrings,[4, '"0.0", xnam, 'F]] + funcList := [:funcList,middle,:vecList] + equationPart := [ + '(domainConditions + (isDomain EM $EmptyMode) + (isDomain F (Float)) + (isDomain I (Integer))), + :funcList] + page:= htInitPage('"E04FDF - Unconstrained minimum of a sum of squares, combined Gauss-Newton and modified Newton algorithm using function values only",nil) + htSay '"\menuitemstyle{}\tab{2} " + htSay '"Enter the functions \htbitmap{fi} below in terms XC[1]...XC[n]: " + htSay '"\newline " + htMakePage equationPart + htMakeDoneButton('"Continue",'e04fdfGen) + htpSetProperty(page,'n,n) + htpSetProperty(page,'m,m) + htpSetProperty(page,'liw,liw) + htpSetProperty(page,'lw,lw) + htpSetProperty(page,'ifail,ifail) + htpSetProperty(page,'inputArea, htpInputAreaAlist htPage) + htShowPage() + + +e04fdfDefaultSolve (htPage,liw,lw,ifail) == + n := '3 + m := '15 + page:= htInitPage('"E04FDF - Unconstrained minimum of a sum of squares, combined Gauss-Newton and modified Newton algorithm using function values only",nil) + htMakePage '( + (domainConditions + (isDomain EM $EmptyMode) + (isDomain F (Float)) + (isDomain I (Integer))) + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Enter the functions \htbitmap{fi} below ") + (text . "in terms of XC[1]...XC[n]: ") + (text . "\newline ") + (text . "\newline {\em Function 1:} \space{1}") + (bcStrings (42 "(XC[3]+15*XC[2])**(-1)+XC[1]-0.14" n1 EM)) + (text . "\newline {\em Function 2:} \space{1}") + (bcStrings (42 "2*(2*XC[3]+14*XC[2])**(-1)+XC[1]-0.18" n2 EM)) + (text . "\newline {\em Function 3:} \space{1}") + (bcStrings (42 "3*(3*XC[3]+13*XC[2])**(-1)+XC[1]-0.22" n3 EM)) + (text . "\newline {\em Function 4:} \space{1}") + (bcStrings (42 "4*(4*XC[3]+12*XC[2])**(-1)+XC[1]-0.25" n4 EM)) + (text . "\newline {\em Function 5:} \space{1}") + (bcStrings (42 "5*(5*XC[3]+11*XC[2])**(-1)+XC[1]-0.29" n5 EM)) + (text . "\newline {\em Function 6:} \space{1}") + (bcStrings (42 "6*(6*XC[3]+10*XC[2])**(-1)+XC[1]-0.32" n6 EM)) + (text . "\newline {\em Function 7:} \space{1}") + (bcStrings (42 "7*(7*XC[3]+9*XC[2])**(-1)+XC[1]-0.35" n7 EM)) + (text . "\newline {\em Function 8:} \space{1}") + (bcStrings (42 "8*(8*XC[3]+8*XC[2])**(-1)+XC[1]-0.39" n8 EM)) + (text . "\newline {\em Function 9:} \space{1}") + (bcStrings (42 "9*(7*XC[3]+7*XC[2])**(-1)+XC[1]-0.37" n9 EM)) + (text . "\newline {\em Function 10:} \space{1}") + (bcStrings (42 "10*(6*XC[3]+6*XC[2])**(-1)+XC[1]-0.58" n10 EM)) + (text . "\newline {\em Function 11:} \space{1}") + (bcStrings (42 "11*(5*XC[3]+5*XC[2])**(-1)+XC[1]-0.73" n11 EM)) + (text . "\newline {\em Function 12:} \space{1}") + (bcStrings (42 "12*(4*XC[3]+4*XC[2])**(-1)+XC[1]-0.96" n12 EM)) + (text . "\newline {\em Function 13:} \space{1}") + (bcStrings (42 "13*(3*XC[3]+3*XC[2])**(-1)+XC[1]-1.34" n13 EM)) + (text . "\newline {\em Function 14:} \space{1}") + (bcStrings (42 "14*(2*XC[3]+2*XC[2])**(-1)+XC[1]-2.1" n14 EM)) + (text . "\newline {\em Function 15:} \space{1}") + (bcStrings (42 "15*(XC[3]+XC[2])**(-1)+XC[1]-4.39" n15 EM)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Enter initial guess of the solution vector {\it x(n)}: \newline ") + (bcStrings (4 "0.5" x1 F)) + (bcStrings (4 "1.0" x2 F)) + (bcStrings (4 "1.5" x3 F))) + htMakeDoneButton('"Continue",'e04fdfGen) + htpSetProperty(page,'n,n) + htpSetProperty(page,'m,m) + htpSetProperty(page,'ifail,ifail) + htpSetProperty(page,'liw,liw) + htpSetProperty(page,'lw,lw) + htpSetProperty(page,'inputArea, htpInputAreaAlist htPage) + htShowPage() + +e04fdfGen htPage == + n := htpProperty(htPage, 'n) + m := htpProperty(htPage, 'm) + liw := htpProperty(htPage,'liw) + lw := htpProperty(htPage,'lw) + ifail := htpProperty(htPage,'ifail) + alist := htpInputAreaAlist htPage + y := alist + for i in 1..n repeat + temp := STRCONC ((first y).1," ") + xlist := [temp,:xlist] + y := rest y + xstring := bcwords2liststring xlist + for i in 1..m repeat + temp := STRCONC ((first y).1," ") + ulist := [temp,:ulist] + y := rest y + ustring := bcwords2liststring ulist + prefix := STRCONC("e04fdf(",STRINGIMAGE m,",",STRINGIMAGE n,", ") + prefix := STRCONC(prefix,STRINGIMAGE liw,",",STRINGIMAGE lw,", [") + middle := STRCONC(xstring,"],",STRINGIMAGE ifail,",") + linkGen STRCONC(prefix,middle,"(",ustring,"::Vector Expression(Float))::ASP50(LSFUN1))") + + +e04gcf() == + htInitPage('"E04GCF - Unconstrained minimum of a sum of squares, combined Gauss-Newton and modified Newton algorithm using 1st derivatives",nil) + htMakePage '( + (domainConditions + (isDomain PI (PositiveInteger))) + (text . "\windowlink{Manual Page}{manpageXXe04gcf} for this routine ") + (text . "\newline ") + (text . "\lispwindowlink{Browser operation page}{(|oPageFrom| '|e04gcf| '|NagOptimisationPackage|)} for this routine") + (text . "\newline \horizontalline ") + (text . "\newline ") + (text . "E04GCF is an easy to use quasi-Newton routine for finding an unconstrained ") + (text . "minimum of a sum of squares of {\it m} nonlinear functions in ") + (text . "{\it n} variables ({\it m} \htbitmap{great=} {\it n}), i.e., it ") + (text . "is applicable to problems of the form ") + (text . "\center{\htbitmap{e04fdf}} where \center{\htbitmap{e04fdf1}}") + (text . "The routine is intended for ") + (text . "functions which have continous first and second derivatives, ") + (text . "though it will usually work if the derivatives have occasional ") + (text . "discontinuities. ") + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Number of functions {\it \htbitmap{fi}(x)}, {\it m}:") + (text . "\newline\tab{2} ") + (bcStrings (5 15 m PI)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Number of variables \htbitmap{xj}, {\it n}:") + (text . "\newline\tab{2} ") + (bcStrings (5 3 n PI)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Dimension of {\it iw}, {\it liw}:") + (text . "\newline\tab{2} ") + (bcStrings (5 1 liw F)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Dimension of {\it w}, {\it lw}:") + (text . "\newline\tab{2} ") + (bcStrings (5 177 lw F)) + (text . "\blankline ") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Ifail value:") + (radioButtons ifail + ("" " -1, Print error messages" minusOne) + ("" " 1, Suppress error messages" one))) + htMakeDoneButton('"Continue", 'e04gcfSolve) + htShowPage() + +e04gcfSolve htPage == + m := + $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'm) + objValUnwrap htpLabelSpadValue(htPage, 'm) + n := + $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'n) + objValUnwrap htpLabelSpadValue(htPage, 'n) + liw := + $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'liw) + objValUnwrap htpLabelSpadValue(htPage, 'liw) + lw := + $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'lw) + objValUnwrap htpLabelSpadValue(htPage, 'lw) + error := htpButtonValue(htPage,'ifail) + ifail := + error = 'one => '1 + '-1 + (m = '15 and n = '3) => e04gcfDefaultSolve(htPage,liw,lw,ifail) + funcList := + "append"/[fa(i) for i in 1..m] where fa(i) == + prefix := ('"\newline {\em Function ") + prefix := STRCONC(prefix,STRINGIMAGE i,'":} \space{1}") + funct := ('"XC[1] + 1") + nam := INTERN STRCONC ('"n",STRINGIMAGE i) + [['text,:prefix],['bcStrings,[42, funct, nam, 'EM]]] + middle := ('"\blankline \menuitemstyle{}\tab{2} Enter initial guess ") + middle := STRCONC(middle,'"of the solution vector {\it x(n)}: \newline ") + middle := cons('text,middle) + vecList := + [fb(i) for i in 1..n] where fb(i) == + xnam := INTERN STRCONC ('"x",STRINGIMAGE i) + ['bcStrings,[4, '"0.0", xnam, 'F]] + funcList := [:funcList,middle,:vecList] + equationPart := [ + '(domainConditions + (isDomain EM $EmptyMode) + (isDomain F (Float)) + (isDomain I (Integer))), + :funcList] + page:= htInitPage('"E04GCF - Unconstrained minimum of a sum of squares, combined Gauss-Newton and modified Newton algorithm using 1st derivatives",nil) + htSay '"\menuitemstyle{}\tab{2} " + htSay '"Enter the functions \htbitmap{fi} below in terms of XC[1]...XC[n]: " + htSay '"\newline " + htMakePage equationPart + htMakeDoneButton('"Continue",'e04gcfGen) + htpSetProperty(page,'n,n) + htpSetProperty(page,'m,m) + htpSetProperty(page,'liw,liw) + htpSetProperty(page,'lw,lw) + htpSetProperty(page,'ifail,ifail) + htpSetProperty(page,'inputArea, htpInputAreaAlist htPage) + htShowPage() + + +e04gcfDefaultSolve (htPage,liw,lw,ifail) == + n := '3 + m := '15 + page:= htInitPage('"E04GCF - Unconstrained minimum of a sum of squares, combined Gauss-Newton and modified Newton algorithm using 1st derivatives",nil) + htMakePage '( + (domainConditions + (isDomain EM $EmptyMode) + (isDomain F (Float)) + (isDomain I (Integer))) + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Enter the functions \htbitmap{fi} below ") + (text . "in terms of XC[1]...XC[n]: ") + (text . "\newline ") + (text . "\newline {\em Function 1:} \space{1}") + (bcStrings (42 "(XC[3]+15*XC[2])**(-1)+XC[1]-0.14" n1 EM)) + (text . "\newline {\em Function 2:} \space{1}") + (bcStrings (42 "2*(2*XC[3]+14*XC[2])**(-1)+XC[1]-0.18" n2 EM)) + (text . "\newline {\em Function 3:} \space{1}") + (bcStrings (42 "3*(3*XC[3]+13*XC[2])**(-1)+XC[1]-0.22" n3 EM)) + (text . "\newline {\em Function 4:} \space{1}") + (bcStrings (42 "4*(4*XC[3]+12*XC[2])**(-1)+XC[1]-0.25" n4 EM)) + (text . "\newline {\em Function 5:} \space{1}") + (bcStrings (42 "5*(5*XC[3]+11*XC[2])**(-1)+XC[1]-0.29" n5 EM)) + (text . "\newline {\em Function 6:} \space{1}") + (bcStrings (42 "6*(6*XC[3]+10*XC[2])**(-1)+XC[1]-0.32" n6 EM)) + (text . "\newline {\em Function 7:} \space{1}") + (bcStrings (42 "7*(7*XC[3]+9*XC[2])**(-1)+XC[1]-0.35" n7 EM)) + (text . "\newline {\em Function 8:} \space{1}") + (bcStrings (42 "8*(8*XC[3]+8*XC[2])**(-1)+XC[1]-0.39" n8 EM)) + (text . "\newline {\em Function 9:} \space{1}") + (bcStrings (42 "9*(7*XC[3]+7*XC[2])**(-1)+XC[1]-0.37" n9 EM)) + (text . "\newline {\em Function 10:} \space{1}") + (bcStrings (42 "10*(6*XC[3]+6*XC[2])**(-1)+XC[1]-0.58" n10 EM)) + (text . "\newline {\em Function 11:} \space{1}") + (bcStrings (42 "11*(5*XC[3]+5*XC[2])**(-1)+XC[1]-0.73" n11 EM)) + (text . "\newline {\em Function 12:} \space{1}") + (bcStrings (42 "12*(4*XC[3]+4*XC[2])**(-1)+XC[1]-0.96" n12 EM)) + (text . "\newline {\em Function 13:} \space{1}") + (bcStrings (42 "13*(3*XC[3]+3*XC[2])**(-1)+XC[1]-1.34" n13 EM)) + (text . "\newline {\em Function 14:} \space{1}") + (bcStrings (42 "14*(2*XC[3]+2*XC[2])**(-1)+XC[1]-2.1" n14 EM)) + (text . "\newline {\em Function 15:} \space{1}") + (bcStrings (42 "15*(XC[3]+XC[2])**(-1)+XC[1]-4.39" n15 EM)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Enter initial guess of the solution vector {\it x(n)}: \newline ") + (bcStrings (4 "0.5" x1 F)) + (bcStrings (4 "1.0" x2 F)) + (bcStrings (4 "1.5" x3 F))) + htMakeDoneButton('"Continue",'e04gcfGen) + htpSetProperty(page,'n,n) + htpSetProperty(page,'m,m) + htpSetProperty(page,'ifail,ifail) + htpSetProperty(page,'liw,liw) + htpSetProperty(page,'lw,lw) + htpSetProperty(page,'inputArea, htpInputAreaAlist htPage) + htShowPage() + +e04gcfGen htPage == + n := htpProperty(htPage, 'n) + m := htpProperty(htPage, 'm) + liw := htpProperty(htPage,'liw) + lw := htpProperty(htPage,'lw) + ifail := htpProperty(htPage,'ifail) + alist := htpInputAreaAlist htPage + y := alist + for i in 1..n repeat + temp := STRCONC ((first y).1," ") + xlist := [temp,:xlist] + y := rest y + xstring := bcwords2liststring xlist + for i in 1..m repeat + temp := STRCONC ((first y).1," ") + ulist := [temp,:ulist] + y := rest y + ustring := bcwords2liststring ulist + prefix := STRCONC("e04gcf(",STRINGIMAGE m,",",STRINGIMAGE n,", ") + prefix := STRCONC(prefix,STRINGIMAGE liw,",",STRINGIMAGE lw,", [") + middle := STRCONC(xstring,"],",STRINGIMAGE ifail,",") + linkGen STRCONC(prefix,middle,"(",ustring,"::Vector Expression(Float))::ASP19(LSFUN2))") + + +e04jaf() == + htInitPage('"E04JAF - Minimum, function of several variables, quasi-Newton algorithm, simple bounds, using function values only",nil) + htMakePage '( + (domainConditions + (isDomain PI (PositiveInteger))) + (text . "\windowlink{Manual Page}{manpageXXe04jaf} for this routine ") + (text . "\newline ") + (text . "\lispwindowlink{Browser operation page}{(|oPageFrom| '|e04jaf| '|NagOptimisationPackage|)} for this routine") + (text . "\newline \horizontalline ") + (text . "\newline ") + (text . "E04JAF is an easy to use quasi-Newton routine for finding a ") + (text . "minimum of a nonlinear function {\it F(x)} of {\it n} variables ") + (text . "\center{\htbitmap{e04fdf1}} possibly subject to fixed upper ") + (text . "and lower bounds on the variables, i.e., it is applicable to ") + (text . "problems of the form \blankline Minimize {\it F(x)}, subject to ") + (text . "\htbitmap{lj} \htbitmap{great=} \htbitmap{xj} \htbitmap{great=} ") + (text . "\htbitmap{uj} for {\it j} = 1,2,...,n. \blankline ") + (text . "Function values only are required. The routine is intended for ") + (text . "functions which have continuous first and second derivatives, ") + (text . "though it will usually work if the derivatives have occasional ") + (text . "discontinuities. ") + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Number of variables \htbitmap{xj}, {\it n}:") + (text . "\newline\tab{2} ") + (bcStrings (5 4 n PI)) + (text . "\blankline ") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Specify the use of bounds, {\it ibound}:") + (radioButtons ibound + (" 0" " All \htbitmap{lj} and \htbitmap{uj} are given individually" iZero) + (" 1" " No bounds on any of the \htbitmap{xj}" iOne) + (" 2" " All bounds are of the form 0 \htbitmap{great=} \htbitmap{xj}" iTwo) + (" 3" " All \htbitmap{lj} are equal and all \htbitmap{uj} are equal" iThree)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Dimension of {\it iw}, {\it liw}:") + (text . "\newline\tab{2} ") + (bcStrings (5 6 liw F)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Dimension of {\it w}, {\it lw}:") + (text . "\newline\tab{2} ") + (bcStrings (5 54 lw F)) + (text . "\blankline ") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Ifail value:") + (radioButtons ifail + ("" " -1, Print error messages" minusOne) + ("" " 1, Suppress error messages" one))) + htMakeDoneButton('"Continue", 'e04jafSolve) + htShowPage() + +e04jafSolve htPage == + n := + $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'n) + objValUnwrap htpLabelSpadValue(htPage, 'n) + boun := htpButtonValue(htPage,'ibound) + ibound := + boun = 'iZero => '0 + boun = 'iOne => '1 + boun = 'iTwo => '2 + '3 + liw := + $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'liw) + objValUnwrap htpLabelSpadValue(htPage, 'liw) + lw := + $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'lw) + objValUnwrap htpLabelSpadValue(htPage, 'lw) + error := htpButtonValue(htPage,'ifail) + ifail := + error = 'one => '1 + '-1 + n = '4 => e04jafDefaultSolve(htPage,ibound,liw,lw,ifail) + funcList := [['bcStrings,[50, '"XC[1]", 'f, 'EM]]] + middle := ('"\blankline \menuitemstyle{}\tab{2} Enter lower boundary conditions ") + middle := STRCONC(middle,'"{\it bl(n)}: \newline ") + blList := + "append"/[fa(i) for i in 1..n] where fa(i) == + xnam := INTERN STRCONC ('"bl",STRINGIMAGE i) + [['bcStrings,[8, '"0.0", xnam, 'F]]] + blList := [['text,:middle],:blList] + middle := ('"\blankline \menuitemstyle{}\tab{2} Enter upper boundary ") + middle := STRCONC(middle,'"conditions {\it bu(n)}: \newline ") + buList := + "append"/[fb(i) for i in 1..n] where fb(i) == + xnam := INTERN STRCONC ('"bu",STRINGIMAGE i) + [['bcStrings,[8, '"0.0", xnam, 'F]]] + buList := [['text,:middle],:buList] + middle := ('"\blankline \menuitemstyle{}\tab{2} Enter initial guess ") + middle := STRCONC(middle,'"of the solution vector {\it x(n)}: \newline ") + xList := + "append"/[fc(i) for i in 1..n] where fc(i) == + xnam := INTERN STRCONC ('"x",STRINGIMAGE i) + [['bcStrings,[8, '"0.0", xnam, 'F]]] + xList := [['text,:middle],:xList] + equationPart := [ + '(domainConditions + (isDomain EM $EmptyMode) + (isDomain F (Float)) + (isDomain I (Integer))), + :funcList,:blList,:buList,:xList] + page:= htInitPage('"E04JAF - Minimum, function of several variables, quasi-Newton algorithm, simple bounds, using function values only",nil) + htSay '"\menuitemstyle{}\tab{2} " + htSay '"Enter the function {\it F(x)} below in terms of XC[1]...XC[n]: " + htSay '"\newline " + htMakePage equationPart + htMakeDoneButton('"Continue",'e04jafGen) + htpSetProperty(page,'n,n) + htpSetProperty(page,'ibound,ibound) + htpSetProperty(page,'liw,liw) + htpSetProperty(page,'lw,lw) + htpSetProperty(page,'ifail,ifail) + htpSetProperty(page,'inputArea, htpInputAreaAlist htPage) + htShowPage() + + +e04jafDefaultSolve (htPage,ibound,liw,lw,ifail) == + n := '4 + page:= htInitPage('"E04JAF - Minimum, function of several variables, quasi-Newton algorithm, simple bounds, using function values only",nil) + htMakePage '( + (domainConditions + (isDomain EM $EmptyMode) + (isDomain F (Float)) + (isDomain I (Integer))) + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Enter the function {\it F(x)} below in terms of XC[1]...XC[n]: ") + (text . "\newline ") + (bcStrings (60 "(XC[1]+10*XC[2])**2+5*(XC[3]-XC[4])**2+(XC[2]-2*XC[3])**4+10*(XC[1]-XC[4])**4" n1 EM)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Enter lower boundary conditions {\it bl(n)}: \newline ") + (bcStrings (8 "1" bl1 F)) + (bcStrings (8 "-2" bl2 F)) + (bcStrings (8 "-1.0e-6" bl3 F)) + (bcStrings (8 "1" bl4 F)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Enter upper boundary conditions {\it bu(n)}: \newline ") + (bcStrings (8 "3" bu1 F)) + (bcStrings (8 "0" bu2 F)) + (bcStrings (8 "1.0e6" bu3 F)) + (bcStrings (8 "3" bu4 F)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Enter initial guess of the solution vector {\it x(n)}: \newline ") + (bcStrings (8 "3" x1 F)) + (bcStrings (8 "-1" x2 F)) + (bcStrings (8 "0" x3 F)) + (bcStrings (8 "1" x4 F))) + htMakeDoneButton('"Continue",'e04jafGen) + htpSetProperty(page,'n,n) + htpSetProperty(page,'ibound,ibound) + htpSetProperty(page,'liw,liw) + htpSetProperty(page,'lw,lw) + htpSetProperty(page,'ifail,ifail) + htpSetProperty(page,'inputArea, htpInputAreaAlist htPage) + htShowPage() + +e04jafGen htPage == + n := htpProperty(htPage, 'n) + ibound := htpProperty(htPage, 'ibound) + liw := htpProperty(htPage,'liw) + lw := htpProperty(htPage,'lw) + ifail := htpProperty(htPage,'ifail) + alist := htpInputAreaAlist htPage + y := alist + for i in 1..n repeat + temp := STRCONC ((first y).1," ") + xlist := [temp,:xlist] + y := rest y + xstring := bcwords2liststring xlist + for i in 1..n repeat + temp := STRCONC ((first y).1," ") + bulist := [temp,:bulist] + y := rest y + bustring := bcwords2liststring bulist + for i in 1..n repeat + temp := STRCONC ((first y).1," ") + bllist := [temp,:bllist] + y := rest y + blstring := bcwords2liststring bllist + f := (first y).1 + prefix := STRCONC("e04jaf(",STRINGIMAGE n,",",STRINGIMAGE ibound,", ") + prefix := STRCONC(prefix,STRINGIMAGE liw,",",STRINGIMAGE lw,", [") + prefix := STRCONC(prefix,blstring,"],[",bustring,"],[") + middle := STRCONC(xstring,"],",STRINGIMAGE ifail,",(") + linkGen STRCONC(prefix,middle,f,"::Expression(Float))::ASP24(FUNCT1))") + + +e04mbf() == + htInitPage('"E04MBF - Linear programming problem",nil) + htMakePage '( + (domainConditions + (isDomain EM $EmptyMode) + (isDomain PI (PositiveInteger)) + (isDomain F (Float))) + (text . "\windowlink{Manual Page}{manpageXXe04mbf} for this routine ") + (text . "\newline ") + (text . "\lispwindowlink{Browser operation page}{(|oPageFrom| '|e04mbf| '|NagOptimisationPackage|)} for this routine") + (text . "\newline \horizontalline ") + (text . "\newline ") + (text . "E04MBF is an easy to use routine to solve linear programming ") + (text . "(LP) problems of the form \center{\htbitmap{e04mbf}} \newline ") + (text . "where {\it c} is an {\it n} element vector and {\it A} is an ") + (text . "{\it m} by {\it n} matrix, i.e., there are {\it n} variables ") + (text . "and {\it m} linear constraints. {\it m} may be zero in which ") + (text . "case the LP problem is subject only to bounds on the variables. ") + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Upper bound on number of iterations, {\it itmax}:") + (text . "\newline\tab{2} ") + (bcStrings (6 20 itmax PI)) + (text . "\blankline ") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Type of output messages required, {\it msglvl}: ") + (radioButtons msglvl + (" = 1 " " Printing occurs at the solution " mOne) + (" = 0 " " Printing only if an input parameter is incorrect " mZero) + (" < 0 " " No printing " mMinus)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Number of variables, {\it n}: ") + (text . "\newline\tab{2} ") + (bcStrings (6 7 n PI)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Number of general linear constraints, {\it nclin}: ") + (text . "\newline\tab{2} ") + (bcStrings (6 7 nclin PI)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "First dimension of array {\it a}, {\it nrowa}:") + (text . "\newline\tab{2} ") + (bcStrings (6 7 nrowa PI)) + (text . "\blankline ") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Specifies whether or not a linear objective function is present, {\it linobj}:") + (radioButtons linobj + ("" " true - full LP problem is solved" true) + ("" " false - only a feasible problem is found" false)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "Dimension of {\it iwork}, {\it liwork}:") + (text . "\newline\tab{2} ") + (bcStrings (5 14 liwork F)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Dimension of {\it work}, {\it lwork}:") + (text . "\newline\tab{2} ") + (bcStrings (5 182 lwork F)) + (text . "\blankline ") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Ifail value:") + (radioButtons ifail + ("" " -1, Print error messages" minusOne) + ("" " 1, Suppress error messages" one))) + htMakeDoneButton('"Continue", 'e04mbfSolve) + htShowPage() + +e04mbfSolve htPage == + itmax := + $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'itmax) + objValUnwrap htpLabelSpadValue(htPage, 'itmax) + msg := htpButtonValue(htPage,'msglvl) + msglvl := + msg = 'mMinus => '-1 + msg = 'mZero => '0 + '1 + n := + $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'n) + objValUnwrap htpLabelSpadValue(htPage, 'n) + nclin := + $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'nclin) + objValUnwrap htpLabelSpadValue(htPage, 'nclin) + nrowa := + $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'nrowa) + objValUnwrap htpLabelSpadValue(htPage, 'nrowa) + lin := htpButtonValue(htPage,'linobj) + linobj := + lin = 'true => '"true" + '"false" + liwork := + $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'liwork) + objValUnwrap htpLabelSpadValue(htPage, 'liwork) + lwork := + $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'lwork) + objValUnwrap htpLabelSpadValue(htPage, 'lwork) + error := htpButtonValue(htPage,'ifail) + ifail := + error = 'one => '1 + '-1 + ((nrowa = '7 and n = 7) and nclin = 7) => e04mbfDefaultSolve(htPage,itmax,msglvl,linobj,liwork,lwork,ifail) + aList := + "append"/[fa(i,n) for i in 1..nrowa] where fa(i,n) == + labelList := + "append"/[fb(i,j) for j in 1..n] where fb(i,j) == + anam := INTERN STRCONC ('"a",STRINGIMAGE i,STRINGIMAGE j) + [['bcStrings,[8, 0, anam, 'F]]] + prefix := ('"\newline ") + labelList := [['text,:prefix],:labelList] + middle := ('"\blankline \menuitemstyle{}\tab{2} Enter lower boundary ") + middle := STRCONC(middle,'"conditions {\it bl(n + nclin)}: \newline ") + blList := + "append"/[fc(i) for i in 1..(n+nclin)] where fc(i) == + blnam := INTERN STRCONC ('"bl",STRINGIMAGE i) + [['bcStrings,[8, '"0.0", blnam, 'F]]] + blList := [['text,:middle],:blList] + middle := ('"\blankline \menuitemstyle{}\tab{2} Enter upper boundary ") + middle := STRCONC(middle,'"conditions {\it bu(n+nclin)}: \newline ") + buList := + "append"/[fd(i) for i in 1..(n+nclin)] where fd(i) == + bunam := INTERN STRCONC ('"bu",STRINGIMAGE i) + [['bcStrings,[8, '"0.0", bunam, 'F]]] + buList := [['text,:middle],:buList] + middle := ('"\blankline \menuitemstyle{}\tab{2} Enter coefficients of the ") + middle := STRCONC(middle,'"objective function {\it cvec(n)}: \newline ") + cList := + "append"/[fe(i) for i in 1..n] where fe(i) == + cnam := INTERN STRCONC ('"c",STRINGIMAGE i) + [['bcStrings,[8, '"0.0", cnam, 'F]]] + cList := [['text,:middle],:cList] + middle := ('"\blankline \menuitemstyle{}\tab{2} Enter initial guess ") + middle := STRCONC(middle,'"of the solution vector {\it x(n)}: \newline ") + xList := + "append"/[fg(i) for i in 1..n] where fg(i) == + xnam := INTERN STRCONC ('"x",STRINGIMAGE i) + [['bcStrings,[8, '"0.0", xnam, 'F]]] + xList := [['text,:middle],:xList] + equationPart := [ + '(domainConditions + (isDomain EM $EmptyMode) + (isDomain F (Float)) + (isDomain I (Integer))), + :aList,:blList,:buList,:cList,:xList] + page:= htInitPage('"E04MBF - Linear programming problem",nil) + htSay '"\menuitemstyle{}\tab{2} " + htSay '"Enter the elements of the array {\it a(nrowa,n)}: \newline " + htMakePage equationPart + htMakeDoneButton('"Continue",'e04mbfGen) + htpSetProperty(page,'n,n) + htpSetProperty(page,'nclin,nclin) + htpSetProperty(page,'nrowa,nrowa) + htpSetProperty(page,'itmax,itmax) + htpSetProperty(page,'msglvl,msglvl) + htpSetProperty(page,'linobj,linobj) + htpSetProperty(page,'liwork,liwork) + htpSetProperty(page,'lwork,lwork) + htpSetProperty(page,'ifail,ifail) + htpSetProperty(page,'inputArea, htpInputAreaAlist htPage) + htShowPage() + +e04mbfDefaultSolve(htPage,itmax,msglvl,linobj,liwork,lwork,ifail) == + n := '7 + nclin := '7 + nrowa := '7 + page:= htInitPage('"E04MBF - Linear programming problem",nil) + htMakePage '( + (domainConditions + (isDomain EM $EmptyMode) + (isDomain F (Float)) + (isDomain I (Integer))) + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Enter the elements of array {\it a(nrowa,n)}: \newline ") + (bcStrings (5 "1" a11 F)) + (bcStrings (5 "1" a12 F)) + (bcStrings (5 "1" a13 F)) + (bcStrings (5 "1" a14 F)) + (bcStrings (5 "1" a15 F)) + (bcStrings (5 "1" a16 F)) + (bcStrings (5 "1" a17 F)) + (text . "\newline ") + (bcStrings (5 "0.15" a21 F)) + (bcStrings (5 "0.04" a22 F)) + (bcStrings (5 "0.02" a23 F)) + (bcStrings (5 "0.04" a24 F)) + (bcStrings (5 "0.02" a25 F)) + (bcStrings (5 "0.01" a26 F)) + (bcStrings (5 "0.03" a27 F)) + (text . "\newline ") + (bcStrings (5 "0.03" a31 F)) + (bcStrings (5 "0.05" a32 F)) + (bcStrings (5 "0.08" a33 F)) + (bcStrings (5 "0.02" a34 F)) + (bcStrings (5 "0.06" a35 F)) + (bcStrings (5 "0.01" a36 F)) + (bcStrings (5 "0" a37 F)) + (text . "\newline ") + (bcStrings (5 "0.02" a41 F)) + (bcStrings (5 "0.04" a42 F)) + (bcStrings (5 "0.01" a43 F)) + (bcStrings (5 "0.02" a44 F)) + (bcStrings (5 "0.02" a45 F)) + (bcStrings (5 "0" a46 F)) + (bcStrings (5 "0" a47 F)) + (text . "\newline ") + (bcStrings (5 "0.02" a51 F)) + (bcStrings (5 "0.03" a52 F)) + (bcStrings (5 "0" a53 F)) + (bcStrings (5 "0" a54 F)) + (bcStrings (5 "0.01" a55 F)) + (bcStrings (5 "0" a56 F)) + (bcStrings (5 "0" a57 F)) + (text . "\newline ") + (bcStrings (5 "0.7" a61 F)) + (bcStrings (5 "0.75" a62 F)) + (bcStrings (5 "0.8" a63 F)) + (bcStrings (5 "0.75" a64 F)) + (bcStrings (5 "0.8" a65 F)) + (bcStrings (5 "0.97" a66 F)) + (bcStrings (5 "0" a67 F)) + (text . "\newline ") + (bcStrings (5 "0.02" a71 F)) + (bcStrings (5 "0.06" a72 F)) + (bcStrings (5 "0.08" a73 F)) + (bcStrings (5 "0.12" a74 F)) + (bcStrings (5 "0.02" a75 F)) + (bcStrings (5 "0.01" a76 F)) + (bcStrings (5 "0.97" a77 F)) + (text . "\newline ") + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Enter lower boundary conditions {\it bl(n+nclin)}: \newline ") + (bcStrings (8 "-0.01" bl1 F)) + (bcStrings (8 "-0.1" bl2 F)) + (bcStrings (8 "-0.01" bl3 F)) + (bcStrings (8 "-0.04" bl4 F)) + (bcStrings (8 "-0.1" bl5 F)) + (bcStrings (8 "-0.01" bl6 F)) + (bcStrings (8 "-0.01" bl7 F)) + (bcStrings (8 "-0.13" bl8 F)) + (bcStrings (8 "-1.0e+21" bl9 F)) + (bcStrings (8 "-1.0e+21" bl10 F)) + (bcStrings (8 "-1.0e+21" bl11 F)) + (bcStrings (8 "-1.0e+21" bl12 F)) + (bcStrings (8 "-0.0992" bl13 F)) + (bcStrings (8 "-0.003" bl14 F)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Enter upper boundary conditions {\it bu(n+nclin)}: \newline ") + (bcStrings (8 "0.01" bu1 F)) + (bcStrings (8 "0.15" bu2 F)) + (bcStrings (8 "0.03" bu3 F)) + (bcStrings (8 "0.02" bu4 F)) + (bcStrings (8 "0.05" bu5 F)) + (bcStrings (8 "1.0e+21" bu6 F)) + (bcStrings (8 "1.0e+21" bu7 F)) + (bcStrings (8 "-0.13" bu8 F)) + (bcStrings (8 "-0.0049" bu9 F)) + (bcStrings (8 "-0.0064" bu10 F)) + (bcStrings (8 "-0.0037" bu11 F)) + (bcStrings (8 "-0.0012" bu12 F)) + (bcStrings (8 "1.0e+21" bu13 F)) + (bcStrings (8 "0.002" bu14 F)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Enter coefficients of the objective function, {\it cvec(n)}: ") + (text . "\newline ") + (bcStrings (8 "-0.02" c1 F)) + (bcStrings (8 "-0.2" c2 F)) + (bcStrings (8 "-0.2" c3 F)) + (bcStrings (8 "-0.2" c4 F)) + (bcStrings (8 "-0.2" c5 F)) + (bcStrings (8 "0.04" c6 F)) + (bcStrings (8 "0.04" c7 F)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Enter initial guess of the solution vector, {\it x(n)}: ") + (text . "\newline ") + (bcStrings (8 "-0.01" x1 F)) + (bcStrings (8 "-0.03" x2 F)) + (bcStrings (8 "0.0" x3 F)) + (bcStrings (8 "-0.01" x4 F)) + (bcStrings (8 "-0.1" x5 F)) + (bcStrings (8 "0.02" x6 F)) + (bcStrings (8 "0.01" x7 F))) + htMakeDoneButton('"Continue",'e04mbfGen) + htpSetProperty(page,'n,n) + htpSetProperty(page,'nclin,nclin) + htpSetProperty(page,'nrowa,nrowa) + htpSetProperty(page,'itmax,itmax) + htpSetProperty(page,'msglvl,msglvl) + htpSetProperty(page,'linobj,linobj) + htpSetProperty(page,'liwork,liwork) + htpSetProperty(page,'lwork,lwork) + htpSetProperty(page,'ifail,ifail) + htpSetProperty(page,'inputArea, htpInputAreaAlist htPage) + htShowPage() + +e04mbfGen htPage == + n := htpProperty(htPage, 'n) + nclin := htpProperty(htPage, 'nclin) + nrowa := htpProperty(htPage, 'nrowa) + itmax := htpProperty(htPage, 'itmax) + msglvl := htpProperty(htPage, 'msglvl) + linobj := htpProperty(htPage, 'linobj) + liwork := htpProperty(htPage,'liwork) + lwork := htpProperty(htPage,'lwork) + ifail := htpProperty(htPage,'ifail) + alist := htpInputAreaAlist htPage + y := alist + for i in 1..n repeat + temp := STRCONC ((first y).1," ") + xlist := [temp,:xlist] + y := rest y + xstring := bcwords2liststring xlist + for i in 1..n repeat + temp := STRCONC ((first y).1," ") + clist := [temp,:clist] + y := rest y + cstring := bcwords2liststring clist + for i in 1..(n+nclin) repeat + temp := STRCONC ((first y).1," ") + bulist := [temp,:bulist] + y := rest y + bustring := bcwords2liststring bulist + for i in 1..(n+nclin) repeat + temp := STRCONC ((first y).1," ") + bllist := [temp,:bllist] + y := rest y + blstring := bcwords2liststring bllist + for i in 1..nrowa repeat -- matrix A + for j in 1..n repeat + a := STRCONC((first y).1," ") + arrlist := [a,:arrlist] + y := rest y + amatlist := [:amatlist,arrlist] + arrlist := [] + amatlist := reverse amatlist + amatstr := bcwords2liststring [bcwords2liststring x for x in amatlist] + nctotl := n + nclin + prefix := STRCONC("e04mbf(",STRINGIMAGE itmax,",", STRINGIMAGE msglvl,", ") + prefix := STRCONC(prefix,STRINGIMAGE n,",",STRINGIMAGE nclin,", ") + prefix := STRCONC(prefix,STRINGIMAGE nctotl,",",STRINGIMAGE nrowa,", ") + middle := STRCONC(amatstr,",[") + middle := STRCONC(middle,blstring,"],[",bustring,"],[",cstring) + middle := STRCONC(middle,"],",linobj,", ",STRINGIMAGE liwork) + middle := STRCONC(middle,",",STRINGIMAGE lwork,",[") + middle := STRCONC(middle,xstring,"],",STRINGIMAGE ifail,")") + linkGen STRCONC(prefix,middle) + + + +e04naf() == + htInitPage('"E04NAF - Quadratic programming problem",nil) + htMakePage '( + (domainConditions + (isDomain EM $EmptyMode) + (isDomain PI (PositiveInteger)) + (isDomain F (Float))) + (text . "\windowlink{Manual Page}{manpageXXe04naf} for this routine ") + (text . "\newline ") + (text . "\lispwindowlink{Browser operation page}{(|oPageFrom| '|e04naf| '|NagOptimisationPackage|)} for this routine") + (text . "\newline \horizontalline ") + (text . "\newline ") + (text . "E04NAF is a comprehensive routine to solve quadratic problems ") + (text . "(QP) of the form \center{\htbitmap{e04naf}} \newline ") + (text . "where {\it c} is a constant {\it n} element vector, {\it H} is a") + (text . " constant {\it n} by {\it n} symmetric matrix, and the matrix ") + (text . "{\it A} is {\it m} by {\it n}, i.e. there are {\it n} variables ") + (text . "and {\it m} general linear constraints. {\it m} may be zero in ") + (text . "which case the LP problem is subject only to bounds on the ") + (text . "variables. \blankline If {\it H} = 0 a flag can be set so that ") + (text . "the problem is treated as a linear programming (LP) problem. ") + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Upper bound on number of iterations, {\it itmax}:") + (text . "\newline\tab{2} ") + (bcStrings (6 20 itmax PI)) + (text . "\blankline ") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Type of output messages required, {\it msglvl}: ") + (radioButtons msglvl + (" < 0 " " No printing " mMinus) + (" = 0 " " Printing only if an input parameter is incorrect or overflow is likely" mZero) + (" = 1" " Printing occurs at the solution " mOne) + (" = 5" " One line of output for each constraint addition or deletion, no printout" mFive) + (" \htbitmap{great=} 10" " As above with printout of the solution" mTen) + (" \htbitmap{great=} 15" " As above with X, ISTATE and indices of free variables at each iteration" mFifteen) + (" \htbitmap{great=} 20" " As above with the Lagrange multiplier estimates and the free variables at each iteration" mTwenty) + (" \htbitmap{great=} 30" " As above with the diagonal elements of the matrix {\it T} associated with the {\it TQ} factorization of the working set, and the diagonal elements of the Cholesky factor {\it R} of the projected Hessian" mThirty) + (" \htbitmap{great=} 80" " As above with debug printout" mEighty) + (" = 99" " As above with arrays {\it cvec} and {\it hess}" mNinetyNine)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Number of variables, {\it n}: ") + (text . "\newline\tab{2} ") + (bcStrings (6 7 n PI)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Number of general linear constraints, {\it nclin}: ") + (text . "\newline\tab{2} ") + (bcStrings (6 7 nclin PI)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "First dimension of array {\it a}, {\it nrowa}:") + (text . "\newline\tab{2} ") + (bcStrings (6 7 nrowa PI)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "First dimension of array {\it hess}, {\it nrowh}:") + (text . "\newline\tab{2} ") + (bcStrings (6 7 nrowh PI)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Second dimension of array {\it hess}, {\it ncolh}:") + (text . "\newline\tab{2} ") + (bcStrings (6 7 ncolh PI)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Size above which a bound is regarded as infinite, {\it bigbnd}:") + (text . "\newline\tab{2} ") + (bcStrings (10 "1.0e10" bigbnd F)) + (text . "\blankline ") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Specifies whether or not an initial estimate of the active constraints is present, {\it cold}:") + (radioButtons cold + ("" " true - E04NAF determines the initial working set" cTrue) + ("" " false - user defined contents of array {\it istate}" cFalse)) + (text . "\blankline ") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Specifies whether or not {\it h} is a zero matrix, {\it lp}:") + (radioButtons lp + ("" " false - QP problem " lFalse) + ("" " true - LP problem, {\it hess} and {\it qphess} are not referenced " lTrue)) + (text . "\blankline ") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Specifies whether or not orthogonal transformations are to be used in computing and updating the working set, {\it orthog}:") + (radioButtons orthog + ("" " true " oTrue) + ("" " false " oFalse)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "Dimension of {\it iwork}, {\it liwork}:") + (text . "\newline\tab{2} ") + (bcStrings (5 14 liwork F)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Dimension of {\it work}, {\it lwork}:") + (text . "\newline\tab{2} ") + (bcStrings (5 238 lwork F)) + (text . "\blankline ") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Ifail value:") + (radioButtons ifail + ("" " -1, Print error messages" minusOne) + ("" " 1, Suppress error messages" one))) + htMakeDoneButton('"Continue", 'e04nafSolve) + htShowPage() + +e04nafSolve htPage == + itmax := + $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'itmax) + objValUnwrap htpLabelSpadValue(htPage, 'itmax) + msg := htpButtonValue(htPage,'msglvl) + msglvl := + msg = 'mMinus => '-1 + msg = 'mZero => '0 + msg = 'mOne => '1 + msg = 'mFive => '5 + msg = 'mTen => '10 + msg = 'mFifteen => '15 + msg = 'mTwenty => '20 + msg = 'mThirty => '30 + msg = 'mEighty => '80 + '99 + n := + $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'n) + objValUnwrap htpLabelSpadValue(htPage, 'n) + nclin := + $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'nclin) + objValUnwrap htpLabelSpadValue(htPage, 'nclin) + nrowa := + $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'nrowa) + objValUnwrap htpLabelSpadValue(htPage, 'nrowa) + nrowh := + $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'nrowh) + objValUnwrap htpLabelSpadValue(htPage, 'nrowh) + ncolh := + $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'ncolh) + objValUnwrap htpLabelSpadValue(htPage, 'ncolh) + bigbnd := htpLabelInputString(htPage,'bigbnd) + col := htpButtonValue(htPage,'cold) + cold := + col = 'cTrue => '"true" + '"false" + linear := htpButtonValue(htPage,'lp) + lp := + linear = 'lTrue => '"true" + '"false" + ortho := htpButtonValue(htPage,'orthog) + orthog := + ortho = 'oTrue => '"true" + '"false" + liwork := + $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'liwork) + objValUnwrap htpLabelSpadValue(htPage, 'liwork) + lwork := + $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'lwork) + objValUnwrap htpLabelSpadValue(htPage, 'lwork) + error := htpButtonValue(htPage,'ifail) + ifail := + error = 'one => '1 + '-1 + (((nrowa = '7 and n = '7) and (nrowh = '7 and ncolh ='7)) and nclin = '7) => + e04nafDefaultSolve(htPage,itmax,msglvl,bigbnd,cold,lp,orthog,liwork,lwork,ifail) + aList := + "append"/[fa(i,n) for i in 1..nrowa] where fa(i,n) == + labelList := + "append"/[fb(i,j) for j in 1..n] where fb(i,j) == + anam := INTERN STRCONC ('"a",STRINGIMAGE i,STRINGIMAGE j) + [['bcStrings,[8, 0, anam, 'F]]] + prefix := ('"\newline ") + labelList := [['text,:prefix],:labelList] + middle := ('"\blankline \menuitemstyle{}\tab{2} Enter lower boundary ") + middle := STRCONC(middle,'"conditions {\it bl(n + nclin)}: \newline ") + blList := + "append"/[fc(i) for i in 1..(n+nclin)] where fc(i) == + blnam := INTERN STRCONC ('"bl",STRINGIMAGE i) + [['bcStrings,[8, '"0.0", blnam, 'F]]] + blList := [['text,:middle],:blList] + middle := ('"\blankline \menuitemstyle{}\tab{2} Enter upper boundary ") + middle := STRCONC(middle,'"conditions {\it bu(n+nclin)}: \newline ") + buList := + "append"/[fd(i) for i in 1..(n+nclin)] where fd(i) == + bunam := INTERN STRCONC ('"bu",STRINGIMAGE i) + [['bcStrings,[8, '"0.0", bunam, 'F]]] + buList := [['text,:middle],:buList] + middle := ('"\blankline \menuitemstyle{}\tab{2} Enter coefficients of the ") + middle := STRCONC(middle,'"objective function {\it cvec(n)}: \newline ") + cList := + "append"/[fe(i) for i in 1..n] where fe(i) == + cnam := INTERN STRCONC ('"c",STRINGIMAGE i) + [['bcStrings,[8, '"0.0", cnam, 'F]]] + cList := [['text,:middle],:cList] + middle := ('"\blankline \menuitemstyle{}\tab{2} Enter set of positive ") + middle := STRCONC(middle,'"tolerances {\it featol(n+nclin)}: \newline ") + fList := + "append"/[ff(i) for i in 1..(n+nclin)] where ff(i) == + fnam := INTERN STRCONC ('"f",STRINGIMAGE i) + [['bcStrings,[9, '"0.1053e-7", fnam, 'F]]] + fList := [['text,:middle],:fList] + middle := ('"\blankline \menuitemstyle{}\tab{2} Enter the elements of ") + middle := STRCONC(middle,'"array {\it hess(nrowh,ncolh)}: \newline ") + hList := + "append"/[fh(i,n) for i in 1..nrowh] where fh(i,n) == + labelList := + "append"/[fi(i,j) for j in 1..n] where fi(i,j) == + hnam := INTERN STRCONC ('"h",STRINGIMAGE i,STRINGIMAGE j) + [['bcStrings,[8, 0, hnam, 'F]]] + prefix := ('"\newline ") + labelList := [['text,:prefix],:labelList] + hList := [['text,:middle],:hList] + middle := ('"\blankline \menuitemstyle{}\tab{2} Enter initial guess ") + middle := STRCONC(middle,'"of the solution vector {\it x(n)}: \newline ") + xList := + "append"/[fg(i) for i in 1..n] where fg(i) == + xnam := INTERN STRCONC ('"x",STRINGIMAGE i) + [['bcStrings,[8, '"0.0", xnam, 'F]]] + xList := [['text,:middle],:xList] + middle := ('"\blankline \menuitemstyle{}\tab{2} If {\it cold} = false ") + middle := STRCONC(middle,'"enter {\it istate(n+nclin)} values: \newline ") + iList := + "append"/[fj(i) for i in 1..(n+nclin)] where fj(i) == + inam := INTERN STRCONC ('"i",STRINGIMAGE i) + [['bcStrings,[8, '"0.0", inam, 'F]]] + iList := [['text,:middle],:iList] + equationPart := [ + '(domainConditions + (isDomain EM $EmptyMode) + (isDomain F (Float)) + (isDomain I (Integer))), + :aList,:blList,:buList,:cList,:fList,:hList,:xList,:iList] + page:= htInitPage('"E04NAF - Quadratic programming problem",nil) + htSay '"\menuitemstyle{}\tab{2} " + htSay '"Enter the elements of the array {\it a(nrowa,n)}: \newline " + htMakePage equationPart + htMakeDoneButton('"Continue",'e04nafGen) + htpSetProperty(page,'itmax,itmax) + htpSetProperty(page,'msglvl,msglvl) + htpSetProperty(page,'n,n) + htpSetProperty(page,'nclin,nclin) + htpSetProperty(page,'nrowa,nrowa) + htpSetProperty(page,'nrowh,nrowh) + htpSetProperty(page,'ncolh,ncolh) + htpSetProperty(page,'bigbnd,bigbnd) + htpSetProperty(page,'cold,cold) + htpSetProperty(page,'lp,lp) + htpSetProperty(page,'orthog,orthog) + htpSetProperty(page,'liwork,liwork) + htpSetProperty(page,'lwork,lwork) + htpSetProperty(page,'ifail,ifail) + htpSetProperty(page,'inputArea, htpInputAreaAlist htPage) + htShowPage() + +e04nafDefaultSolve(htPage,itmax,msglvl,bigbnd,cold,lp,orthog,liwork,lwork,ifail) == + n := '7 + nclin := '7 + nrowa := '7 + nrowh := '7 + ncolh := '7 + page:= htInitPage('"E04NAF - Quadratic programming problem",nil) + htMakePage '( + (domainConditions + (isDomain EM $EmptyMode) + (isDomain F (Float)) + (isDomain I (Integer))) + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Enter the elements of array {\it a(nrowa,n)}: \newline ") + (bcStrings (5 "1" a11 F)) + (bcStrings (5 "1" a12 F)) + (bcStrings (5 "1" a13 F)) + (bcStrings (5 "1" a14 F)) + (bcStrings (5 "1" a15 F)) + (bcStrings (5 "1" a16 F)) + (bcStrings (5 "1" a17 F)) + (text . "\newline ") + (bcStrings (5 "0.15" a21 F)) + (bcStrings (5 "0.04" a22 F)) + (bcStrings (5 "0.02" a23 F)) + (bcStrings (5 "0.04" a24 F)) + (bcStrings (5 "0.02" a25 F)) + (bcStrings (5 "0.01" a26 F)) + (bcStrings (5 "0.03" a27 F)) + (text . "\newline ") + (bcStrings (5 "0.03" a31 F)) + (bcStrings (5 "0.05" a32 F)) + (bcStrings (5 "0.08" a33 F)) + (bcStrings (5 "0.02" a34 F)) + (bcStrings (5 "0.06" a35 F)) + (bcStrings (5 "0.01" a36 F)) + (bcStrings (5 "0" a37 F)) + (text . "\newline ") + (bcStrings (5 "0.02" a41 F)) + (bcStrings (5 "0.04" a42 F)) + (bcStrings (5 "0.01" a43 F)) + (bcStrings (5 "0.02" a44 F)) + (bcStrings (5 "0.02" a45 F)) + (bcStrings (5 "0" a46 F)) + (bcStrings (5 "0" a47 F)) + (text . "\newline ") + (bcStrings (5 "0.02" a51 F)) + (bcStrings (5 "0.03" a52 F)) + (bcStrings (5 "0" a53 F)) + (bcStrings (5 "0" a54 F)) + (bcStrings (5 "0.01" a55 F)) + (bcStrings (5 "0" a56 F)) + (bcStrings (5 "0" a57 F)) + (text . "\newline ") + (bcStrings (5 "0.7" a61 F)) + (bcStrings (5 "0.75" a62 F)) + (bcStrings (5 "0.8" a63 F)) + (bcStrings (5 "0.75" a64 F)) + (bcStrings (5 "0.8" a65 F)) + (bcStrings (5 "0.97" a66 F)) + (bcStrings (5 "0" a67 F)) + (text . "\newline ") + (bcStrings (5 "0.02" a71 F)) + (bcStrings (5 "0.06" a72 F)) + (bcStrings (5 "0.08" a73 F)) + (bcStrings (5 "0.12" a74 F)) + (bcStrings (5 "0.02" a75 F)) + (bcStrings (5 "0.01" a76 F)) + (bcStrings (5 "0.97" a77 F)) + (text . "\newline ") + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Enter lower boundary conditions {\it bl(n+nclin)}: \newline ") + (bcStrings (8 "-0.01" bl1 F)) + (bcStrings (8 "-0.1" bl2 F)) + (bcStrings (8 "-0.01" bl3 F)) + (bcStrings (8 "-0.04" bl4 F)) + (bcStrings (8 "-0.1" bl5 F)) + (bcStrings (8 "-0.01" bl6 F)) + (bcStrings (8 "-0.01" bl7 F)) + (bcStrings (8 "-0.13" bl8 F)) + (bcStrings (8 "-1.0e+21" bl9 F)) + (bcStrings (8 "-1.0e+21" bl10 F)) + (bcStrings (8 "-1.0e+21" bl11 F)) + (bcStrings (8 "-1.0e+21" bl12 F)) + (bcStrings (8 "-0.0992" bl13 F)) + (bcStrings (8 "-0.003" bl14 F)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Enter upper boundary conditions {\it bu(n+nclin)}: \newline ") + (bcStrings (8 "0.01" bu1 F)) + (bcStrings (8 "0.15" bu2 F)) + (bcStrings (8 "0.03" bu3 F)) + (bcStrings (8 "0.02" bu4 F)) + (bcStrings (8 "0.05" bu5 F)) + (bcStrings (8 "1.0e+21" bu6 F)) + (bcStrings (8 "1.0e+21" bu7 F)) + (bcStrings (8 "-0.13" bu8 F)) + (bcStrings (8 "-0.0049" bu9 F)) + (bcStrings (8 "-0.0064" bu10 F)) + (bcStrings (8 "-0.0037" bu11 F)) + (bcStrings (8 "-0.0012" bu12 F)) + (bcStrings (8 "1.0e+21" bu13 F)) + (bcStrings (8 "0.002" bu14 F)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Enter coefficients of the objective function, {\it cvec(n)}: ") + (text . "\newline ") + (bcStrings (8 "-0.02" c1 F)) + (bcStrings (8 "-0.2" c2 F)) + (bcStrings (8 "-0.2" c3 F)) + (bcStrings (8 "-0.2" c4 F)) + (bcStrings (8 "-0.2" c5 F)) + (bcStrings (8 "0.04" c6 F)) + (bcStrings (8 "0.04" c7 F)) + (text . "\newline ") + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Enter set of positive tolerances {\it featol(n+nclin)}:\newline ") + (bcStrings (9 "0.1053e-7" f1 F)) + (bcStrings (9 "0.1053e-7" f2 F)) + (bcStrings (9 "0.1053e-7" f3 F)) + (bcStrings (9 "0.1053e-7" f4 F)) + (bcStrings (9 "0.1053e-7" f5 F)) + (bcStrings (9 "0.1053e-7" f6 F)) + (bcStrings (9 "0.1053e-7" f7 F)) + (bcStrings (9 "0.1053e-7" f8 F)) + (bcStrings (9 "0.1053e-7" f9 F)) + (bcStrings (9 "0.1053e-7" f10 F)) + (bcStrings (9 "0.1053e-7" f11 F)) + (bcStrings (9 "0.1053e-7" f12 F)) + (bcStrings (9 "0.1053e-7" f13 F)) + (bcStrings (9 "0.1053e-7" f14 F)) + (text . "\newline ") + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Enter the elements of array {\it hess(nrowh,ncolh)}: \newline ") + (bcStrings (5 "2" h11 F)) + (bcStrings (5 "0" h12 F)) + (bcStrings (5 "0" h13 F)) + (bcStrings (5 "0" h14 F)) + (bcStrings (5 "0" h15 F)) + (bcStrings (5 "0" h16 F)) + (bcStrings (5 "0" h17 F)) + (text . "\newline ") + (bcStrings (5 "0" h21 F)) + (bcStrings (5 "2" h22 F)) + (bcStrings (5 "0" h23 F)) + (bcStrings (5 "0" h24 F)) + (bcStrings (5 "0" h25 F)) + (bcStrings (5 "0" h26 F)) + (bcStrings (5 "0" h27 F)) + (text . "\newline ") + (bcStrings (5 "0" h31 F)) + (bcStrings (5 "0" h32 F)) + (bcStrings (5 "2" h33 F)) + (bcStrings (5 "2" h34 F)) + (bcStrings (5 "0" h35 F)) + (bcStrings (5 "0" h36 F)) + (bcStrings (5 "0" h37 F)) + (text . "\newline ") + (bcStrings (5 "0" h41 F)) + (bcStrings (5 "0" h42 F)) + (bcStrings (5 "2" h43 F)) + (bcStrings (5 "2" h44 F)) + (bcStrings (5 "0" h45 F)) + (bcStrings (5 "0" h46 F)) + (bcStrings (5 "0" h47 F)) + (text . "\newline ") + (bcStrings (5 "0" h51 F)) + (bcStrings (5 "0" h52 F)) + (bcStrings (5 "0" h53 F)) + (bcStrings (5 "0" h54 F)) + (bcStrings (5 "2" h55 F)) + (bcStrings (5 "0" h56 F)) + (bcStrings (5 "0" h57 F)) + (text . "\newline ") + (bcStrings (5 "0" h61 F)) + (bcStrings (5 "0" h62 F)) + (bcStrings (5 "0" h63 F)) + (bcStrings (5 "0" h64 F)) + (bcStrings (5 "0" h65 F)) + (bcStrings (5 "-2" h66 F)) + (bcStrings (5 "-2" h67 F)) + (text . "\newline ") + (bcStrings (5 "0" h71 F)) + (bcStrings (5 "0" h72 F)) + (bcStrings (5 "0" h73 F)) + (bcStrings (5 "0" h74 F)) + (bcStrings (5 "0" h75 F)) + (bcStrings (5 "-2" h76 F)) + (bcStrings (5 "-2" h77 F)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Enter initial guess of the solution vector, {\it x(n)}: ") + (text . "\newline ") + (bcStrings (8 "-0.01" x1 F)) + (bcStrings (8 "-0.03" x2 F)) + (bcStrings (8 "0.0" x3 F)) + (bcStrings (8 "-0.01" x4 F)) + (bcStrings (8 "-0.1" x5 F)) + (bcStrings (8 "0.02" x6 F)) + (bcStrings (8 "0.01" x7 F)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "If {\it cold} = false enter {\it istate(n+nclin)} values: ") + (text . "\newline ") + (bcStrings (8 "0" i1 F)) + (bcStrings (8 "0" i2 F)) + (bcStrings (8 "0" i3 F)) + (bcStrings (8 "0" i4 F)) + (bcStrings (8 "0" i5 F)) + (bcStrings (8 "0" i6 F)) + (bcStrings (8 "0" i7 F)) + (bcStrings (8 "0" i8 F)) + (bcStrings (8 "0" i9 F)) + (bcStrings (8 "0" i10 F)) + (bcStrings (8 "0" i11 F)) + (bcStrings (8 "0" i12 F)) + (bcStrings (8 "0" i13 F)) + (bcStrings (8 "0" i14 F))) + htMakeDoneButton('"Continue",'e04nafGen) + htpSetProperty(page,'itmax,itmax) + htpSetProperty(page,'msglvl,msglvl) + htpSetProperty(page,'n,n) + htpSetProperty(page,'nclin,nclin) + htpSetProperty(page,'nrowa,nrowa) + htpSetProperty(page,'nrowh,nrowh) + htpSetProperty(page,'ncolh,ncolh) + htpSetProperty(page,'bigbnd,bigbnd) + htpSetProperty(page,'cold,cold) + htpSetProperty(page,'lp,lp) + htpSetProperty(page,'orthog,orthog) + htpSetProperty(page,'liwork,liwork) + htpSetProperty(page,'lwork,lwork) + htpSetProperty(page,'ifail,ifail) + htpSetProperty(page,'inputArea, htpInputAreaAlist htPage) + htShowPage() + +e04nafGen htPage == + itmax := htpProperty(htPage, 'itmax) + msglvl := htpProperty(htPage, 'msglvl) + n := htpProperty(htPage, 'n) + nclin := htpProperty(htPage, 'nclin) + nrowa := htpProperty(htPage, 'nrowa) + nrowh := htpProperty(htPage, 'nrowh) + ncolh := htpProperty(htPage, 'ncolh) + bigbnd := htpProperty(htPage, 'bigbnd) + cold := htpProperty(htPage, 'cold) + lp := htpProperty(htPage, 'lp) + orthog := htpProperty(htPage, 'orthog) + liwork := htpProperty(htPage,'liwork) + lwork := htpProperty(htPage,'lwork) + ifail := htpProperty(htPage,'ifail) + alist := htpInputAreaAlist htPage + y := alist + for i in 1..(n+nclin) repeat + temp := STRCONC ((first y).1," ") + ilist := [temp,:ilist] + y := rest y + istring := bcwords2liststring ilist + for i in 1..n repeat + temp := STRCONC ((first y).1," ") + xlist := [temp,:xlist] + y := rest y + xstring := bcwords2liststring xlist + for i in 1..nrowh repeat -- matrix H + for j in 1..ncolh repeat + h := STRCONC((first y).1," ") + hlist := [h,:hlist] + y := rest y + hmatlist := [:hmatlist,hlist] + hlist := [] + hmatlist := reverse hmatlist + hmatstr := bcwords2liststring [bcwords2liststring x for x in hmatlist] + for i in 1..(n+nclin) repeat + temp := STRCONC ((first y).1," ") + flist := [temp,:flist] + y := rest y + fstring := bcwords2liststring flist + for i in 1..n repeat + temp := STRCONC ((first y).1," ") + clist := [temp,:clist] + y := rest y + cstring := bcwords2liststring clist + for i in 1..(n+nclin) repeat + temp := STRCONC ((first y).1," ") + bulist := [temp,:bulist] + y := rest y + bustring := bcwords2liststring bulist + for i in 1..(n+nclin) repeat + temp := STRCONC ((first y).1," ") + bllist := [temp,:bllist] + y := rest y + blstring := bcwords2liststring bllist + for i in 1..nrowa repeat -- matrix A + for j in 1..n repeat + a := STRCONC((first y).1," ") + arrlist := [a,:arrlist] + y := rest y + amatlist := [:amatlist,arrlist] + arrlist := [] + amatlist := reverse amatlist + amatstr := bcwords2liststring [bcwords2liststring x for x in amatlist] + nctotl := n + nclin + prefix := STRCONC("e04naf(",STRINGIMAGE itmax,",", STRINGIMAGE msglvl,", ") + prefix := STRCONC(prefix,STRINGIMAGE n,",",STRINGIMAGE nclin,", ") + prefix := STRCONC(prefix,STRINGIMAGE nctotl,",",STRINGIMAGE nrowa,", ") + prefix := STRCONC(prefix,STRINGIMAGE nrowh,",",STRINGIMAGE ncolh,", ",bigbnd) + middle := STRCONC(", ",amatstr,",[") + middle := STRCONC(middle,blstring,"],[",bustring,"],[",cstring) + middle := STRCONC(middle,"],[",fstring,"],",hmatstr,",",STRINGIMAGE cold,",") + middle := STRCONC(middle,STRINGIMAGE lp,", ",STRINGIMAGE orthog,", ") + middle := STRCONC(middle,STRINGIMAGE liwork,",",STRINGIMAGE lwork,",[") + middle := STRCONC(middle,xstring,"],[",istring,"]::Matrix Integer,") + middle := STRCONC(middle,STRINGIMAGE ifail) + end := STRCONC(",((",hmatstr,")::Matrix Expression Float)::ASP20('QPHESS))") + linkGen STRCONC(prefix,middle,end) + +e04ucf() == + htInitPage('"E04UCF - Minimum, function of several variables, sequential QP method, nonlinear constraints, using function values and optionally 1st derivatives", nil) + htMakePage '( + (domainConditions + (isDomain EM $EmptyMode) + (isDomain PI (PositiveInteger)) + (isDomain F (Float))) + (text . "\windowlink{Manual Page}{manpageXXe04ucf} for this routine ") + (text . "\newline ") + (text . "\lispwindowlink{Browser operation page}{(|oPageFrom| '|e04ucf| '|NagOptimisationPackage|)} for this routine") + (text . "\newline \horizontalline ") + (text . "\newline ") + (text . "E04UCF minimizes an arbitrary smooth function subject to ") + (text . "constraints which may include simple bounds on the variables, ") + (text . "linear constraints and smooth nonlinear constraints. As many ") + (text . "first partial derivatives as possible should be supplied by the ") + (text . "user, unspecified derivatives being estimated by finite ") + (text . "differences. \newline The routine solves problems of the form") + (text . "\center{\htbitmap{e04ucf}}\newline where the objective function ") + (text . "{\it F(x)} is nonlinear, \htbitmap{Al} is an \htbitmap{nl} by n ") + (text . "constant matrix and {\it c(x)} is an \htbitmap{nn} element ") + (text . "vector of nonlinear constraint functions. The objective function") + (text . " and constraint functions are assumed to be smooth (i.e. at ") + (text . "least twice continuously differentiable), although the method ") + (text . "will usually work if there are discontinuities away from the ") + (text . "solution. \blankline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "Enter the number of variables, {\it n}: ") + (text . "\newline ") + (bcStrings (5 4 n PI)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "Enter the number of general linear constraints, {\it nclin}: ") + (text . "\newline ") + (bcStrings (5 1 nclin PI)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "Enter the number of nonlinear constraints, {\it ncnln}: ") + (text . "\newline ") + (bcStrings (5 2 ncnln PI)) + (text . "\blankline ") + (text . "Change optional parameters:") + (radioButtons optional + ("" " No" no) + ("" " Yes" yes)) + (text . "\blankline ") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Start value:") + (radioButtons start + ("" " Cold start" false) + ("" " Warm start" true)) + (text . "\blankline ") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Ifail value:") + (radioButtons ifail + ("" " -1, Print error messages" minusOne) + ("" " 1, Suppress error messages" one))) + htMakeDoneButton('"Continue", 'e04ucfSolve) + htShowPage() + + +e04ucfSolve(htPage) == + n := + $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'n) + objValUnwrap htpLabelSpadValue(htPage, 'n) + nclin := + $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'nclin) + objValUnwrap htpLabelSpadValue(htPage, 'nclin) + ncnln := + $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'ncnln) + objValUnwrap htpLabelSpadValue(htPage, 'ncnln) + nrowa := + $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'nclin) + objValUnwrap htpLabelSpadValue(htPage, 'nrowa) + nrowj := + $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'ncnln) + objValUnwrap htpLabelSpadValue(htPage, 'nrowj) + nrowr := + $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'n) + objValUnwrap htpLabelSpadValue(htPage, 'nrowr) + liwork := 3*n+nclin+2*ncnln + lwork := + (ncnln = '0 and nclin = '0) => 20*n + (ncnln = '0 and nclin > '0) => 2*n*n + 20*n + 11*nclin + (ncnln > '0 and nclin >= '0) => 2*n*n + n*nclin +2*n*ncnln + 20*n + 11*nclin + 21*ncnln + '1 + initial := htpButtonValue(htPage,'start) + start := + initial = 'true => '1 + '0 + error := htpButtonValue(htPage,'ifail) + ifail := + error = 'one => '1 + '-1 + param := htpButtonValue(htPage,'optional) + optional := + param = 'no => '0 + '1 + ((n = '4 and optional = '0 and nclin=1 and ncnln=2) and (start = '0)) => + e04ucfDefaultSolve(htPage,nclin,ncnln,nrowa,nrowj,nrowr,liwork,lwork,ifail) + start = '1 => e04ucfCopOut() + optional := '1 + aList := + "append"/[fa(i,n) for i in 1..nrowa] where fa(i,n) == + labelList := + "append"/[fb(i,j) for j in 1..n] where fb(i,j) == + anam := INTERN STRCONC ('"a",STRINGIMAGE i,STRINGIMAGE j) + [['bcStrings,[8, 0, anam, 'F]]] + prefix := ('"\newline ") + labelList := [['text,:prefix],:labelList] + middle := ('"\blankline \menuitemstyle{}\tab{2} Enter lower boundary ") + middle := STRCONC(middle,'"conditions {\it bl(n+nclin+ncnln)}: \newline ") + blList := + "append"/[fc(i) for i in 1..(n+nclin+ncnln)] where fc(i) == + blnam := INTERN STRCONC ('"bl",STRINGIMAGE i) + [['bcStrings,[8, '"-1.E25", blnam, 'F]]] + blList := [['text,:middle],:blList] + middle := ('"\blankline \menuitemstyle{}\tab{2} Enter upper boundary ") + middle := STRCONC(middle,'"conditions {\it bu(n+nclin+ncnln)}: \newline ") + buList := + "append"/[fd(i) for i in 1..(n+nclin+ncnln)] where fd(i) == + bunam := INTERN STRCONC ('"bu",STRINGIMAGE i) + [['bcStrings,[8, '"1.E25", bunam, 'F]]] + buList := [['text,:middle],:buList] + middle := ('"\blankline \menuitemstyle{}\tab{2} Enter the nonlinear ") + middle := STRCONC(middle,'"constraint functions {\it c(ncnln)} ") + middle := STRCONC(middle,'"in terms of X[1]...X[n]: \newline ") + cList := + "append"/[fe(i) for i in 1..ncnln] where fe(i) == + lineEnd := ('"\newline \tab{2} ") + cnam := INTERN STRCONC ('"c",STRINGIMAGE i) + [['text,:lineEnd],['bcStrings,[55, '"X[1]", cnam, 'F]]] + cList := [['text,:middle],:cList] + middle := ('"\blankline \menuitemstyle{}\tab{2} Enter the objective ") + middle := STRCONC(middle,'"function, {\it F(x)} ") + middle := STRCONC(middle,'"in terms of X[1]...X[n]: \newline ") + funcList := [['bcStrings,[55, '"X[1]", 'f, 'EM]]] + funcList := [['text,:middle],:funcList] + middle := ('"\blankline \menuitemstyle{}\tab{2} Enter initial guess ") + middle := STRCONC(middle,'"of the solution vector {\it x(n)}: \newline ") + xList := + "append"/[fg(i) for i in 1..n] where fg(i) == + xnam := INTERN STRCONC ('"x",STRINGIMAGE i) + [['bcStrings,[8, '"0.0", xnam, 'F]]] + xList := [['text,:middle],:xList] + equationPart := [ + '(domainConditions + (isDomain EM $EmptyMode) + (isDomain F (Float)) + (isDomain I (Integer))), + :aList,:blList,:buList,:cList,:funcList,:xList, + :'( + (text . "\blankline ") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "Crash tolerance, {\it cra}: ") + (text . "\newline ") + (bcStrings (20 "0.01" cra F)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "Derivative level, {\it der}: ") + (text . "\newline ") + (bcStrings (5 3 der PI)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "Feasibility tolerance, {\it fea}: ") + (text . "\newline ") + (bcStrings (20 "0.1053671201E-7" fea F)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "Function Precision, {\it fun}: ") + (text . "\newline ") + (bcStrings (20 "0.4373903510E-14" fun F)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "{\it r} is a Hessian matrix :") + (radioButtons hess + ("" " No" hFalse) + ("" " Yes" hTrue)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "Infinite bound size, {\it infb}: ") + (text . "\newline ") + (bcStrings (20 "1.00E+15" infb F)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "Infinite step size, {\it infs}: ") + (text . "\newline ") + (bcStrings (20 "1.00E+15" infs F)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "Linear feasibility tolerance, {\it linf}: ") + (text . "\newline ") + (bcStrings (20 "0.1053671201E-7" linf F)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "Linesearch tolerance, {\it lint}: ") + (text . "\newline ") + (bcStrings (20 "0.9" lint F)) + (text . "\blankline ") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "List parameters:") + (radioButtons list + ("" " No" false) + ("" " Yes" true)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "Major iteration limit, {\it maji}: ") + (text . "\newline ") + (bcStrings (5 30 maji PI)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "Major print level, {\it majp}: ") + (text . "\newline ") + (bcStrings (5 1 majp PI)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "Minor iteration limit, {\it mini}: ") + (text . "\newline ") + (bcStrings (5 81 mini PI)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "Minor print level, {\it minp}: ") + (text . "\newline ") + (bcStrings (5 0 minp PI)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "Monitoring channel, {\it mon}. ") + (text . "(Ignored in Foundation Library version.) ") + (text . "\newline ") + (bcStrings (5 "-1" mon F)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "Nonlinear feasibiltity tolerance, {\it nonf}: ") + (text . "\newline ") + (bcStrings (20 "1.05E-08" nonf F)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "Optimality tolerance, {\it opt}: ") + (text . "\newline ") + (bcStrings (20 "3.26E-08" opt F)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "Step limit, {\it ste}: ") + (text . "\newline ") + (bcStrings (5 "2.0" ste F)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "Start objective check at variable, {\it stao}: ") + (text . "\newline ") + (bcStrings (5 1 stao PI)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "Start constraint check at variable, {\it stac}: ") + (text . "\newline ") + (bcStrings (5 1 stac PI)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "Stop objective check at variable, {\it stoo}: ") + (text . "\newline ") + (bcStrings (5 9 stoo PI)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "Stop objective check at variable, {\it stoc}: ") + (text . "\newline ") + (bcStrings (5 9 stoc PI)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "Verify level, {\it ver}: ") + (text . "\newline ") + (bcStrings (5 3 ver PI)))] + page := htInitPage('"E04UCF - Unconstrained minimum, pre-conditioned conjugate gradient algorithm, function of several variables using 1st derivatives",nil) + htSay '"\menuitemstyle{}\tab{2} " + htSay '"Enter the elements of the array, {\it A(nrowa,n)}: " + htSay '"\newline " + htMakePage equationPart + htMakeDoneButton('"Continue",'e04ucfGen) + htpSetProperty(page,'n,n) + htpSetProperty(page,'nclin,nclin) + htpSetProperty(page,'ncnln,ncnln) + htpSetProperty(page,'nrowa,nrowa) + htpSetProperty(page,'nrowj,nrowj) + htpSetProperty(page,'nrowr,nrowr) + htpSetProperty(page,'liwork,liwork) + htpSetProperty(page,'lwork,lwork) + htpSetProperty(page,'optional,optional) + htpSetProperty(page,'start,start) + htpSetProperty(page,'ifail,ifail) + htpSetProperty(page,'inputArea, htpInputAreaAlist htPage) + htShowPage() + + +e04ucfDefaultSolve(htPage,nclin,ncnln,nrowa,nrowj,nrowr,liwork,lwork,ifail) == + n := '4 + optional := '0 + start := '0 + page := htInitPage('"E04UCF - Unconstrained minimum, pre-conditioned conjugate gradient algorithm, function of several variables using 1st derivatives",nil) + htMakePage '( + (domainConditions + (isDomain EM $EmptyMode) + (isDomain F (Float)) + (isDomain I (Integer))) + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Enter the elements of the array {\it A(nrowa,n)}: ") + (text . "\newline ") + (bcStrings (4 "1.0" a11 F)) + (bcStrings (4 "1.0" a12 F)) + (bcStrings (4 "1.0" a13 F)) + (bcStrings (4 "1.0" a14 F)) + (text . "\newline ") + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Enter the lower boundary conditions {\it bl(n+nclin+ncnln)}: ") + (text . "\newline ") + (bcStrings (8 "1.0" bl1 F)) + (bcStrings (8 "1.0" bl2 F)) + (bcStrings (8 "1.0" bl3 F)) + (bcStrings (8 "1.0" bl4 F)) + (bcStrings (8 "-1.E25" bl5 F)) + (bcStrings (8 "-1.E25" bl6 F)) + (bcStrings (8 "25.0" bl7 F)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Enter the upper boundary conditions {\it bu(n+nclin+ncnln)}: ") + (text . "\newline ") + (bcStrings (8 "5.0" bu1 F)) + (bcStrings (8 "5.0" bu2 F)) + (bcStrings (8 "5.0" bu3 F)) + (bcStrings (8 "5.0" bu4 F)) + (bcStrings (8 "20.0" bu5 F)) + (bcStrings (8 "40.0" bu6 F)) + (bcStrings (8 "1.E25" bu7 F)) + -- no istate or clamda or r as default condition is cold + -- what about cjac when der = 3 ? + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Enter the nonlinear constraint functions, {\it c(ncnln)} ") + (text . "in terms of X[1]...X[n]: ") + (text . "\newline ") + (bcStrings (55 "X[1]**2 + X[2]**2 + X[3]**2 + X[4]**2" cx1 EM)) + (text . "\newline ") + (bcStrings (55 "X[1]*X[2]*X[3]*X[4]" cx2 EM)) + (text . "\newline ") + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Enter the objective function, {\it F(x)} ") + (text . "in terms of X[1]...X[n]: ") + (text . "\newline ") + (bcStrings (55 "X[1]*X[4]*(X[1] + X[2] + X[3]) + X[3]" of EM)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Enter initial guess of the solution vector, {\it x(n)}: \newline") + (bcStrings (8 "1.0" x1 F)) + (bcStrings (8 "5.0" x2 F)) + (bcStrings (8 "5.0" x3 F)) + (bcStrings (8 "1.0" x4 F))) + htMakeDoneButton('"Continue",'e04ucfGen) + htpSetProperty(page,'n,n) + htpSetProperty(page,'nclin,nclin) + htpSetProperty(page,'ncnln,ncnln) + htpSetProperty(page,'nrowa,nrowa) + htpSetProperty(page,'nrowj,nrowj) + htpSetProperty(page,'nrowr,nrowr) + htpSetProperty(page,'liwork,liwork) + htpSetProperty(page,'lwork,lwork) + htpSetProperty(page,'start,start) + htpSetProperty(page,'optional,optional) + htpSetProperty(page,'ifail,ifail) + htpSetProperty(page,'inputArea, htpInputAreaAlist htPage) + htShowPage() + + +e04ucfGen htPage == + n := htpProperty(htPage,'n) + nclin := htpProperty(htPage,'nclin) + ncnln := htpProperty(htPage,'ncnln) + nrowa := htpProperty(htPage,'nrowa) + nrowj := htpProperty(htPage,'nrowj) + nrowr := htpProperty(htPage,'nrowr) + liwork := htpProperty(htPage,'liwork) + lwork := htpProperty(htPage,'lwork) + optional := htpProperty(htPage,'optional) + start := htpProperty(htPage,'start) + ifail := htpProperty(htPage,'ifail) + sta := 'false -- no warm start in HD + alist := htpInputAreaAlist htPage + y := alist + if (optional = '0) then + cra := '"0.01" + der := 3 + fea := '"0.1053671201E-7" + fun := '"0.4373903510E-14" + hes := 'true + infb := '"1.00E+15" + infs := '"1.00E+15" + linf := '"0.1053671201E-7" + lint := '"0.9" + lis := 'true + maji := 30 + majp := 1 + mini := 81 + minp := 0 + mon := '"-1" + nonf := '"1.05E-08" + opt := '"3.26E-08" + ste := '"2.0" + stao := 1 + stac := 1 + stoo := n + stoc := n + ver := 3 + for i in 1..n repeat + temp := STRCONC ((first y).1," ") + xlist := [temp,:xlist] + y := rest y + xstring := bcwords2liststring xlist + f := (first y).1 + y := rest y + for i in 1..ncnln repeat + temp := STRCONC ((first y).1," ") + cxlist := [temp,:cxlist] + y := rest y + cxstring := bcwords2liststring cxlist + for i in 1..(n+nclin+ncnln) repeat + temp := STRCONC ((first y).1," ") + bulist := [temp,:bulist] + y := rest y + buu := bcwords2liststring bulist + for i in 1..(n+nclin+ncnln) repeat + temp := STRCONC ((first y).1," ") + bllist := [temp,:bllist] + y := rest y + bll := bcwords2liststring bllist + for i in 1..nrowa repeat -- matrix A + for j in 1..n repeat + a := STRCONC((first y).1," ") + arrlist := [a,:arrlist] + y := rest y + amatlist := [:amatlist,arrlist] + arrlist := [] + amatlist := reverse amatlist + amatstr := bcwords2liststring [bcwords2liststring x for x in amatlist] + else + ver := STRCONC((first y).1," ") + y := rest y + stoc := STRCONC((first y).1," ") + y := rest y + stoo := STRCONC((first y).1," ") + y := rest y + stac := STRCONC((first y).1," ") + y := rest y + stao := STRCONC((first y).1," ") + y := rest y + ste := STRCONC((first y).1," ") + y := rest y + opt := STRCONC((first y).1," ") + y := rest y + nonf := STRCONC((first y).1," ") + y := rest y + mon := STRCONC((first y).1," ") + y := rest y + minp := STRCONC((first y).1," ") + y := rest y + mini := STRCONC((first y).1," ") + y := rest y + majp := STRCONC((first y).1," ") + y := rest y + maji := STRCONC((first y).1," ") + y := rest y + nolist := (first y).1 + lis := + nolist = '" nil" => '"false" + '"true" + y := rest y + dummy1 := first y + y := rest y + lint := STRCONC((first y).1," ") + y := rest y + linf := STRCONC((first y).1," ") + y := rest y + infs := STRCONC((first y).1," ") + y := rest y + infb := STRCONC((first y).1," ") + y := rest y + noHess := (first y).1 + hes := + noHess = '" nil" => '"false" + '"true" + y := rest y + dummy2 := first y + y := rest y + fun := STRCONC((first y).1," ") + y := rest y + fea := STRCONC((first y).1," ") + y := rest y + der := STRCONC((first y).1," ") + y := rest y + cra := STRCONC((first y).1," ") + y := rest y + for i in 1..n repeat + temp := STRCONC ((first y).1," ") + xlist := [temp,:xlist] + y := rest y + xstring := bcwords2liststring xlist + f := (first y).1 + y := rest y + for i in 1..ncnln repeat + temp := STRCONC ((first y).1," ") + cxlist := [temp,:cxlist] + y := rest y + cxstring := bcwords2liststring cxlist + for i in 1..(n+nclin+ncnln) repeat + temp := STRCONC ((first y).1," ") + bulist := [temp,:bulist] + y := rest y + buu := bcwords2liststring bulist + for i in 1..(n+nclin+ncnln) repeat + temp := STRCONC ((first y).1," ") + bllist := [temp,:bllist] + y := rest y + bll := bcwords2liststring bllist + for i in 1..nrowa repeat -- matrix A + for j in 1..n repeat + a := STRCONC((first y).1," ") + arrlist := [a,:arrlist] + y := rest y + amatlist := [:amatlist,arrlist] + arrlist := [] + amatlist := reverse amatlist + amatstr := bcwords2liststring [bcwords2liststring x for x in amatlist] + ntotl := n + nclin + ncnln + prefix := STRCONC("e04ucf(",STRINGIMAGE n,", ",STRINGIMAGE nclin,", ") + prefix := STRCONC(prefix,STRINGIMAGE ncnln,", ",STRINGIMAGE nrowa,", ") + prefix := STRCONC(prefix,STRINGIMAGE nrowj,", ",STRINGIMAGE nrowr,", ") + prefix:= STRCONC(prefix,amatstr,",[",bll,"],[",buu,"],",STRINGIMAGE liwork) + prefix := STRCONC(prefix,", ",STRINGIMAGE lwork,", ",STRINGIMAGE sta,", ") + prefix := STRCONC(prefix,cra,", ",STRINGIMAGE der,", ",fea,", ") + prefix := STRCONC(prefix,fun,", ",hes,", ",infb,", ",infs,", ",linf,", ") + prefix := STRCONC(prefix,lint,", ",lis,", ",STRINGIMAGE maji,", ") + prefix := STRCONC(prefix,STRINGIMAGE majp,", ",STRINGIMAGE mini,", ") + prefix := STRCONC(prefix,STRINGIMAGE minp,", ",mon,", ",nonf,", ",opt,", ") + prefix := STRCONC(prefix,ste,", ",STRINGIMAGE stao,", ",STRINGIMAGE stac) + prefix := STRCONC(prefix,", ",STRINGIMAGE stoo,", ",STRINGIMAGE stoc,", ") + middle:= STRCONC(STRINGIMAGE ver,",[[0 for i in 1..",STRINGIMAGE ntotl,"]]") + middle:=STRCONC(middle,"::Matrix Integer,[[0.0 for i in 1..",STRINGIMAGE n) + middle:=STRCONC(middle,"] for j in 1..",STRINGIMAGE nrowj,"],[[0.0 for i in 1..") + middle := STRCONC(middle,STRINGIMAGE ntotl,"]],[[0.0 for i in 1..") + middle := STRCONC(middle,STRINGIMAGE n,"] for j in 1..",STRINGIMAGE nrowr) + middle := STRCONC(middle,"],[",xstring,"],",STRINGIMAGE ifail) + end:=STRCONC(",((",cxstring,")::Vector Expression(Float))::ASP55(CONFUN),") + end := STRCONC(end,"((",f,")::Expression(Float))::ASP49(OBJFUN))") + linkGen STRCONC(prefix,middle,end) + + +e04ucfCopOut() == + htInitPage('"E04UCF - Unconstrained minimum, pre-conditioned conjugate gradient algorithm, function of several variables using 1st derivatives",nil) + htMakePage '( + (domainConditions + (isDomain PI (PositiveInteger))) + (text . "\blankline ") + (text . "{\center{\em Hyperdoc interface not available for warm start}}") + (text . "\newline ") + (text . "{\center{\em Please use the command line.}}")) + htMakeDoneButton('"Continue",'e04ucf) + htShowPage() + +e04ycf() == + htInitPage('"E04YCF - Covariance matrix for non-linear least-squares problem", nil) + htMakePage '( + (domainConditions + (isDomain EM $EmptyMode) + (isDomain PI (PositiveInteger)) + (isDomain F (Float))) + (text . "\windowlink{Manual Page}{manpageXXe04ycf} for this routine ") + (text . "\newline ") + (text . "\lispwindowlink{Browser operation page}{(|oPageFrom| '|e04ycf| '|NagOptimisationPackage|)} for this routine") + (text . "\newline \horizontalline ") + (text . "\newline ") + (text . "E04YCF returns estimates of elements of the variance-covariance ") + (text . "matrix of the estimated regression coefficients for a nonlinear ") + (text . "least-squares problem. ") + (text . "\blankline ") + (text . "This routine may be used following any of the nonlinear ") + (text . "least-squares routines E04FDF, E04GCF. It ") + (text . "requires the parameters {\it fumsq, s} and {\it v} supplied ") + (text . "by those routines. ") + (text . "\blankline ") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Elements of {\it c} returned, {\it job}: ") + (radioButtons job + (" 0" " The diagonal elements of {\it c} " jZero) + (" 1" " Elements of column {\it job} of {\it c} " jOne) + (" -1" " The whole {\it n} by {\it n} symmetric matrix " jMinus)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Number of observations, {\it m}: ") + (text . "\newline\tab{2} ") + (bcStrings (6 15 m PI)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Number of variables, {\it n}: ") + (text . "\newline\tab{2} ") + (bcStrings (6 3 n PI)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Sum of the squares of the residuals, {\it fsumsq}: ") + (text . "\newline\tab{2} ") + (bcStrings (30 "0.0082148773065789729" fsumsq F)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "First dimension of array {\it v}, {\it lv}:") + (text . "\newline\tab{2} ") + (bcStrings (6 3 lv PI)) + (text . "\blankline ") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Ifail value:") + (radioButtons ifail + ("" " -1, Print error messages" minusOne) + ("" " 1, Suppress error messages" one))) + htMakeDoneButton('"Continue", 'e04ycfSolve) + htShowPage() + +e04ycfSolve htPage == + temp := htpButtonValue(htPage,'job) + job := + temp = 'jMinus => '-1 + temp = 'jOne => '1 + '0 + m := + $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'm) + objValUnwrap htpLabelSpadValue(htPage, 'm) + n := + $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'n) + objValUnwrap htpLabelSpadValue(htPage, 'n) + fsumsq := htpLabelInputString(htPage, 'fsumsq) + lv := + $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'lv) + objValUnwrap htpLabelSpadValue(htPage, 'lv) + error := htpButtonValue(htPage,'ifail) + ifail := + error = 'one => '1 + '-1 + (n = 3 and lv = 3) => e04ycfDefaultSolve(htPage,job,m,fsumsq,ifail) + sList := + "append"/[fa(i) for i in 1..(n)] where fa(i) == + snam := INTERN STRCONC ('"s",STRINGIMAGE i) + [['bcStrings,[30, '"0.0", snam, 'F]]] + middle := ('"\blankline \menuitemstyle{}\tab{2} Enter the elements ") + middle := STRCONC(middle,'"of array {\it v(lv,n)}: \newline ") + vList := + "append"/[fb(i,n) for i in 1..lv] where fb(i,n) == + labelList := + "append"/[fc(i,j) for j in 1..n] where fc(i,j) == + vnam := INTERN STRCONC ('"v",STRINGIMAGE i,STRINGIMAGE j) + [['bcStrings,[15, 0, vnam, 'F]]] + prefix := ('"\newline ") + labelList := [['text,:prefix],:labelList] + vList := [['text,:middle],:vList] + equationPart := [ + '(domainConditions + (isDomain EM $EmptyMode) + (isDomain F (Float)) + (isDomain I (Integer))), + :sList,:vList] + page:= htInitPage('"E04YCF - Covariance matrix for non-linear least-squares problem", nil) + htSay '"\menuitemstyle{}\tab{2} " + htSay '"Enter the elements of the array {\it s(n)}: \newline " + htMakePage equationPart + htMakeDoneButton('"Continue",'e04ycfGen) + htpSetProperty(page,'job,job) + htpSetProperty(page,'n,n) + htpSetProperty(page,'m,m) + htpSetProperty(page,'fsumsq,fsumsq) + htpSetProperty(page,'lv,lv) + htpSetProperty(page,'ifail,ifail) + htpSetProperty(page,'inputArea, htpInputAreaAlist htPage) + htShowPage() + +e04ycfDefaultSolve(htPage,job,m,fsumsq,ifail) == + n := '3 + lv := '3 + page:= htInitPage('"E04YCF - Covariance matrix for non-linear least-squares problem", nil) + htMakePage '( + (domainConditions + (isDomain EM $EmptyMode) + (isDomain F (Float)) + (isDomain I (Integer))) + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Enter the elements of array {\it s(n)}: \newline ") + (bcStrings (30 "4.0965034571419325" s1 F)) + (bcStrings (30 "1.5949579400198182" s2 F)) + (bcStrings (30 "0.061258491120317927" s3 F)) + (text . "\newline ") + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2}") + (text . "Enter the elements of array {\it v(lv,n)}: \newline ") + -- not the correct values yet ! + (bcStrings (8 "0.9354" v11 F)) + (bcStrings (8 "-0.2592" v12 F)) + (bcStrings (8 "-0.2405" v13 F)) + (text . "\newline ") + (bcStrings (8 "0.3530" v21 F)) + (bcStrings (8 "0.6432" v22 F)) + (bcStrings (8 "0.6795" v23 F)) + (text . "\newline ") + (bcStrings (8 "-0.0215" v31 F)) + (bcStrings (8 "-0.7205" v32 F)) + (bcStrings (8 "0.6932" v33 F))) + htMakeDoneButton('"Continue",'e04ycfGen) + htpSetProperty(page,'job,job) + htpSetProperty(page,'n,n) + htpSetProperty(page,'m,m) + htpSetProperty(page,'fsumsq,fsumsq) + htpSetProperty(page,'lv,lv) + htpSetProperty(page,'ifail,ifail) + htpSetProperty(page,'inputArea, htpInputAreaAlist htPage) + htShowPage() + +e04ycfGen htPage == + job := htpProperty(htPage,'job) + n := htpProperty(htPage, 'n) + m := htpProperty(htPage, 'm) + fsumsq := htpProperty(htPage, 'fsumsq) + lv := htpProperty(htPage, 'lv) + ifail := htpProperty(htPage,'ifail) + alist := htpInputAreaAlist htPage + y := alist + for i in 1..(lv*n) repeat + temp := STRCONC ((first y).1," ") + vlist := [temp,:vlist] + y := rest y + vstring := bcwords2liststring vlist + for i in 1..n repeat + temp := STRCONC ((first y).1," ") + slist := [temp,:slist] + y := rest y + sstring := bcwords2liststring slist + prefix := STRCONC("e04ycf(",STRINGIMAGE job,",", STRINGIMAGE m,", ") + prefix := STRCONC(prefix,STRINGIMAGE n,",",fsumsq,", [") + prefix := STRCONC(prefix,sstring,"],", STRINGIMAGE lv,",[",vstring) + linkGen STRCONC(prefix,"],",STRINGIMAGE ifail,")") + + + + +@ +\eject +\begin{thebibliography}{99} +\bibitem{1} nothing +\end{thebibliography} +\end{document} |