aboutsummaryrefslogtreecommitdiff
path: root/src/interp/nag-e04.boot.pamphlet
diff options
context:
space:
mode:
Diffstat (limited to 'src/interp/nag-e04.boot.pamphlet')
-rw-r--r--src/interp/nag-e04.boot.pamphlet2520
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}