diff options
Diffstat (limited to 'src/interp/nag-e04.boot.pamphlet')
-rw-r--r-- | src/interp/nag-e04.boot.pamphlet | 2520 |
1 files changed, 0 insertions, 2520 deletions
diff --git a/src/interp/nag-e04.boot.pamphlet b/src/interp/nag-e04.boot.pamphlet deleted file mode 100644 index 7a63d8e1..00000000 --- a/src/interp/nag-e04.boot.pamphlet +++ /dev/null @@ -1,2520 +0,0 @@ -\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} |