{VERSION 6 0 "IBM INTEL NT" "6.0" } {USTYLETAB {CSTYLE "Maple Input" -1 0 "Courier" 0 1 255 0 0 1 0 1 0 0 1 0 0 0 0 1 }{CSTYLE "2D Math" -1 2 "Times" 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 1 }{CSTYLE "2D Comment" 2 18 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 } {CSTYLE "2D Output" 2 20 "" 0 1 0 0 255 1 0 0 0 0 0 0 0 0 0 1 } {CSTYLE "" -1 23 "Courier" 1 10 0 0 0 0 0 0 0 0 0 0 3 0 0 1 }{CSTYLE " Blue Emphasis" -1 256 "Times" 0 0 0 0 255 1 0 1 0 0 0 0 0 0 0 1 } {CSTYLE "Green Emphasis" -1 257 "Times" 1 12 0 128 0 1 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "Maroon Emphasis" -1 258 "Times" 1 12 128 0 128 1 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "Dark Red Emphasis" -1 259 "Times" 1 12 128 0 0 1 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 260 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 261 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 } {CSTYLE "" -1 262 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 263 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "Purple Emphasis" -1 264 "Times" 1 12 102 0 230 1 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "Red Emphasi s" -1 265 "Times" 1 12 102 0 230 1 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "Grey \+ Emphasis" -1 266 "Times" 1 12 96 52 84 1 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 267 "" 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 }{CSTYLE "" -1 268 "" 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 }{CSTYLE "" -1 269 "" 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 }{CSTYLE "" -1 270 "" 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 } {PSTYLE "Normal" -1 0 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 1 0 1 0 2 2 0 1 }{PSTYLE "Heading 1" -1 3 1 {CSTYLE "" -1 -1 "Times" 1 18 0 0 128 1 2 1 2 2 2 2 1 1 1 1 }1 1 0 0 8 4 3 0 3 0 2 2 0 1 }{PSTYLE "Heading 2" -1 4 1 {CSTYLE "" -1 -1 "Time s" 1 14 128 0 0 1 2 1 2 2 2 2 1 1 1 1 }1 1 0 0 8 2 1 0 1 0 2 2 0 1 } {PSTYLE "Maple Output" -1 11 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }3 3 0 0 0 0 1 0 1 0 2 2 0 1 }{PSTYLE "Maple Outpu t" -1 12 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 } 1 3 0 0 0 0 1 0 1 0 2 2 0 1 }{PSTYLE "Maple Plot" -1 13 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }3 1 0 0 0 0 1 0 1 0 2 2 0 1 }{PSTYLE "Bullet Item" -1 15 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 3 3 1 0 1 0 2 2 15 2 }{PSTYLE "Norm al" -1 256 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }3 1 0 0 0 0 1 0 1 0 2 2 0 1 }{PSTYLE "Normal" -1 257 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 1 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 1 0 1 0 2 2 0 1 }{PSTYLE "Normal" -1 258 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 1 0 1 0 2 2 0 1 }} {SECT 0 {PARA 3 "" 0 "" {TEXT -1 60 "Linear shooting method for two po int boundary value problems" }}{PARA 0 "" 0 "" {TEXT -1 37 "by Peter S tone, Nanaimo, B.C., Canada" }}{PARA 0 "" 0 "" {TEXT -1 20 "Version: \+ 10.10.2007" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 8 "restart;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 1 ";" }}}{SECT 1 {PARA 4 "" 0 "" {TEXT -1 5 "load " }{TEXT 0 7 "desolv e" }{TEXT -1 1 " " }}{PARA 0 "" 0 "" {TEXT -1 17 "The Maple m-file " } {TEXT 266 7 "DEsol.m" }{TEXT -1 32 " is required by this worksheet. " }}{PARA 0 "" 0 "" {TEXT -1 121 "It can be read into a Maple session by a command similar to the one that follows, where the file path gives \+ its location." }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 33 "read \"K:\\ \\Maple/procdrs/DEsol.m\";" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 1 ";" }}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 1 ";" }}}{SECT 1 {PARA 4 "" 0 "" {TEXT -1 57 "A numerical procedure for solving two poi nt BV problems: " }{TEXT 0 9 "desolveSH" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 1 ";" }}}{SECT 1 {PARA 4 " " 0 "" {TEXT -1 16 "desolveSH: usage" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }{TEXT 260 18 "Calling Sequence:\n" }} {PARA 0 "" 0 "" {TEXT 261 2 " " }{TEXT -1 22 " desolveSH( \{de,bc\} )" }}{PARA 0 "" 0 "" {TEXT -1 30 " desolveSH( \{de,bc\},y(x) )" }} {PARA 0 "" 0 "" {TEXT -1 30 " desolveSH( \{de,bc\}, rng )" }} {PARA 0 "" 0 "" {TEXT -1 36 " desolveSH( \{de,bc\}, y(x), rng )" } {TEXT 262 1 "\n" }{TEXT -1 0 "" }}{PARA 257 "" 0 "" {TEXT -1 14 "Param eters: " }}{PARA 0 "" 0 "" {TEXT -1 1 " " }}{PARA 0 "" 0 "" {TEXT 23 10 " de - " }{TEXT -1 91 " a 2nd order differential equatio n with the derivatives given in the form diff(y(x),x)," }}{PARA 0 "" 0 "" {TEXT -1 94 " (if x and y are the independ ent and dependent variables respectively)." }}{PARA 0 "" 0 "" {TEXT -1 58 " A typical example is a linear DE:" }} {PARA 0 "" 0 "" {TEXT -1 89 " diff( y(x),x$2) + f(x)*diff(y(x),x) + g(x)*y(x) = k(x)" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }{TEXT 23 10 " bc - \+ " }{TEXT -1 37 " boundary conditions of the form " }{XPPEDIT 18 0 "y(a)=alpha,y(b)=beta" "6$/-%\"yG6#%\"aG%&alphaG/-F%6#%\"bG%%betaG" } {TEXT -1 2 ". " }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 7 " " }{TEXT 23 8 "rng - " }{TEXT -1 91 " a range of values containing the boundary values a and b of the independent vari able. " }}{PARA 0 "" 0 "" {TEXT -1 9 " " }}{PARA 257 "" 0 " " {TEXT -1 12 "Description:" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 12 "The routine " }{TEXT 0 10 "desolveSH " }{TEXT -1 54 "gives a numerical solution to a boundary value problem" }} {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 256 "" 0 "" {TEXT -1 2 " " } {XPPEDIT 18 0 "d^2*y/(d*x^2) = F(x,y,dy/dx),y(a) = alpha,y(b) = beta; " "6%/*(%\"dG\"\"#%\"yG\"\"\"*&F%F(*$%\"xGF&F(!\"\"-%\"FG6%F+F'*&%#dyG F(%#dxGF,/-F'6#%\"aG%&alphaG/-F'6#%\"bG%%betaG" }{TEXT -1 2 ", " }} {PARA 0 "" 0 "" {TEXT -1 21 "by a shooting method." }}{PARA 0 "" 0 "" {TEXT -1 74 "Each shot is performed using a Runge-Kutta method with ad aptive step size." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 63 "A typical example is a linear differential equation of th e form" }}{PARA 256 "" 0 "" {XPPEDIT 18 0 "d^2*y/(d*x^2)+f(x);" "6#,&* (%\"dG\"\"#%\"yG\"\"\"*&F%F(*$%\"xGF&F(!\"\"F(-%\"fG6#F+F(" }{TEXT -1 1 " " }{XPPEDIT 18 0 "dy/dx+g(x)*y = k(x),y(a) = alpha,y(b) = beta;" " 6%/,&*&%#dyG\"\"\"%#dxG!\"\"F'*&-%\"gG6#%\"xGF'%\"yGF'F'-%\"kG6#F./-F/ 6#%\"aG%&alphaG/-F/6#%\"bG%%betaG" }{TEXT -1 2 ". " }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 55 "Both discrete and continu ous solutions can be obtained." }}{PARA 0 "" 0 "" {TEXT -1 128 "This s olution is in the form of procedure which can be evaluated in the inte rval [a,b] or throughout the specified range \"rng\". " }}{PARA 0 "" 0 "" {TEXT 256 1 " " }{TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 53 "Thi s function can have one of the two possible forms:" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 15 "" 0 "" {TEXT -1 253 "It can be a function wh ich performs a single Runge-Kutta step between the pre-computed data p oints in exactly the same way that the original points were computed. \+ \n6 new evaluations of the function F are required for each new functi on value calculated. " }}{PARA 15 "" 0 "" {TEXT -1 166 "It can use mor e extensive computed data so as to be able to perform what is essentia lly a Runge-Kutta step without the need for any new evaluations of the function F." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 96 "The derivative y '(x) of the solution y(x) can also be obtained in each of the previous formats." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }} {PARA 0 "" 0 "" {TEXT 263 8 "Options:" }{TEXT -1 1 "\n" }}{PARA 0 "" 0 "" {TEXT -1 18 "iterate=true/false" }}{PARA 0 "" 0 "" {TEXT -1 34 "T he option \"iterate=true\", forces " }{TEXT 0 9 "desolveSH" }{TEXT -1 100 " to use the iterative shooting method, which allows a choice of d erivatives for the first two shots." }}{PARA 0 "" 0 "" {TEXT -1 170 "O therwise, in the default mode:\"iterate=false\", the iterative method \+ is used only for non-linear DE's, and if the DE is linear, a standard \+ linear shooting method is used." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }} {PARA 0 "" 0 "" {TEXT -1 11 "init=u1..u2" }}{PARA 0 "" 0 "" {TEXT -1 185 "u1 and u2 are real constants giving the initial choices for the d erivative to be used for the first two shots when applying the iterati ve shooting method. The default is \"init = -1..1\"." }}{PARA 0 "" 0 " " {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 10 "maxshots=n" }}{PARA 0 " " 0 "" {TEXT -1 95 "This option controls the maximum number of shots \+ to be used for the iterative shooting method." }}{PARA 0 "" 0 "" {TEXT -1 29 "The default is \"maxshots=12\"." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 96 "info=0, 1, 2 , 3, true or false \nThis option allows the progress of the procedure to be monitored" }} {PARA 0 "" 0 "" {TEXT -1 178 "\"info=1\" prints information concerning the shooting method in the determination of the derivative needed as \+ an initial condition to achieve the desired second boundary condition. " }}{PARA 0 "" 0 "" {TEXT -1 93 "\"info=2\" prints the result of each \+ step for the final Runge-Kutta solution as it is computed." }}{PARA 0 "" 0 "" {TEXT -1 53 "\"info=3\" gives both of the above sets of inform ation." }}{PARA 0 "" 0 "" {TEXT -1 38 "\"info=true\" is equivalent to \+ \"info=1\"." }}{PARA 0 "" 0 "" {TEXT -1 39 "\"info=false\" is equivale nt to \"info=0\"." }}{PARA 0 "" 0 "" {TEXT -1 52 "The default is \"inf o=0\", which gives no information." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }} {PARA 0 "" 0 "" {TEXT 256 4 "Note" }{TEXT -1 50 ": The remaining optio ns are the same as those for " }{TEXT 0 9 "desolveK2" }{TEXT -1 1 "." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 31 "method= rk45/rk56/rk67/rk78/rk89" }}{PARA 0 "" 0 "" {TEXT -1 100 "This option \+ gives a choice between various adaptive Runge-Kutta methods. The defau lt method is rk67." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 109 "output=points/derivpts/rkstep/derivstep/step_pair/rkinte rp/derivinterp/points_pair/procedure_pair/interp_pair" }}{PARA 15 "" 0 "" {TEXT -1 33 "With the option \"output=points\", " }{TEXT 0 9 "des olveSH" }{TEXT -1 11 " returns a " }{TEXT 264 22 "discrete set of poin ts" }{TEXT -1 72 " corresponding to the steps originally computed by t he adaptive process." }}{PARA 15 "" 0 "" {TEXT -1 35 "With the option \+ \"output=derivpts\", " }{TEXT 0 9 "desolveSH" }{TEXT -1 11 " returns a " }{TEXT 264 23 "discrete sets of points" }{TEXT -1 114 " for the sol ution for the derivative of the solution.\n\"output=derivative_points \" is the same as \"output=derivpts\"." }}{PARA 15 "" 0 "" {TEXT -1 33 "With the option \"output=rkstep\", " }{TEXT 0 9 "desolveSH" } {TEXT -1 36 " returns a continuous solution as a " }{TEXT 264 18 "nume rical function" }{TEXT -1 161 " which requires a number of new evaluat ions of the function F for each new solution function value calculated .\n\"output=procedure\" is the same as \"output=rkstep\"." }}{PARA 15 "" 0 "" {TEXT -1 35 "With the option \"output=rkinterp\", " }{TEXT 0 9 "desolveSH" }{TEXT -1 27 " returns the solution as a " }{TEXT 264 18 "numerical function" }{TEXT -1 99 " which uses extensive pre-comput ed data to interpolate between the points of the discrete solution." } }{PARA 15 "" 0 "" {TEXT -1 36 "With the option \"output=derivstep\", \+ " }{TEXT 0 9 "desolveSH" }{TEXT -1 45 " returns the derivative of the \+ solution as a " }{TEXT 264 18 "numerical function" }{TEXT -1 110 " whi ch requires a number of new evaluations of the function F for each new solution function value calculated." }}{PARA 15 "" 0 "" {TEXT -1 38 " With the option \"output=derivinterp\", " }{TEXT 0 9 "desolveSH" } {TEXT -1 45 " returns the derivative of the solution as a " }{TEXT 264 18 "numerical function" }{TEXT -1 134 " which uses extensive pre-c omputed data to interpolate between the discrete points along the curv e for the derivative of the solution." }}{PARA 15 "" 0 "" {TEXT -1 38 "With the option \"output=points_pair\", " }{TEXT 0 9 "desolveSH" } {TEXT -1 11 " returns a " }{TEXT 264 4 "pair" }{TEXT -1 4 " of " } {TEXT 264 22 "discrete set of points" }{TEXT -1 101 " for both the sol ution and its derivative, which are computed simultaneously by the ada ptive process." }}{PARA 15 "" 0 "" {TEXT -1 72 "With either of the opt ions \"output=interp_pair\" and \"output=step_pair\", " }{TEXT 0 9 "de solveSH" }{TEXT -1 11 " returns a " }{TEXT 264 4 "pair" }{TEXT -1 4 " \+ of " }{TEXT 264 19 "numerical functions" }{TEXT -1 167 " for both the \+ solution and its derivative, which are constructed simultaneously.\n\" output=procedure_pair\" and \"output=proc_pair\" are equivalent to \"o utput=interp_pair\"." }}{PARA 0 "" 0 "" {TEXT -1 33 "The default is \" output=rkinterp\"." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 6 "hmax=h" }}{PARA 0 "" 0 "" {TEXT -1 22 "The maximum step-si ze." }}{PARA 0 "" 0 "" {TEXT -1 76 "The default is \"hmax=0.25\" when \+ method=rk45 and \"hmax=0.5\" when method=rk78." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 60 "hmin=h\nThe minimum step- size. The default is \"hmin=min(0.5*" }{XPPEDIT 18 0 "10^(-5);" "6#) \"#5,$\"\"&!\"\"" }{TEXT -1 2 ", " }{XPPEDIT 18 0 "hstart/2000;" "6#*& %'hstartG\"\"\"\"%+?!\"\"" }{TEXT -1 3 ")\"." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 8 "hstart=h" }}{PARA 0 "" 0 "" {TEXT -1 67 "The step-size for the first trial step. The default is \" hstart=0.1*" }{XPPEDIT 18 0 "10^ceil(-Digits/10);" "6#)\"#5-%%ceilG6#, $*&%'DigitsG\"\"\"F$!\"\"F," }{TEXT -1 2 "\"." }}{PARA 0 "" 0 "" {TEXT -1 38 "hstart must lie between hmin and hmax." }}{PARA 0 "" 0 " " {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 10 "maxsteps=n" }}{PARA 0 " " 0 "" {TEXT -1 189 "The maximum number of steps to be used. An error \+ message results if the maximum number of steps is reached before reach ing the end of the solution interval. The default is \"maxsteps=2000 \"." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 10 "to lerance=" }{XPPEDIT 18 0 "epsilon" "6#%(epsilonG" }{TEXT -1 1 " " }} {PARA 0 "" 0 "" {TEXT -1 166 "When the error control option is set to \+ \"relativeerror\", the step size is chosen adaptively to try to ensure that the relative error for each step is no greater than " }{XPPEDIT 18 0 "epsilon;" "6#%(epsilonG" }{TEXT -1 34 ". Other error control opt ions use " }{XPPEDIT 18 0 "epsilon;" "6#%(epsilonG" }{TEXT -1 106 " in an appropriate way. See \"errorcontrol\" for more information. The de fault is \"tolerance=10^(-Digits)\".\n" }}{PARA 0 "" 0 "" {TEXT -1 48 "errorcontrol=auto/absolute/relative/accumulative" }}{PARA 0 "" 0 "" {TEXT -1 37 "For the current setting of tolerance=" }{XPPEDIT 18 0 "ep silon" "6#%(epsilonG" }{TEXT -1 72 ", the step size is chosen to try t o ensure that when \"errorcontrol\" is:" }}{PARA 15 "" 0 "" {TEXT 267 4 "auto" }{TEXT -1 8 " - " }{XPPEDIT 18 0 "abs(y-y[k]) <= eps ilon*max(abs(y[k]),abs(u[k]*h),tiny);" "6#1-%$absG6#,&%\"yG\"\"\"&F(6# %\"kG!\"\"*&%(epsilonGF)-%$maxG6%-F%6#&F(6#F,-F%6#*&&%\"uG6#F,F)%\"hGF )%%tinyGF)" }{TEXT -1 9 " , where " }{XPPEDIT 18 0 "u[k];" "6#&%\"uG6# %\"kG" }{TEXT -1 37 " is the value of the derivative when " }{XPPEDIT 18 0 "x = x[k];" "6#/%\"xG&F$6#%\"kG" }{TEXT -1 1 "." }}{PARA 15 "" 0 "" {TEXT 270 8 "absolute" }{TEXT -1 8 " - " }{XPPEDIT 18 0 "abs(y -y[k]) <= epsilon*abs(max(y[max],tiny));" "6#1-%$absG6#,&%\"yG\"\"\"&F (6#%\"kG!\"\"*&%(epsilonGF)-F%6#-%$maxG6$&F(6#F3%%tinyGF)" }{TEXT -1 9 " , where " }{XPPEDIT 18 0 "y[max];" "6#&%\"yG6#%$maxG" }{TEXT -1 213 " is updated as the computation progresses, with an initial estima te provided by the option \"maxvalue\" if desired.\nThis error control option would be an appropriate choice if the solution is oscillatory \+ in nature.\n" }}{PARA 15 "" 0 "" {TEXT 268 8 "relative" }{TEXT -1 9 " \+ - " }{XPPEDIT 18 0 "abs(y-y[k]) <= epsilon*max(abs(y[k]),tiny); " "6#1-%$absG6#,&%\"yG\"\"\"&F(6#%\"kG!\"\"*&%(epsilonGF)-%$maxG6$-F%6 #&F(6#F,%%tinyGF)" }{TEXT -1 170 " \nThis is a general purpose choice except that problems would arise if y is close to 0. If this is likel y to happen it would be better to use the default option \"auto\".\n" }}{PARA 15 "" 0 "" {TEXT 269 12 "accumulative" }{TEXT -1 8 " - " }{XPPEDIT 18 0 "abs(y-y[k]) <= epsilon*max(abs(u[k]*h),tiny);" "6#1-%$ absG6#,&%\"yG\"\"\"&F(6#%\"kG!\"\"*&%(epsilonGF)-%$maxG6$-F%6#*&&%\"uG 6#F,F)%\"hGF)%%tinyGF)" }{TEXT -1 9 " , where " }{XPPEDIT 18 0 "u[k]; " "6#&%\"uG6#%\"kG" }{TEXT -1 37 " is the value of the derivative when " }{XPPEDIT 18 0 "x = x[k];" "6#/%\"xG&F$6#%\"kG" }{TEXT -1 94 ".\nTh is is the most stringent error control option, which attempts to contr ol the global error." }}{PARA 0 "" 0 "" {TEXT -1 10 "\"tiny\" is " } {XPPEDIT 18 0 "10^(-3*Digits);" "6#)\"#5,$*&\"\"$\"\"\"%'DigitsGF(!\" \"" }{TEXT -1 60 ", and is included to avoid the possibility of divisi on by 0." }}{PARA 0 "" 0 "" {TEXT -1 46 "The default value of \"errorc ontrol\" is \"auto\"." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 286 "In the cases \"output=derivpts/derivstep/derivinterp \", the error in the derivative y '(x) is controlled by formulas anala gous to those above. \nIn the cases \"output=points_pair/procedure_pai r/interp_pair\", both the solution and the derivative must satisfy the appropriate error criterion." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }} {PARA 0 "" 0 "" {TEXT -1 10 "maxvalue=a" }}{PARA 0 "" 0 "" {TEXT -1 239 "This is used for the maximum magnitude of the solution in the cas e where the \"errorcontrol\" option has been set to \"absolute\". See \+ the option \"error control. If no value is provided the maximum value \+ is updated as the computation procedes." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 10 "maxderiv=a" }}{PARA 0 "" 0 "" {TEXT -1 259 "This is used for the maximum magnitude of the derivative in th e case where the \"errorcontrol\" option has been set to \"absolute\". See the option \"error control. If no value is provided the maximum v alue of the derivative is updated as the computation procedes." }} {PARA 0 "" 0 "" {TEXT -1 0 "" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }} {PARA 0 "" 0 "" {TEXT 264 16 "How to activate:" }{TEXT 256 1 "\n" } {TEXT -1 158 "To make the procedures active open the subsections, plac e the cursor anywhere after the prompt [ > and press [Enter].\nYou ca n then close up the subsections. " }}{PARA 0 "" 0 "" {TEXT 264 4 "Note " }{TEXT -1 44 ": All three procedures should be loaded for " }{TEXT 0 9 "desolveSH" }{TEXT -1 9 " to work." }}{SECT 1 {PARA 4 "" 0 "" {TEXT -1 25 "desolveSH: implementation" }}{PARA 0 "" 0 "" {TEXT -1 0 " " }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 23154 "desolveSH := proc()\n \n local ff,vars,derivs,x,yx,y,u,w,df,dff,la,Options,mthd,rg,left ,right,\n dblrk,de,ic0,ic1,lsic,rsic,t0,prntflg,x1,y1,t1,x2,x3,yx2,d f1,df2,df3,\n diffs,newDigits,itrt,xx,tt,rghtprt,lftprt,outpt,revers e,saveDigits,\n lft,rght,fx,gx,kx,gxyu,hxyu,c,ub,vb,gw,a,b,alpha,bet a,aa,bb,cc,pol,\n w0,w1,w2,c0,c1,c2,linear,u1,u2,u3,e1,e2,d,h,i,maxi t,eps,nt,opts,rng,\n startopts,ee,arg2OK,yy,depvar,hasrng,nvars,orde r;\n\nreverse := proc(lst::list)\n local n,i;\n n := nops(lst);\n \+ [seq(lst[n-i],i=0..n-2)];\nend proc:\n \ndblrk := proc(lft::realco ns,rght::realcons,x0::realcons,\n lftprc::procedure,rghtprc::pro cedure)\n proc(x::realcons)\n local left,right,leftproc,rightpr oc,xx0,xx,saveDigits;\n options `Copyright 2002 by Peter Stone`; \n \n leftproc := lftprc;\n rightproc := rghtprc;\n \n \+ saveDigits := Digits;\n Digits := max(trunc(evalhf(Digits)),D igits+5);\n\n xx0 := evalf(x0);\n left := evalf(lft);\n \+ right := evalf(rght);\n xx := evalf(x);\n\n if xx<=right an d xx>=xx0 then\n Digits := saveDigits;\n return rightp roc(xx);\n elif xx>=left and xx<=xx0 then\n Digits := sav eDigits;\n return leftproc(xx);\n else\n error \" argument must be between %1 and %2\",left,right; \n end if;\n \+ end proc;\nend proc: # of dblrk\n\n # start of main procedure desolv eSH\n if nargs>0 then \n ff := args[1]\n else\n error \" at least one argument must be supplied\"\n end if;\n if type(ff,\{ set(equation),list(equation)\}) and nops(ff)=3 then\n ff := map(_ u -> if has(_u,D@@2) then convert(_u,diff) else _u end if,ff);\n \+ de := op(1,ff);\n ic0 := op(2,ff);\n ic1 := op(3,ff);\n \+ if not has(de,diff) then\n de := op(2,ff);\n ic0 := o p(1,ff);\n end if;\n if not has(de,diff) then\n de : = op(3,ff);\n ic1 := op(2,ff);\n end if;\n else\n \+ error \"the 1st argument, %1, is invalid .. it should be a set (or lis t) of 3 equations\",ff;\n end if;\n\n hasrng := false;\n depvar \+ := false;\n startopts := 2;\n if nargs>1 then\n ee := args[2] ;\n if type(ee,range) or type(ee,name=range) then\n rng : = ee;\n startopts := 3;\n hasrng := true;\n elif \+ not type(ee,equation) then\n arg2OK := true;\n if type (ee,function) and nops(ee)=1 then\n yy := op(0,ee);\n \+ xx := op(1,ee);\n if type(xx,name) and type(yy,name) \+ then\n startopts := 3;\n depvar := true;\n if nargs>2 then\n rng := args[3];\n \+ if type(rng,range) or type(rng,name=range) then\n \+ startopts := 4;\n hasrng := true;\n end if;\n end if;\n else\n \+ arg2OK := false;\n end if;\n else\n \+ arg2OK := false;\n end if;\n if not arg2OK t hen\n error \"the 2nd argument, %1, has incorrect form for \+ the dependent variable\",ee; \n end if;\n end if;\n en d if;\n \n # Check out the derivatives in the DE.\n derivs := in dets(de,'specfunc(anything,diff)');\n if derivs=\{\} then\n err or \"the 1st argument, %1, is invalid .. it should be a set (or list) \+ containing a differential equation and two boundary conditions\",ff;\n end if;\n nvars := nops(indets(derivs,name));\n if nvars<>1 the n\n if nvars=0 then\n error \"there is a problem with the independent variable occurring in the derivative(s)\";\n else\n \+ error \"there should only be one independent variable in the d ifferential equation\"\n end if;\n end if;\n nvars := nops(in dets(derivs,anyfunc(name)));\n if nvars<>1 then\n if nvars=0 th en\n error \"there is a problem with the dependent variable oc curring in the derivative(s)\"\n else\n error \"there sho uld only be one dependent variable in the differential equation\"\n \+ end if;\n end if;\n\n order := nops(derivs);\n if order=1 the n\n error \"the differential equation should have order 2\" \n \+ elif order>2 then\n error \"there are too many derivatives in th e differential equation .. note that the differential equation should \+ have order 2\"\n end if;\n\n (df2,df1) := selectremove(_U->has([op (_U)],diff),derivs);\n if nops(df2)<>1 or nops(df1)<>1 then \n \+ error \"the derivatives, %1, do not make sense\",derivs;\n end if; \+ \n (df2,df1) := (op(df2),op(df1));\n\n # Get the arguments in the \+ derivatives.\n if type(df1,function) and op(0,df1)=diff and nops(df1 )=2 then\n yx := op(1,df1);\n if not type(yx,anyfunc(name)) \+ then\n error \"the 1st argument %1, in the derivative, %2, is \+ invalid .. it should be the 'unknown' dependent variable\",yx,df1;\n \+ end if; \n x := op(2,df1);\n if not type(x,name) then\n \+ error \"the 2nd argument %1, in the derivative, %2, is invalid .. it should be the independent variable\",x,df1;\n end if; \n \+ else\n error \"the derivative, %1, does not make sense\",df1;\n \+ end if;\n\n if type(df2,function) and nops(df2)=2 and op(0,df2)='d iff' then\n (df3,x3) := selectremove(has,\{op(df2)\},diff);\n \+ if nops(df3)<>1 or nops(x3)<>1 then \n error \"the derivativ e, %1, does not make sense\",df2;\n end if;\n (df3,x3) := (o p(df3),op(x3));\n if type(df3,function) and nops(df3)=2 and op(0, df3)='diff' then\n yx2 := op(1,df3);\n if not type(yx2 ,anyfunc(name)) then\n error \"the 1st argument %1, in the \+ derivative, %2, is invalid .. it should be the 'unknown' dependent var iable\",yx2,df3;\n end if; \n x2 := op(2,df2);\n \+ if not type(x2,name) then\n error \"the 2nd argument %1, in the derivative, %2, is invalid .. it should be the independent var iable\",x2,df3;\n end if; \n if not x2=x3 then\n \+ error \"the 2nd arguments, %1 and %2 in the derivatives %3 and % 4 should be the same\",x2,x3,df2,df3;\n end if;\n else\n \+ error \"the derivative, %1, does not make sense\",df3;\n \+ end if\n else\n error \"the derivative, %1, does not make sense \",df2;\n end if;\n\n # Arguments in the 2 derivatives must be the same.\n if x2<>x or yx2<>yx then\n error \"the differential eq uation contains inconsistent arguments\"\n end if;\n\n y := op(0,y x);\n vars := indets(de,name);\n if member(y,vars) then\n err or \"%1 and %2 cannot both appear in the differential equation\",yx,y; \n end if;\n if op(1,yx)<>x then\n error \"the derivatives do not make sense\"\n end if;\n\n # Check for linearity\n linear : = true;\n\n # Form a polynomial by substituting for the derivatives. \023\n pol:= subs(yx=w0,subs(diff(yx,x)=w1,\n subs( diff(yx,x$2)=w2,de)));\n pol := w2-expand(rhs(isolate(pol,w2)));\n \+ if degree(pol,w2)<>1 or not member(degree(pol,w1),\{0,1\})\n \+ or not member(degree(pol,w0),\{0,1\}) then \n linea r := false;\n goto(555);\n end if;\n \n # Coefficients of D E are polynomial coefficients.\n c2 := traperror(coeff(pol,w1,1));\n if c2=lasterror or member(w0,indets(c2,name)) or\n \+ member(w2,indets(c2,name)) then\n linear := false;\n \+ goto(555);\n end if;\n c1 := traperror(coeff(pol,w0,1));\n if c 1=lasterror or member(w1,indets(c1,name))\n or member(w2,indets(c 1,name)) then\n linear := false;\n goto(555);\n end if;\n \+ c0 := traperror(coeff(pol,w1,0));\n if c0=lasterror then linear : = false end if;\n kx := simplify(w2+c1*w0-c0);\n if member(w0,inde ts(kx,name)) or member(w2,indets(kx,name)) then\n linear := false ;\n goto(555);\n end if;\n\n 555:\n if linear then\n f x := simplify(c2);\n gx := simplify(c1);\n\n gxyu := kx-fx*u -gx*y; # non-homogeneous case\n hxyu := -fx*u-gx*y; # homogeneous case\n else \n # Isolate the 2nd derivative.\023\n g w := subs(yx=y,subs(diff(yx,x)=u,\n su bs(diff(yx,x$2)=w,de)));\n gxyu := expand(rhs(isolate(gw,w)));\n \+ if indets(gxyu,'specfunc(anything,RootOf)')<>\{\} then\n \+ error \"cannot isolate the 2nd derivative\"\n end if;\n end if; \n\n if depvar then \n if x<>xx or y<>yy then\n error \+ \"cannot solve the ODE for %1\",ee;\n end if;\n end if;\n\n # Get the boundary values.\n lsic := lhs(ic0);\n if type(lsic,funct ion) and op(0,lsic)=y and nops(lsic)=1 \n and type(op(1,lsic),algebraic) then\n a := op(1,lsic);\n else\n \+ error \"a boundary condition is not decipherable\"\n end if;\n \+ if not type(a,realcons) or has(a,infinity) then\n error \"boundar y condition values for independent variable must be finite real consta nts\"\n end if;\n rsic := rhs(ic0);\n if type(rsic,realcons) and not has(rsic,infinity) then\n alpha := rsic;\n else\n err or \"boundary condition values for dependent variable must be finite r eal constants\"\n end if;\n lsic := lhs(ic1);\n if type(lsic,fun ction) and op(0,lsic)=y and nops(lsic)=1 \n a nd type(op(1,lsic),algebraic) then\n b := op(1,lsic);\n else\n \+ error \"a boundary condition is not decipherable\"\n end if;\n \+ if not type(b,realcons) or has(b,infinity) then\n error \"bound ary condition values for independent variable must be finite real cons tants\"\n end if;\n rsic := rhs(ic1);\n if type(rsic,realcons) a nd not has(rsic,infinity) then\n beta := rsic;\n else\n er ror \"boundary condition values for dependent variable must be finite \+ real constants\"\n end if;\n\n saveDigits := Digits;\n newDigits := max(trunc(evalhf(Digits)),Digits+5);\n Digits := newDigits;\n\n \+ a := evalf(a);\n b := evalf(b);\n alpha := evalf(alpha);\n bet a := evalf(beta):\n Digits := saveDigits;\n\n if signum(a-b)=0 the n\n error \"impossible boundary conditions\"\n end if;\n if s ignum(a-b)>0 then # swap over\n tt := b; b := a; a := tt;\n \+ tt := beta; beta := alpha; alpha := tt;\n end if;\n\n rg := a..b; \n if hasrng then\n if type(rng,name=realcons..realcons)\n \+ or type(rng,realcons..realcons) then\n if type(rn g,`=`) then\n xx := op(1,rng);\n if not type(xx, name) or xx<>x then\n error \"left side of equation for \+ range, %1, must be the independent variable\",x;\n end if; \n rg := op(2,rng);\n else\n rg := rng; \n end if;\n else\n error \"solution range is inv alid\"\n end if;\n end if;\n lft := op(1,rg);\n rght := op( 2,rg);\n\n left := evalf(lft,newDigits);\n right := evalf(rght,new Digits);\n\n if signum(right-left)<0 then # swap over\n tt := \+ left; left := right; right := tt; \n end if;\n if signum(a-right) >0 or signum(a-left)<0 or \n signum(b-right)>0 or s ignum(b-left)<0 then\n error \"range for the solution must contai n the boundary values of the independent variable\"\n end if; \n\n \+ mthd := 'rk67';\n outpt := 'rkinterp';\n nt := -1.0..1.0;\n max it := 15;\n prntflg := 0;\n Options :=[];\n opts := Options;\n \+ if nargs>=startopts then\n Options := [args[startopts..nargs]]; \n if not type(Options,list(equation)) then\n error \"eac h optional argument must be an equation\"\n end if;\n if has option(Options,'method','mthd','Options') then\n if not member (mthd,\{'rk45','rk56','rk67','rk78','rk89'\}) then\n error \+ \"\\\"method\\\" must be 'rk45','rk56','rk67','rk78' or 'rk89\"\n \+ end if;\n end if;\n if hasoption(Options,'init','nt','Op tions') then\n if not type(nt,realcons..realcons) or has(nt,in finity) then\n error \"\\\"init\\\" must be a range of fini te real constants\"\n end if;\n end if;\n if hasopti on(Options,'maxshots','maxit','Options') then\n if not type(ma xit,posint) then\n error \"\\\"maxshots\\\" must be a posit ive integer\"\n end if;\n end if;\n if hasoption(Opt ions,'iterate','itrt','Options') then\n if itrt then linear := false end if;\n end if;\n if hasoption(Options,'info','prnt flg','Options') then\n if not member(prntflg,\{0,1,2,3,true,fa lse\}) then\n error \"\\\"info\\\" must be 0 <-> false,1 <- > true, 2 or 3\"\n end if;\n if prntflg=true then prnt flg := 1 end if;\n if prntflg=false then prntflg := 0 end if; \n end if;\n opts := remove(U_->evalb(op(1,U_)='output'),Opt ions); # Options for shots\n if hasoption(Options,'output','outpt ') then\n if not member(outpt,\{'points','procedure','procedur e_pair','proc_pair',\n 'derivative_points','derivpts','po ints_pair','rkstep','derivstep',\n 'step_pair','rkinterp' ,'derivinterp','interp_pair','endpt'\}) then\n error \"\\\" output\\\" must be 'points','procedure','procedure_pair',proc_pair','d erivative_points','derivpts','points_pair','rkstep','derivstep','step_ pair','rkinterp','derivinterp','interp_pair' or 'endpt'\"\n en d if;\n if outpt='procedure' then\n outpt := 'rkint erp';\n Options := remove(U_->evalb(op(1,U_)='output'),Opti ons);\n Options := [op(Options),'output'='rkinterp'];\n \+ elif outpt='procedure_pair' or outpt='proc_pair' then\n \+ outpt := 'interp_pair';\n Options := remove(U_->evalb(op( 1,U_)='output'),Options);\n Options := [op(Options),'output '='interp_pair'];\n elif outpt='derivative_points' then\n \+ outpt := 'derivpts';\n Options := remove(U_->evalb(o p(1,U_)='output'),Options);\n Options := [op(Options),'outp ut'='derivpts'];\n end if;\n end if;\n end if;\n\n if linear then\n # Determine init value of deriv by linear shooting method.\n if mthd='rk45' then\n ub := de2rk45(gxyu,x=a.. b,y=alpha,u=0,op(opts),output=endpt);\n elif mthd='rk56' then\n \+ ub := de2rk56(gxyu,x=a..b,y=alpha,u=0,op(opts),output=endpt);\n elif mthd='rk67' then\n ub := de2rk67(gxyu,x=a..b,y=alph a,u=0,op(opts),output=endpt);\n elif mthd='rk78' then\n u b := de2rk78(gxyu,x=a..b,y=alpha,u=0,op(opts),output=endpt);\n el se # mthd='rk89'\n ub := de2rk89(gxyu,x=a..b,y=alpha,u=0,op(op ts),output=endpt); \n end if;\n if prntflg=1 or prntflg=3 t hen\n print(`Using linear shooting method.`);\n print( `Shot, with initial derivative 0, has end value -> `,evalf(ub));\n \+ end if;\n if mthd='rk45' then \n vb := de2rk45(hxyu,x =a..b,y=0,u=1,op(opts),output=endpt);\n elif mthd='rk56' then \+ \n vb := de2rk56(hxyu,x=a..b,y=0,u=1,op(opts),output=endpt);\n elif mthd='rk67' then \n vb := de2rk67(hxyu,x=a..b,y=0 ,u=1,op(opts),output=endpt);\n elif mthd='rk78' then \n \+ vb := de2rk78(hxyu,x=a..b,y=0,u=1,op(opts),output=endpt);\n else # mthd='rk89'\n vb := de2rk89(hxyu,x=a..b,y=0,u=1,op(opts),ou tput=endpt);\n end if;\n if prntflg=1 or prntflg=3 then\n \+ print(`Homogeneous DE, with initial value 0 and derivative 1, ha s end value -> `,evalf(vb));\n end if;\n\n if vb=0 then\n \+ error \"linear shooting method failed because end-point of homog eneous solution is zero\"\n end if;\n\n c := evalf((beta-ub) /vb,newDigits); # init value of derivative\n if prntflg=1 or prnt flg=3 then\n print(`Initial derivative for required solution - > `,evalf(c));\n end if;\n else # linear=false\n u1 := eva lf(op(1,nt),newDigits);\n u2 := evalf(op(2,nt),newDigits);\n \+ # Determine init value of deriv by shooting method.\n if mthd='r k45' then\n e1:=de2rk45(gxyu,x=a..b,y=alpha,u=u1,op(opts),outp ut=endpt);\n elif mthd='rk56' then\n e1:=de2rk56(gxyu,x=a ..b,y=alpha,u=u1,op(opts),output=endpt);\n elif mthd='rk67' then \n e1:=de2rk67(gxyu,x=a..b,y=alpha,u=u1,op(opts),output=endpt) ;\n elif mthd='rk78' then\n e1:=de2rk78(gxyu,x=a..b,y=alp ha,u=u1,op(opts),output=endpt);\n else # mthd='rk89'\n e1 :=de2rk89(gxyu,x=a..b,y=alpha,u=u1,op(opts),output=endpt);\n end \+ if;\n if prntflg=1 or prntflg=3 then\n print(`Using itera tive shooting method.`);\n print(`Shot 1, with initial derivat ive`,evalf(u1),`has end value -> `,evalf(e1));\n end if;\n i f mthd='rk45' then\n e2:=de2rk45(gxyu,x=a..b,y=alpha,u=u2,op(o pts),output=endpt);\n elif mthd='rk56' then\n e2:=de2rk56 (gxyu,x=a..b,y=alpha,u=u2,op(opts),output=endpt);\n elif mthd='rk 67' then\n e2:=de2rk67(gxyu,x=a..b,y=alpha,u=u2,op(opts),outpu t=endpt);\n elif mthd='rk78' then\n e2:=de2rk78(gxyu,x=a. .b,y=alpha,u=u2,op(opts),output=endpt);\n else # mthd='rk89'\n \+ e2:=de2rk89(gxyu,x=a..b,y=alpha,u=u2,op(opts),output=endpt);\n \+ end if;\n if prntflg=1 or prntflg=3 then\n print(`Sho t 2, with initial derivative`,evalf(u2),`has end value -> `,evalf(e2)) ;\n end if;\n eps := Float(1,-Digits);\n\n # Use secant method\n for i from 3 to maxit do\n d := e2-e1;\n \+ if d = 0 then\n error \"shooting method failed because en d-points of two distinct shots coincided\"\n end if;\n \+ h := evalf((beta-e2)*(u2-u1)/d,newDigits);\n u3 := evalf(u2+h ,newDigits);\n u1 := u2;\n e1 := e2;\n u2 := u 3;\n if abs(h) `,evalf(e2));\n end if;\n if \+ abs(e2-beta)1 then prntflg := true else prntflg := false end if;\n\n if mth d='rk45' then\n if signum(a-lft)=0 then\n return de2rk45( gxyu,x=a..rght,y=alpha,u=c,op(Options),info=prntflg);\n elif sign um(a-rght)=0 then\n return de2rk45(gxyu,x=a..lft,y=alpha,u=c,o p(Options));\n else\n rghtprt := de2rk45(gxyu,x=a..rght, y=alpha,u=c,op(Options));\n lftprt := de2rk45(gxyu,x=a..lft,y= alpha,u=c,op(Options));\n if member(outpt,\{'rkstep','derivste p','rkinterp','derivinterp'\}) then\n return dblrk(lft,rght ,a,lftprt,rghtprt);\n elif outpt='step_pair' or outpt='interp_ pair' then\n return dblrk(lft,rght,a,op(1,[lftprt]),op(1,[r ghtprt])),\n dblrk(lft,rght,a,op(2,[lftprt]),op(2,[rghtp rt]));\n elif outpt='points' or outpt='derivpts' then\n \+ return [op(reverse(lftprt)),op(rghtprt)];\n else # outpt= points_pair\n return [op(reverse(op(1,[lftprt]))),op(op(1,[ rghtprt]))],\n [op(reverse(op(2,[lftprt]))),op(op(2,[rgh tprt]))];\n end if;\n end if;\n elif mthd='rk56' then\n if signum(a-lft)=0 then\n return de2rk56(gxyu,x=a..rght, y=alpha,u=c,op(Options))\n elif signum(a-rght)=0 then\n r eturn de2rk56(gxyu,x=a..lft,y=alpha,u=c,op(Options))\n else\n \+ rghtprt := de2rk56(gxyu,x=a..rght,y=alpha,u=c,op(Options));\n \+ lftprt := de2rk56(gxyu,x=a..lft,y=alpha,u=c,op(Options));\n \+ if member(outpt,\{'rkstep','derivstep','rkinterp','derivinterp'\}) \+ then\n return dblrk(lft,rght,a,lftprt,rghtprt);\n e lif outpt='step_pair' or outpt='interp_pair' then\n return \+ dblrk(lft,rght,a,op(1,[lftprt]),op(1,[rghtprt])),\n dblr k(lft,rght,a,op(2,[lftprt]),op(2,[rghtprt]));\n elif outpt='po ints' or outpt='derivpts' then\n return [op(reverse(lftprt) ),op(rghtprt)];\n else # outpt='points_pair'\n retu rn [op(reverse(op(1,[lftprt]))),op(op(1,[rghtprt]))],\n \+ [op(reverse(op(2,[lftprt]))),op(op(2,[rghtprt]))];\n end if;\n end if;\n elif mthd='rk67' then\n if signum(a-lft)=0 then \n return de2rk67(gxyu,x=a..rght,y=alpha,u=c,op(Options))\n \+ elif signum(a-rght)=0 then\n return de2rk67(gxyu,x=a..lft,y =alpha,u=c,op(Options))\n else\n rghtprt := de2rk67(gxyu, x=a..rght,y=alpha,u=c,op(Options));\n lftprt := de2rk67(gxyu,x =a..lft,y=alpha,u=c,op(Options));\n if member(outpt,\{'rkstep' ,'derivstep','rkinterp','derivinterp'\}) then\n return dblr k(lft,rght,a,lftprt,rghtprt);\n elif outpt='step_pair' or outp t='interp_pair' then\n return dblrk(lft,rght,a,op(1,[lftprt ]),op(1,[rghtprt])),\n dblrk(lft,rght,a,op(2,[lftprt]),o p(2,[rghtprt]));\n elif outpt='points' or outpt='derivpts' the n\n return [op(reverse(lftprt)),op(rghtprt)];\n els e # outpt='points_pair'\n return [op(reverse(op(1,[lftprt]) )),op(op(1,[rghtprt]))],\n [op(reverse(op(2,[lftprt]))), op(op(2,[rghtprt]))];\n end if;\n end if;\n elif mthd=' rk78' then\n if signum(a-lft)=0 then\n return de2rk78(gxy u,x=a..rght,y=alpha,u=c,op(Options))\n elif signum(a-rght)=0 then \n return de2rk78(gxyu,x=a..lft,y=alpha,u=c,op(Options))\n \+ else\n rghtprt := de2rk78(gxyu,x=a..rght,y=alpha,u=c,op(Opti ons));\n lftprt := de2rk78(gxyu,x=a..lft,y=alpha,u=c,op(Option s));\n if member(outpt,\{'rkstep','derivstep','rkinterp','deri vinterp'\}) then\n return dblrk(lft,rght,a,lftprt,rghtprt); \n elif outpt='step_pair' or outpt='interp_pair' then\n \+ return dblrk(lft,rght,a,op(1,[lftprt]),op(1,[rghtprt])),\n \+ dblrk(lft,rght,a,op(2,[lftprt]),op(2,[rghtprt]));\n el if outpt='points' or outpt='derivpts' then\n return [op(rev erse(lftprt)),op(rghtprt)];\n else # outpt='points_pair'\n \+ return [op(reverse(op(1,[lftprt]))),op(op(1,[rghtprt]))],\n \+ [op(reverse(op(2,[lftprt]))),op(op(2,[rghtprt]))];\n \+ end if;\n end if;\n else # mthd=rk89\n if signum(a-lft) =0 then\n return de2rk89(gxyu,x=a..rght,y=alpha,u=c,op(Options ))\n elif signum(a-rght)=0 then\n return de2rk89(gxyu,x=a ..lft,y=alpha,u=c,op(Options))\n else\n rghtprt := de2rk8 9(gxyu,x=a..rght,y=alpha,u=c,op(Options));\n lftprt := de2rk89 (gxyu,x=a..lft,y=alpha,u=c,op(Options));\n if member(outpt,\{' rkstep','derivstep','rkinterp','derivinterp'\}) then\n retu rn dblrk(lft,rght,a,lftprt,rghtprt);\n elif outpt='step_pair' \+ or outpt='interp_pair' then\n return dblrk(lft,rght,a,op(1, [lftprt]),op(1,[rghtprt])),\n dblrk(lft,rght,a,op(2,[lft prt]),op(2,[rghtprt]));\n elif outpt='points' or outpt='derivp ts' then\n return [op(reverse(lftprt)),op(rghtprt)];\n \+ else # outpt='points_pair'\n return [op(reverse(op(1,[l ftprt]))),op(op(1,[rghtprt]))],\n [op(reverse(op(2,[lftp rt]))),op(op(2,[rghtprt]))];\n end if;\n end if;\n end \+ if; \nend proc:" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}}{SECT 1 {PARA 4 "" 0 "" {TEXT -1 23 "de2rk45: implementation" }}{PARA 0 "" 0 "" {TEXT -1 93 "\nThe code is adapted from \"Numerical Recipes in C \", Cambrid ge University Press, pp 714 -722." }}{PARA 0 "" 0 "" {TEXT -1 130 "The procedure uses constants from: \"Numerical Methods for Differential E quations\", by John R. Dormand, CRC Press, pages 84 & 110." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "rungk45" {MPLTEXT 1 0 21415 "de2rk45 := proc(gxyu::algebraic,xrng::(name=realcons..realcon s),\n iy::(name=realcons),iu::(name=realcons)) \n \n loc al gn,soln,soln2,xk,yk,k,xend,xstart,h,safety,c2,c3,c4,c5,c8,\n c9,a 21,a31,a32,a41,a42,a43,a51,a52,a53,a54,a61,a62,a63,a64,a65,\n a71,a7 3,a74,a75,a76,a81,a83,a84,a85,a86,a87,a91,a93,a94,a95,a96,\n a97,f1, f2,f3,f4,f5,f6,f7,f8,f9,g1,g2,g3,g4,g5,g6,g7,g8,g9,b1,b3,\n b4,b5,b6 ,i,e1,e2,e3,e4,e5,e6,e7,yout,errst,errst2,xrg,u0,uk,uout,\n maxstps, tiny,scale,scale2,err,htemp,hnext,eps,stdstep,drvstep,\n Options,prn tflg,t,tt,errcntl,maxval,maxval2,maxtemp,maxtemp2,x,y,u,\n errc,x0,y 0,xn,outpt,hmx,hmn,hstrt,sgn,maxstepsize,laststep,\n minstepsize,inc ,finished,rk45step,rk45interp,ff,gg,saveDigits,\n errcontrol,pshrink ,pgrow,eqns;\n\nrk45interp := proc(x_rk45interp::realcons)\n local e 2,e3,e4,e5,e6,e7,s,t1,t2,t3,sm,sms,ss,\n b1,b3,b4,b5,b6,b7,b8,b9,xF, xS,yF,f1,f3,f4,f5,f6,\n f7,f8,f9,t,jF,jM,jS,n,h,data,xx,ys,saveDigit s;\n options `Copyright 2004 by Peter Stone`;\n \n data := SOLN_ ;\n saveDigits := Digits;\n Digits := max(trunc(evalhf(Digits)),Di gits+5);\n xx := evalf(x_rk45interp);\n n := nops(data);\n if (d ata[1,1]data[n,1] or xxdata[1,1])) then\n error \+ \"independent variable is outside the interpolation interval: %1\",eva lf(data[1,1])..evalf(data[n,1]);\n end if;\n\n e2 := e2_;\n e3 : = e3_;\n e4 := e4_;\n e5 := e5_;\n e6 := e6_;\n e7 := e7_;\n\n # Perform a binary search for the interval containing x.\n n := n ops(data);\n jF := 0;\n jS := n+1;\n\n if data[1,1]1 do\n jM := trunc((jF+jS)/2);\n i f xx>=data[jM,1] then jF := jM else jS := jM end if;\n end do;\n \+ if jM = n then jF := n-1; jS := n end if;\n else\n while j S-jF>1 do\n jM := trunc((jF+jS)/2);\n if xx<=data[jM,1] \+ then jF := jM else jS := jM end if;\n end do;\n if jM = n th en jF := n-1; jS := n end if;\n end if;\n \n # Get the data neede d from the list.\n xF := data[jF,1];\n xS := data[jS,1];\n yF := data[jF,2];\n f1 := data[jF,3];\n f3 := data[jF,5];\n f4 := dat a[jF,6];\n f5 := data[jF,7];\n f6 := data[jF,8];\n f7 := data[jF ,9];\n f8 := data[jF,10];\n f9 := data[jF,11];\n\n # Calculate t he parameters.\n h := xx-xF;\n s := h/(xS-xF);\n t1 := (-1710+(3 104+(-2439+696*s)*s)*s)*s;\n t2 := (-6+(32+(-51+24*s)*s)*s)*s;\n t 3 := 7+(-31+32*s)*s;\n sm := s-1;\n sms := sm*s;\n ss := sms*sm; \n b1:= t1/384+1;\n b3 := t2*e2;\n b4 := t2*e3;\n b5 := t2*e4; \n b6 := t2*e5;\n b7 := sms*t3/8;\n b8 := ss*e6;\n b9 := ss*(3 *s-1)*e7;\n \n # Calculate the interpolated y value.\n t := b1*f 1 + b3*f3 + b4*f4 + b5*f5 + b6*f6 + b7*f7 + b8*f8 + b9*f9;\n ys := y F + t*h;\n Digits := saveDigits;\n evalf(ys);\nend proc: # of rk45 interp\n \nrk45step := proc(x_rk45step::realcons)\n local c2,c3,c4 ,c5,a21,a31,a32,a41,a42,a43,a51,a52,a53,a54,a61,a62,\n a63,a64,a65,f 1,f2,f3,f4,f5,f6,g1,g2,g3,g4,g5,g6,b1,b3,b4,b5,b6,\n ff,gg,xk,yk,uk, jF,jM,jS,n,h,data,gn,xx,ys,us,saveDigits;\n options `Copyright 2004 \+ by Peter Stone`;\n \n data := SOLN_;\n \n saveDigits := Digits ;\n Digits := max(trunc(evalhf(Digits)),Digits+5);\n\n # procedure to evaluate the 2nd derivative as a function of x,y and u=dy/dx\n g n := proc(X_,Y_,U_)\n local val; \n val := traperror(evalf(G XYU_));\n if val=lasterror or not type(val,numeric) then\n \+ error \"evaluation of 2nd derivative failed when x = %1, y = %2, and the derivative u = %3\",evalf(X_,saveDigits),evalf(Y_,saveDigits),eva lf(U_,saveDigits);\n end if;\n val;\n end proc;\n\n xx : = evalf(x_rk45step);\n n := nops(data);\n\n if (data[1,1]data[n,1] or xxdata[1,1])) then\n error \"independent variab le is outside the interpolation interval: %1\",evalf(data[1,1])..evalf (data[n,1]);\n end if;\n\n c2 := 0.2; c3 := 0.3; c4 := 0.8; c5 := \+ c5_;\n a21 := c2; a31 := 0.075; a32 := 0.225; a41 := a41_; a42 := a4 2_; a43 := a43_;\n a51 := a51_; a52 := a52_; a53 := a53_; a54 := a54 _;\n a61 := a61_; a62 := a62_; a63 := a63_; a64 := a64_; a65 := a65_ ;\n b1 := b1_; b3 := b3_; b4 := b4_; b5 := b5_; b6 := b6_;\n\n # P eform a binary search for the interval containing x.\n n := nops(dat a);\n jF := 0;\n jS := n+1;\n\n if data[1,1]1 do\n jM := trunc((jF+jS)/2);\n if xx>=d ata[jM,1] then jF := jM else jS := jM end if;\n end do;\n if jM = n then jF := n-1; jS := n end if;\n else\n while jS-jF>1 \+ do\n jM := trunc((jF+jS)/2);\n if xx<=data[jM,1] then jF := jM else jS := jM end if;\n end do;\n if jM = n then jF : = n-1; jS := n end if;\n end if;\n \n # Get the data needed from \+ the list.\n xk := data[jF,1];\n yk := data[jF,2];\n uk := data[j F,3];\n\n # Do one step with step-size ..\n h := xx-xk;\n\n f1 : = uk;\n g1 := gn(xk,yk,uk);\n \n ff := a21*f1;\n gg := a21* g1;\n f2 := uk + gg*h;\n g2 := gn(xk + c2*h,yk + ff*h,f2);\n\n f f := a31*f1 + a32*f2;\n gg := a31*g1 + a32*g2;\n f3 := uk + gg*h; \n g3 := gn(xk + c3*h,yk + ff*h,f3); \n \n ff := a41*f1 + \+ a42*f2 + a43*f3;\n gg := a41*g1 + a42*g2 + a43*g3;\n f4 := uk + gg *h;\n g4 := gn(xk + c4*h,yk + ff*h,f4);\n \n ff := a51*f1 + a52*f2 + a53*f3 + a54*f4;\n gg := a51*g1 + a52*g2 + a53*g3 + a54*g4;\n f 5 := uk + gg*h;\n g5 := gn(xk + c5*h,yk + ff*h,f5);\n\n ff := a61* f1 + a62*f2 + a63*f3 + a64*f4 + a65*f5;\n gg := a61*g1 + a62*g2 + a6 3*g3 + a64*g4 + a65*g5;\n f6 := uk + gg*h;\n\n if DERIV_ then\n \+ g6 := gn(xk + h,yk + ff*h,f6);\n us := uk + (b1*g1 + b3*g3 + b 4*g4 + b5*g5 + b6*g6)*h;\n Digits := saveDigits;\n return ev alf(us);\n else\n ys := yk + (b1*f1 + b3*f3 + b4*f4 + b5*f5 + b 6*f6)*h;\n Digits := saveDigits;\n return evalf(ys);\n end if;\nend proc: # of rk45step\n \n # start of main procedure\n x := op(1,xrng);\n y := op(1,iy);\n u := op(1,iu);\n if not type( indets(gxyu,name) minus \{x,y,u\},set(realcons)) then\n error \"t he 1st argument, %1, must depend only on the variables %2, %3 and %4\" ,gxyu,x,y,u;\n end if;\n xrg := op(2,xrng);\n x0 := op(1,xrg);\n xn := op(2,xrg);\n y0 := op(2,iy);\n u0 := op(2,iu);\n\n # Ge t the options.\n # Set the default values to start with.\n maxstps := 2000;\n t := Float(1,-Digits);\n hmx := 0.25;\n hstrt := eva lf(0.1*10^(-ceil(Digits/10)));\n hmn := min(0.000005,hstrt/20000);\n errcntl := 0;\n maxtemp := 0;\n maxtemp2 := 0;\n outpt := 'rk interp';\n prntflg := false;\n if nargs>4 then\n Options:=[ar gs[5..nargs]];\n if not type(Options,list(equation)) then\n \+ error \"each optional argument must be an equation\"\n end if; \n if hasoption(Options,'maxsteps','maxstps','Options') then\n \+ if not type(maxstps,posint) then\n error \"\\\"maxste ps\\\" must be a positive integer\"\n end if;\n end if;\n if hasoption(Options,'tolerance','t','Options') then\n t t := evalf(t); \n if not type(tt,float) or \n tt>Fl oat(1,-iquo(Digits,2)) or tthmx) or evalf(hstrttrue then prntflg := false end if; \n end if;\n if nops(Options)>0 then\n error \"%1 is n ot a valid option for %2\",op(1,Options), procname;\n end if;\n \+ end if;\n\n stdstep := evalb(member(outpt,\{'points','rkstep','rkin terp','endpt'\}));\n drvstep := evalb(member(outpt,\{'derivpts','der ivstep','derivinterp'\}));\n\n if prntflg then\n print(`method: Prince-Dormand 7 stage, order 4-5`);\n print(`an embedded order \+ 4 scheme provides error control`);\n if outpt='rkinterp' then\n \+ print(`3 extra stages are used to construct the interpolation p rocedure`);\n end if;\n print(``);\n end if;\n\n saveDig its := Digits;\n Digits := max(trunc(evalhf(Digits)),Digits+5);\n\n \+ # procedure to evaluate the 2nd derivative as a function of x,y and \+ u=dy/dx\n gn := subs(\{GXYU_=evalf(gxyu),X_=x,Y_=y,U_=u\},\n pr oc(X_,Y_,U_)\n local val; \n val := traperror(evalf(GXYU_)); \n if val=lasterror or not type(val,numeric) then\n error \"evaluation of 2nd derivative failed when x = %1, y = %2, and the de rivative u = %3\",evalf(X_,saveDigits),evalf(Y_,saveDigits),evalf(U_,s aveDigits);\n end if;\n val;\n end proc);\n \n c2 := 0.2;\n c3 := 0.3;\n c4 := 0.8;\n c5 := evalf(8/9);\n c8 := c2 ;\n c9 := 0.5;\n a21 := c2;\n a31 := 0.075;\n a32 := 0.225;\n \+ a41 := evalf(44/45);\n a42 := evalf(-56/15);\n a43 := evalf(32/9 );\n a51 := evalf(19372/6561);\n a52 := evalf(-25360/2187);\n a5 3 := evalf(64448/6561);\n a54 := evalf(-212/729);\n a61 := evalf(9 017/3168);\n a62 := evalf(-355/33);\n a63 := evalf(46732/5247);\n \+ a64 := evalf(49/176);\n a65 := evalf(-5103/18656);\n a71 := eval f(35/384);\n a73 := evalf(500/1113);\n a74 := evalf(125/192);\n \+ a75 := evalf(-2187/6784);\n a76 := evalf(11/84);\n a81 := evalf(52 07/48000);\n a83 := evalf(92/795);\n a84 := evalf(-79/960);\n a8 5 := evalf(53217/848000);\n a86 := evalf(-11/300);\n a87 := 0.032; \n a91 := evalf(613/6144);\n a93 := evalf(125/318);\n a94 := eva lf(-125/3072);\n a95 := evalf(8019/108544);\n a96 := evalf(-11/192 );\n a97 := 0.03125;\n b1 := a71;\n b3 := a73;\n b4 := a74;\n \+ b5 := a75;\n b6 := a76;\n e1 := evalf(71/57600);\n e3 := evalf (-71/16695);\n e4 := evalf(71/1920);\n e5 := evalf(-17253/339200); \n e6 := evalf(22/525);\n e7 := -0.025;\n\n xstart := evalf(x0); \n xend:= evalf(xn);\n\n sgn := sign(xend-xstart);\n h := sgn*hs trt;\n\n eps := evalf(t);\n safety := 0.9;\n pgrow := -0.2;\n \+ pshrink := -0.25;\n errcontrol := 0.000189; #(5/safety)^(1/pgrow)\n tiny := Float(1,-3*saveDigits);\n \n xk := evalf(x0);\n yk := \+ evalf(y0);\n uk := evalf(u0);\n \n if errcntl=2 then\n if s tdstep then\n if maxtemp<>0 then\n maxval := abs(ev alf(maxtemp))\n else \n maxval := max(abs(yk),tin y)\n end if;\n elif drvstep then\n if maxtemp2<>0 then\n maxval := abs(evalf(maxtemp2))\n else\n \+ maxval := max(abs(uk),tiny)\n end if;\n else\n \+ if maxtemp<>0 then\n maxval := abs(evalf(maxtemp))\n \+ else \n maxval := max(abs(yk),tiny)\n end if;\n if maxtemp2<>0 then\n maxval2 := abs(evalf(m axtemp2))\n else\n maxval2 := max(abs(uk),tiny)\n \+ end if;\n end if;\n end if;\n\n f1 := uk;\n g1 := gn (xk,yk,uk);\n\n finished := false;\n soln := NULL;\n soln2 := NU LL;\n\n for k from 1 to maxstps do\n if stdstep then \n \+ if errcntl=0 then scale := max(abs(yk),abs(uk*h),tiny)\n elif errcntl=1 then scale := max(abs(yk),tiny)\n elif errcntl=2 th en scale := abs(maxval)\n else scale := max(abs(uk*h),tiny) en d if;\n elif drvstep then\n if errcntl=0 then scale := ma x(abs(uk),abs(g1*h),tiny)\n elif errcntl=1 then scale := max(a bs(uk),tiny)\n elif errcntl=2 then scale := abs(maxval)\n \+ else scale := max(abs(g1*h),tiny) end if;\n else\n if errcntl=0 then\n scale := max(abs(yk),abs(uk*h),tiny);\n \+ scale2 := max(abs(uk),abs(g1*h),tiny);\n elif errcnt l=1 then\n scale := max(abs(yk),tiny);\n scale2 \+ := max(abs(uk),tiny);\n elif errcntl=2 then\n scale := abs(maxval);\n scale2 := abs(maxval2);\n else\n scale := max(abs(uk*h),tiny);\n scale2 := max(a bs(g1*h),tiny);\n end if;\n end if;\n\n if abs(h)>=h mx then\n h := sgn*hmx;\n maxstepsize := true;\n \+ else\n maxstepsize := false;\n end if;\n if abs(h)<= hmn then\n h := sgn*hmn;\n minstepsize := true;\n \+ else\n minstepsize := false;\n end if;\n if (xk+h-x end)*(xk+h-xstart)>0 then \n h := xend-xk;\n laststep \+ := true;\n else\n laststep := false;\n end if;\n\n \+ # Do step.\n do \n ff := a21*f1;\n gg := a21*g1;\n f2 := uk + gg*h;\n g2 := gn(xk + c2*h,yk + \+ ff*h,f2);\n\n ff := a31*f1 + a32*f2;\n gg := a31*g1 + a32 *g2;\n f3 := uk + gg*h;\n g3 := gn(xk + c3*h,yk + ff*h,f3 ); \n \n ff := a41*f1 + a42*f2 + a43*f3;\n gg \+ := a41*g1 + a42*g2 + a43*g3;\n f4 := uk + gg*h;\n g4 := g n(xk + c4*h,yk + ff*h,f4);\n \n ff := a51*f1 + a52*f2 + a53*f3 + \+ a54*f4;\n gg := a51*g1 + a52*g2 + a53*g3 + a54*g4;\n f 5 := uk + gg*h;\n g5 := gn(xk + c5*h,yk + ff*h,f5);\n\n ff : = a61*f1 + a62*f2 + a63*f3 + a64*f4 + a65*f5;\n gg := a61*g1 + a62*g2 + a63*g3 + a64*g4 + a65*g5;\n f6 := uk + gg*h;\n \+ g6 := gn(xk + h,yk + ff*h,f6);\n\n yout := yk + (b1*f1 + b3*f3 + b4*f4 + b5*f5 + b6*f6)*h;\n uout := uk + (b1*g1 + b3*g3 + b 4*g4 + b5*g5 + b6*g6)*h;\n\n ff := a71*f1 + a73*f3 + a74*f4 + \+ a75*f5 + a76*f6;\n gg := a71*g1 + a73*g3 + a74*g4 + a75*g5 + a 76*g6;\n f7 := uk + gg*h;\n g7 := gn(xk + h,yk + ff*h,f7) ;\n \n # error estimate\n if stdstep then \n \+ errst := (e1*f1 + e3*f3 + e4*f4 + e5*f5 + e6*f6 + e7*f7)*h; \n elif drvstep then\n errst := (e1*g1 + e3*g3 + e4 *g4 + e5*g5 + e6*g6 + e7*g7)*h;\n else\n errst := ( e1*f1 + e3*f3 + e4*f4 + e5*f5 + e6*f6 + e7*f7)*h;\n errst2 \+ := (e1*g1 + e3*g3 + e4*g4 + e5*g5 + e6*g6 + e7*g7)*h;\n end if ;\n \n if stdstep or drvstep then \n err := abs(errst/scale)/eps;\n else \n err := max(abs(err st/scale),abs(errst2/scale2))/eps;\n end if; \n if err <=1.0 or minstepsize then break end if;\n\n # Shrink, but not too much.\n if prntflg then\n print(`reducing step -size and repeating step`);\n end if;\n htemp := safet y*h*err^pshrink;\n if h>=0 then\n h := max(htemp,0. 1*h)\n else\n h := min(htemp,0.1*h)\n end i f;\n if maxstepsize then maxstepsize := false end if;\n \+ if abs(h)<=hmn then\n h := sgn*hmn;\n minsteps ize := true;\n end if;\n end do;\n\n if member(outpt,\{ 'points','derivpts','rkstep','derivstep','step_pair','endpt'\}) then\n soln := soln,[xk,yk,uk];\n else # extra evaluations need ed for interpolation\n ff := a81*f1 + a83*f3 + a84*f4 + a85*f5 + \+ a86*f6 + a87*f7;\n gg := a81*g1 + a83*g3 + a84*g4 + a85*g5 + a 86*g6 + a87*g7;\n f8 := uk + gg*h;\n g8 := gn(xk + c8*h,y k + ff*h,f8);\n \n ff := a91*f1 + a93*f3 + a94*f4 + a95*f 5 + a96*f6 + a97*f7;\n gg := a91*g1 + a93*g3 + a94*g4 + a95*g5 + a96*g6 + a97*g7;\n f9 := uk + gg*h;\n g9 := gn(xk + c9 *h,yk + ff*h,f9);\n if outpt='rkinterp' then\n soln := soln,[xk,yk,f1,f2,f3,f4,f5,f6,f7,f8,f9];\n elif outpt='derivi nterp' then\n soln := soln,[xk,uk,g1,g2,g3,g4,g5,g6,g7,g8,g 9];\n else\n soln := soln,[xk,yk,f1,f2,f3,f4,f5,f6, f7,f8,f9];\n soln2 := soln2,[xk,uk,g1,g2,g3,g4,g5,g6,g7,g8, g9];\n end if;\n end if;\n \n if err>errcontrol then\n hnext := safety*h*err^pgrow;\n inc := false;\n else\n if abs(h) `,evalf(abs(errst),5),` abs err bound -> `,evalf(abs(scale)*eps,5));\n if stdstep then \n print(`step`,k,` `,h,` `,[xk,yk]);\n elif dr vstep then\n print(`step`,k,` `,h,` `,[xk,uk]);\n \+ else\n print(`step`,k,` `,h,` `,[xk,yk,uk]);\n \+ end if;\n if laststep then\n print(`last step`); \n elif inc then\n print(`increasing step-size by a factor of 5`)\n elif maxstepsize then\n print(`use d maximum step-size`)\n elif not minstepsize then\n \+ print(`using error to adjust step-size`)\n else \n \+ print(`used minimum step-size`)\n end if;\n print(``) ;\n end if;\n\n if (xk-xend)*(xend-xstart)>=0 then\n \+ finished := true;\n break;\n end if;\n \n if e rrcntl=2 then\n if stdstep then \n if abs(yk)>max val then maxval := abs(yk) end if;\n elif drvstep then\n \+ if abs(uk)>maxval then maxval := abs(uk) end if;\n else \n if abs(yk)>maxval then maxval := abs(yk) end if;\n \+ if abs(uk)>maxval2 then maxval2 := abs(uk) end if;\n end if;\n end if;\n h := hnext;\n end do;\n\n if not finish ed and k>=maxstps then\n error \"reached maximum number of steps \+ before reaching end of interval\"\n end if;\n\n if member(outpt,\{ 'rkstep','derivstep','step_pair'\}) then\n soln := [soln,[xk,yk,u k]];\n eqns := \{SOLN_=soln,GXYU_=gxyu,X_=x,Y_=y,U_=u,c5_=c5,\n \+ a41_=a41,a42_=a42,a43_=a43,a51_=a51,a52_=a52,a53_=a53,\n \+ a54_=a54,a61_=a61,a62_=a62,a63_=a63,a64_=a64,a65_=a65,\n b1_ =b1,b3_=b3,b4_=b4,b5_=b5,b6_=b6\};\n if outpt='rkstep' then\n \+ return subs(`union`(eqns,\{DERIV_=false\}),eval(rk45step));\n \+ elif outpt='derivstep' then\n return subs(`union`(eqns,\{DER IV_=true\}),eval(rk45step));\n else # outpt='step_pair'\n \+ return subs(`union`(eqns,\{DERIV_=false\}),eval(rk45step)),\n \+ subs(`union`(eqns,\{DERIV_=true\}),eval(rk45step));\n en d if;\n elif member(outpt,\{'rkinterp','derivinterp','interp_pair'\} ) then\n e2 := evalf(-500/1113);\n e3 := evalf(-125/192);\n \+ e4 := evalf(2187/6784);\n e5 := evalf(-11/84);\n e6 := \+ evalf(125/24);\n e7 := evalf(16/3);\n eqns := \{e2_=e2,e3_=e 3,e4_=e4,e5_=e5,e6_=e6,e7_=e7\};\n if outpt='rkinterp' then\n \+ soln := [soln,[xk,yk]];\n return subs(`union`(eqns,\{SOLN _=soln\}),eval(rk45interp));\n elif outpt='derivinterp' then\n \+ soln := [soln,[xk,uk]];\n return subs(`union`(eqns,\{SOL N_=soln\}),eval(rk45interp));\n else # outpt='interp_pair' then\n soln := [soln,[xk,yk]];\n soln2 := [soln2,[xk,uk]];\n return subs(`union`(eqns,\{SOLN_=soln\}),eval(rk45interp)),\n subs(`union`(eqns,\{SOLN_=soln2\}),eval(rk45interp)); \n end if;\n else\n soln := [soln,[xk,yk,uk]];\n Digi ts := saveDigits;\n if outpt='points' then\n return evalf ([seq([soln[i,1],soln[i,2]],i=1..nops(soln))]); \n elif outp t='derivpts' then\n return evalf([seq([soln[i,1],soln[i,3]],i= 1..nops(soln))]);\n elif outpt='points_pair' then\n retur n evalf([seq([soln[i,1],soln[i,2]],i=1..nops(soln))]),\n eva lf([seq([soln[i,1],soln[i,3]],i=1..nops(soln))]);\n else # outpt= 'endpt'\n return soln[nops(soln),2];\n end if;\n end if ;\nend proc: # of de2rk45" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}}{SECT 1 {PARA 4 "" 0 "" {TEXT -1 23 "de2rk56: implementation" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 56 "The procedure uses c onstants obtained by J.Verner (2004)" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "rungk78" {MPLTEXT 1 0 28221 "de2rk56 := proc( gxyu::algebraic,xrng::(name=realcons..realcons),\n iy::(na me=realcons),iu::(name=realcons))\n local soln,xk,yk,k,xend,xstart,h ,xrg,c2,c3,c4,c5,c6,cA,cB,cC,a21,a31,a32,a41,\n a42,a43,a51,a52,a53, a54,a61,a62,a63,a64,a65,a71,a72,a73,a74,a75,a76,a81,a82,\n a83,a84,a 85,a86,a91,a93,a94,a96,a97,a98,aA1,aA3,aA4,aA5,aA6,aA7,aA9,aB1,aB3,\n \+ aB4,aB5,aB6,aB7,aB8,aB9,aBA,aC1,aC3,aC4,aC5,aC6,aC7,aC8,aC9,aCA,aCB, f1,f2,f3,\n f4,f5,f6,f7,f8,f9,fA,fB,fC,g1,g2,g3,g4,g5,g6,g7,g8,g9,gA ,gB,gC,b1,b3,b4,b5,b6,\n b7,b8,e1,e3,e4,e5,e6,e7,e8,d12,d13,d14,d15, d16,d32,d33,d34,d35,d36,d42,d43,\n d44,d45,d46,d52,d53,d54,d55,d56,d 62,d63,d64,d65,d66,d72,d73,d74,d75,d76,d82,\n d83,d84,d85,d86,d92,d9 3,d94,d95,d96,dA2,dA3,dA4,dA5,dA6,dB2,dB3,dB4,dB5,dB6,\n dC2,dC3,dC4 ,dC5,dC6,ff,gg,uk,yout,uout,errst,errst2,hmx,hmn,hstrt,sgn,gn,\n max stps,tiny,scale,scale2,err,htemp,hnext,eps,i,Options,prntflg,t,tt,\n \+ errcntl,maxval,maxval2,maxtemp,maxtemp2,x,y,u,errc,x0,y0,u0,xn,outpt, \n minstepsize,inc,rk56step,maxstepsize,laststep,saveDigits,stdstep, drvstep,\n safety,pgrow,pshrink,errcontrol,finished,soln2,eqns,rk56i nterp;\n\nrk56interp := proc(x_rk56interp::realcons)\n local d12,d13 ,d14,d15,d16,d32,d33,d34,d35,d36,d42,d43,\n d44,d45,d46,d62,d63,d64, d65,d66,d72,d73,d74,d75,d76,d82,\n d83,d84,d85,d86,d92,d93,d94,d95,d 96,dA2,dA3,dA4,dA5,dA6,\n dB2,dB3,dB4,dB5,dB6,dB7,dC2,dC3,dC4,dC5,dC 6,dC7,b1,b3,b4,\n b6,b7,b8,b9,bA,bB,bC,f1,f3,f4,f6,f7,f8,f9,fA,fB,fC ,s,t,\n jF,jM,jS,xF,yF,xS,n,h,data,xx,ys,saveDigits;\n options `Co pyright 2007 by Peter Stone`;\n \n data := SOLN_;\n saveDigits : = Digits;\n Digits := max(trunc(evalhf(Digits)),Digits+5);\n xx := evalf(x_rk56interp);\n n := nops(data);\n if (data[1,1]data[n,1] or xxdata[1,1])) then\n error \"independent vari able is outside the interpolation interval: %1\",evalf(data[1,1])..eva lf(data[n,1]);\n end if;\n \n d12 := d12_; d13 := d13_; d14 := d14 _; d15 := d15_; d16 := d16_; \n d32 := d32_; d33 := d33_; d34 := d34 _; d35 := d35_; d36 := d36_; \n d42 := d42_; d43 := d43_; d44 := d44 _; d45 := d45_; d46 := d46_; \n d62 := d62_; d63 := d63_; d64 := d64 _; d65 := d65_; d66 := d66_; \n d72 := d72_; d73 := d73_; d74 := d74 _; d75 := d75_; d76 := d76_; \n d82 := d82_; d83 := d83_; d84 := d84 _; d85 := d85_; d86 := d86_; \n d92 := d92_; d93 := d93_; d94 := d94 _; d95 := d95_; d96 := d96_; \n dA2 := dA2_; dA3 := dA3_; dA4 := dA4 _; dA5 := dA5_; dA6 := dA6_; \n dB2 := dB2_; dB3 := dB3_; dB4 := dB4 _; dB5 := dB5_; dB6 := dB6_; \n dC2 := dC2_; dC3 := dC3_; dC4 := dC4 _; dC5 := dC5_; dC6 := dC6_; \n\n # Perform a binary search for the \+ interval containing x.\n n := nops(data);\n jF := 0;\n jS := n+1 ;\n\n if data[1,1]1 do\n j M := trunc((jF+jS)/2);\n if xx>=data[jM,1] then jF := jM else j S := jM end if;\n end do;\n if jM = n then jF := n-1; jS := \+ n end if;\n else\n while jS-jF>1 do\n jM := trunc((jF+jS )/2);\n if xx<=data[jM,1] then jF := jM else jS := jM end if;\n end do;\n if jM = n then jF := n-1; jS := n end if;\n end if;\n \n # Get the data needed from the list.\n xF := data[jF,1] ;\n xS := data[jS,1];\n yF := data[jF,2];\n f1 := data[jF,3];\n \+ f3 := data[jF,4];\n f4 := data[jF,5];\n f6 := data[jF,6];\n f7 := data[jF,7];\n f8 := data[jF,8];\n f9 := data[jF,9];\n fA := \+ data[jF,10];\n fB := data[jF,11];\n fC := data[jF,12];\n\n # Cal culate the parameters.\n h := xx-xF;\n s := h/(xS-xF);\n b1 := ( (((d16*s+d15)*s+d14)*s+d13)*s+d12)*s+1;\n b3 := ((((d36*s+d35)*s+d34 )*s+d33)*s+d32)*s;\n b4 := ((((d46*s+d45)*s+d44)*s+d43)*s+d42)*s;\n \+ b6 := ((((d66*s+d65)*s+d64)*s+d63)*s+d62)*s;\n b7 := ((((d76*s+d75 )*s+d74)*s+d73)*s+d72)*s;\n b8 := ((((d86*s+d85)*s+d84)*s+d83)*s+d82 )*s;\n b9 := ((((d96*s+d95)*s+d94)*s+d93)*s+d92)*s;\n bA := ((((dA 6*s+dA5)*s+dA4)*s+dA3)*s+dA2)*s;\n bB := ((((dB6*s+dB5)*s+dB4)*s+dB3 )*s+dB2)*s;\n bC := ((((dC6*s+dC5)*s+dC4)*s+dC3)*s+dC2)*s;\n\n # C alculate the interpolated y value.\n t := b1*f1 + b3*f3 + b4*f4 + b6 *f6 + b7*f7 + b8*f8 + b9*f9\n + b A*fA + bB*fB + bC*fC;\n ys := yF + t*h;\n Digits := saveDigits;\n \+ evalf(ys);\nend proc: # of rk56interp\n \nrk56step := proc(x_rk56s tep::realcons)\n local c2,c3,c4,c5,c6,a21,a31,a32,a41,a42,a43,a51,a5 2,a53,a54,a61,a62,a63,\n a64,a65,a71,a72,a73,a74,a75,a76,a81,a82,a83 ,a84,a85,a86,f1,f2,f3,f4,f5,\n f6,f7,f8,g1,g2,g3,g4,g5,g6,g7,g8,b1,b 3,b4,b5,b6,b7,b8,uk,xk,yk,jF,jM,jS,\n n,h,data,gn,xx,ys,us,saveDigit s;\n options `Copyright 2004 by Peter Stone`;\n \n data := SOLN_ ;\n\n saveDigits := Digits;\n Digits := max(trunc(evalhf(Digits)), Digits+5);\n\n # procedure to evaluate the 2nd derivative as a funct ion of x,y and u=dy/dx\n gn := proc(X_,Y_,U_)\n local val; \n \+ val := traperror(evalf(GXYU_));\n if val=lasterror or not typ e(val,numeric) then\n error \"evaluation of 2nd derivative fai led when x = %1, y = %2, and the derivative u = %3\",evalf(X_,saveDigi ts),evalf(Y_,saveDigits),evalf(U_,saveDigits);\n end if;\n v al;\n end proc;\n\n xx := evalf(x_rk56step);\n n := nops(data); \n\n if (data[1,1]data[n,1] or xxdata[1,1])) then\n \+ error \"independent variable is outside the interpolation interval: %1\",evalf(data[1,1])..evalf(data[n,1]);\n end if;\n\n c2 := c2_; c3 := c3_; c4 := c4_; c5 := c5_; c6 := .75; a21 := c2;\n a31 := a31 _; a32 := a32_; a41 := a41_; a42 := a42_; a43 := a43_;\n a51 := a51_ ; a52 := a52_; a53 := a53_; a54 := a54_; a61 := a61_;\n a62 := a62_; a63 := a63_; a64 := a64_; a65 := a65_; a71 := a71_;\n a72 := -2.156 25; a73 := a73_; a74 := a74_; a75 := a75_; a76 := a76_;\n a81 := a81 _; a82 := a82_; a83 := a83_; a84 := a84_; a85 := -0.6515625;\n a86 : = a86_; b1 := b1_; b3 := b3_; b4 := b4_; b6 := b6_; b7 := .01;\n b8 \+ := b8_;\n\n # Peform a binary search for the interval containing x. \n n := nops(data);\n jF := 0;\n jS := n+1;\n\n if data[1,1]1 do\n jM := trunc((jF+jS)/2); \n if xx>=data[jM,1] then jF := jM else jS := jM end if;\n \+ end do;\n if jM = n then jF := n-1; jS := n end if;\n else\n \+ while jS-jF>1 do\n jM := trunc((jF+jS)/2);\n if xx<= data[jM,1] then jF := jM else jS := jM end if;\n end do;\n i f jM = n then jF := n-1; jS := n end if;\n end if;\n \n # Get the data needed from the list.\n xk := data[jF,1];\n yk := data[jF,2] ;\n uk := data[jF,3];\n\n # Do one step with step-size ..\n h := xx-xk;\n\n f1 := uk;\n g1 := gn(xk,yk,uk);\n\n ff := a21*f1;\n \+ gg := a21*g1;\n f2 := uk + gg*h;\n g2 := gn(xk + c2*h,yk + ff*h, f2);\n\n ff := a31*f1 + a32*f2;\n gg := a31*g1 + a32*g2;\n f3 := uk + gg*h;\n g3 := gn(xk + c3*h,yk + ff*h,f3); \n\n ff := a41*f1 \+ + a42*f2 + a43*f3;\n gg := a41*g1 + a42*g2 + a43*g3;\n f4 := uk + \+ gg*h;\n g4 := gn(xk + c4*h,yk + ff*h,f4);\n\n ff := a51*f1 + a52*f 2 + a53*f3 + a54*f4;\n gg := a51*g1 + a52*g2 + a53*g3 + a54*g4;\n \+ f5 := uk + gg*h;\n g5 := gn(xk + c5*h,yk + ff*h,f5);\n\n ff := a61 *f1 + a62*f2 + a63*f3 + a64*f4 + a65*f5;\n gg := a61*g1 + a62*g2 + a 63*g3 + a64*g4 + a65*g5;\n f6 := uk + gg*h;\n g6 := gn(xk + c6*h,y k + ff*h,f6);\n\n ff := a71*f1 + a72*f2 + a73*f3 + a74*f4 + a75*f5 + a76*f6;\n gg := a71*g1 + a72*g2 + a73*g3 + a74*g4 + a75*g5 + a76*g6 ;\n f7 := uk + gg*h;\n g7 := gn(xk + h,yk + ff*h,f7);\n\n ff := \+ a81*f1 + a82*f2 + a83*f3 + a84*f4 + a85*f5 + a86*f6;\n gg := a81*g1 \+ + a82*g2 + a83*g3 + a84*g4 + a85*g5 + a86*g6;\n f8 := uk + gg*h;\n\n if DERIV_ then\n g8 := gn(xk + h,yk + ff*h,f8);;\n gg := \+ b1*g1 + b3*g3 + b4*g4 + b6*g6 + b7*g7 + b8*g8;\n us := uk + gg*h; \n Digits := saveDigits;\n return evalf(us);\n else \n \+ ff := b1*f1 + b3*f3 + b4*f4 + b6*f6 + b7*f7 + b8*f8;\n ys := yk + ff*h;\n Digits := saveDigits;\n return evalf(ys);\n end if;\nend proc: # of rk56step\n\n # start of main procedure\n x := op(1,xrng);\n y := op(1,iy);\n u := op(1,iu);\n if not type(ind ets(gxyu,name) minus \{x,y,u\},set(realcons)) then\n error \"the \+ 1st argument, %1, must depend only on the variables %2, %3 and %4\",gx yu,x,y,u;\n end if;\n xrg := op(2,xrng);\n x0 := op(1,xrg);\n \+ xn := op(2,xrg);\n y0 := op(2,iy);\n u0 := op(2,iu);\n\n # Get t he options.\n # Set the default values to start with.\n maxstps := 2000;\n t := Float(1,-Digits);\n hmx := 0.5;\n hstrt := evalf(0 .1*10^(-ceil(Digits/10)));\n hmn := min(0.000005,hstrt/20);\n errc ntl := 0;\n maxtemp := 0;\n maxtemp2 := 0;\n outpt := 'rkinterp' ;\n prntflg := false;\n if nargs>4 then\n Options:=[args[5..n args]];\n if not type(Options,list(equation)) then\n erro r \"each optional argument must be an equation\"\n end if;\n \+ if hasoption(Options,'maxsteps','maxstps','Options') then\n i f not type(maxstps,posint) then\n error \"\\\"maxsteps\\\" \+ must be a positive integer\"\n end if;\n end if;\n i f hasoption(Options,'tolerance','t','Options') then \n tt := e valf(t); \n if not type(tt,float) or \n tt>Float(1, -iquo(Digits,2)) or tthmx) or evalf(hstrttrue then prntflg := false end if; \n \+ end if;\n if nops(Options)>0 then\n error \"%1 is not a valid option for %2\",op(1,Options), procname;\n end if;\n end if;\n\n stdstep := evalb(member(outpt,\{'points','rkstep','rkinterp ','endpt'\}));\n drvstep := evalb(member(outpt,\{'derivpts','derivst ep','derivinterp'\}));\n\n if prntflg then\n print(`method: Ver ner (2004) 8 stage, order 5-6`);\n print(`an embedded order 5 sch eme provides error control`);\n if outpt='rkinterp' then\n \+ print(`4 extra stages are used to construct the interpolation proced ure`);\n end if;\n print(``);\n end if;\n\n saveDigits : = Digits;\n Digits := max(trunc(evalhf(Digits)),Digits+5);\n\n # p rocedure to evaluate the 2nd derivative as a function of x,y and u=dy/ dx\n gn := subs(\{GXYU_=evalf(gxyu),X_=x,Y_=y,U_=u\},\n proc(X_ ,Y_,U_)\n local val; \n val := traperror(evalf(GXYU_));\n \+ if val=lasterror or not type(val,numeric) then\n error \"ev aluation of 2nd derivative failed when x = %1, y = %2, and the derivat ive u = %3\",evalf(X_,saveDigits),evalf(Y_,saveDigits),evalf(U_,saveDi gits);\n end if;\n val;\n end proc);\n\n c2 := evalf( 1/7);\n c3 := evalf(2/9);\n c4 := evalf(3/7);\n c5 := evalf(2/3) ;\n c6 := .75;\n\n a21 := c2;\n a31 := evalf(4/81);\n a32 := e valf(14/81);\n a41 := evalf(291/1372);\n a42 := evalf(-27/49);\n \+ a43 := evalf(1053/1372);\n a51 := evalf(86/297);\n a52 := evalf(- 14/33);\n a53 := evalf(42/143);\n a54 := evalf(1960/3861);\n a61 := evalf(-267/22528);\n a62 := evalf(189/704);\n a63 := evalf(630 99/585728);\n a64 := evalf(58653/366080);\n a65 := evalf(4617/2048 0);\n a71 := evalf(10949/6912);\n a72 := -2.15625;\n a73 := eval f(-90891/68096);\n a74 := evalf(112931/25920);\n a75 := evalf(-698 61/17920);\n a76 := evalf(26378/10773);\n a81 := evalf(1501/19008) ;\n a82 := evalf(-21/88);\n a83 := evalf(219519/347776);\n a84 : = evalf(163807/926640);\n a85 := -0.6515625;\n a86 := evalf(1544/1 539);\n\n b1 := evalf(79/1080);\n b3 := evalf(19683/69160);\n b4 := evalf(16807/84240);\n b6 := evalf(2816/7695);\n b7 := .01;\n \+ b8 := evalf(187/2800);\n\n e1 := 0.0025;\n e3 := evalf(-19683/138 3200);\n e4 := evalf(2401/78000);\n e5 := evalf(-243/4000);\n e6 := evalf(64/1425);\n e7 := 0.01;\n e8 := evalf(-37/2800);\n\n # # nodes and linking coefficients for 4 extra stages used for interpola tion\n ## coefficients by Peter Stone (2007) \n if member(outpt,\{ 'rkinterp','derivinterp','interp_pair'\}) then;\n cA := 0.5;\n \+ cB := 0.02;\n cC := 0.2;\n a91 := b1;\n a93 := b3;\n a94 := b4;\n a96 := b6;\n a97 := .01;\n a98 := b8 ;\n aA1 := evalf(437147/6393600);\n aA3 := evalf(37666701/11 6979200);\n aA4 := evalf(18206783/311688000);\n aA5 := evalf (318087/2368000);\n aA6 := evalf(-125092/1423575);\n aA7 := \+ evalf(-49/1850);\n aA9 := 0.3125e-1;\n aB1 := evalf(75937703 3/42187500000);\n aB3 := evalf(96242803803/21612500000000);\n \+ aB4 := evalf(-38501694091/13162500000000);\n aB5 := evalf(10382 1669/12500000000);\n aB6 := evalf(-386400752/75146484375);\n \+ aB7 := evalf(-64159111/46875000000);\n aB8 := evalf(2357835043/1 312500000000);\n aB9 := evalf(-52871/312500000);\n aBA := ev alf(-28812/9765625);\n aC1 := evalf(-56439341621/363389625000);\n aC3 := evalf(458482004217/5817598718750);\n aC4 := evalf(64 2635325997/28344390750000);\n aC5 := evalf(2264031/107671000);\n \+ aC6 := evalf(-18595185664/2589151078125);\n aC7 := evalf(-14 6506629/33647187500);\n aC8 := evalf(-1309139623/942121250000);\n aC9 := evalf(93111766/16487121875);\n aCA := evalf(-4325161 7/1009415625);\n aCB := evalf(4478125/15827637);\n end if;\n \+ \n xstart := evalf(x0);\n xend:= evalf(xn);\n \n sgn := sign(x end-xstart);\n h := sgn*hstrt;\n\n eps := evalf(t);\n safety := \+ 0.9;\n pgrow := -0.16666666666666666667;\n pshrink := -0.2;\n er rcontrol := 0.00003401222408; #(5/safety)^(1/pgrow);\n tiny := Floa t(1,-3*saveDigits);\n \n xk := evalf(x0);\n yk := evalf(y0);\n \+ uk := evalf(u0);\n \n if errcntl=2 then\n if stdstep then\n \+ if maxtemp<>0 then\n maxval := abs(evalf(maxtemp))\n else \n maxval := max(abs(yk),tiny)\n en d if;\n elif drvstep then\n if maxtemp2<>0 then\n \+ maxval := abs(evalf(maxtemp2))\n else\n maxval \+ := max(abs(uk),tiny)\n end if;\n else\n if maxtem p<>0 then\n maxval := abs(evalf(maxtemp))\n else \+ \n maxval := max(abs(yk),tiny)\n end if;\n \+ if maxtemp2<>0 then\n maxval2 := abs(evalf(maxtemp2))\n \+ else\n maxval2 := max(abs(uk),tiny)\n end if; \n end if;\n end if;\n f1 := uk;\n g1 := gn(xk,yk,uk);\n\n \+ finished := false;\n soln := NULL;\n soln2 := NULL;\n\n for k \+ from 1 to maxstps do\n if stdstep then \n if errcntl=0 th en scale := max(abs(yk),abs(uk*h),tiny)\n elif errcntl=1 then \+ scale := max(abs(yk),tiny)\n elif errcntl=2 then scale := abs( maxval)\n else scale := max(abs(uk*h),tiny) end if;\n eli f drvstep then\n if errcntl=0 then scale := max(abs(uk),abs(g1 *h),tiny)\n elif errcntl=1 then scale := max(abs(uk),tiny)\n \+ elif errcntl=2 then scale := abs(maxval)\n else scale : = max(abs(g1*h),tiny) end if;\n else\n if errcntl=0 then \n scale := max(abs(yk),abs(uk*h),tiny);\n scale 2 := max(abs(uk),abs(g1*h),tiny);\n elif errcntl=1 then\n \+ scale := max(abs(yk),tiny);\n scale2 := max(abs(uk), tiny);\n elif errcntl=2 then\n scale := abs(maxval) ;\n scale2 := abs(maxval2);\n else\n sca le := max(abs(uk*h),tiny);\n scale2 := max(abs(g1*h),tiny); \n end if;\n end if;\n \n if abs(h)>=hmx then\n h := sgn*hmx;\n maxstepsize := true;\n else\n \+ maxstepsize := false;\n end if;\n if abs(h)<=hmn then \n h := sgn*hmn;\n minstepsize := true;\n else\n \+ minstepsize := false;\n end if;\n if (xk+h-xend)*(xk +h-xstart)>0 then \n h := xend-xk;\n laststep := true; \n else\n laststep := false;\n end if;\n\n # Do step.\n do\n ff := a21*f1;\n gg := a21*g1;\n \+ f2 := uk + gg*h;\n g2 := gn(xk + c2*h,yk + ff*h,f2);\n\n \+ ff := a31*f1 + a32*f2;\n gg := a31*g1 + a32*g2;\n \+ f3 := uk + gg*h;\n g3 := gn(xk + c3*h,yk + ff*h,f3); \n\n \+ ff := a41*f1 + a42*f2 + a43*f3;\n gg := a41*g1 + a42*g 2 + a43*g3;\n f4 := uk + gg*h;\n g4 := gn(xk + c4*h,yk + ff*h,f4);\n\n ff := a51*f1 + a52*f2 + a53*f3 + a54*f4;\n \+ gg := a51*g1 + a52*g2 + a53*g3 + a54*g4;\n f5 := uk + gg *h;\n g5 := gn(xk + c5*h,yk + ff*h,f5);\n\n ff := a61* f1 + a62*f2 + a63*f3 + a64*f4 + a65*f5;\n gg := a61*g1 + a62*g 2 + a63*g3 + a64*g4 + a65*g5;\n f6 := uk + gg*h;\n g6 \+ := gn(xk + c6*h,yk + ff*h,f6);\n\n ff := a71*f1 + a72*f2 + a73 *f3 + a74*f4 + a75*f5 + a76*f6;\n gg := a71*g1 + a72*g2 + a73* g3 + a74*g4 + a75*g5 + a76*g6;\n f7 := uk + gg*h;\n g7 := gn(xk + h,yk + ff*h,f7);\n\n ff := a81*f1 + a82*f2 + a83*f 3 + a84*f4 + a85*f5 + a86*f6;\n gg := a81*g1 + a82*g2 + a83*g3 + a84*g4 + a85*g5 + a86*g6;\n f8 := uk + gg*h;\n g8 : = gn(xk + h,yk + ff*h,f8);\n \n yout := yk + (b1*f1 + b3*f3 + \+ b4*f4 + b6*f6 + b7*f7 + b8*f8)*h;\n uout := uk + (b1*g1 + b3*g 3 + b4*g4 + b6*g6 + b7*g7 + b8*g8)*h;\n\n # error estimate\n \+ if stdstep then \n errst := (e1*f1 + e3*f3 + e4*f4 \+ + e5*f5 + e6*f6 + e7*f7 + e8*f8)*h;\n elif drvstep then\n \+ errst := (e1*g1 + e3*g3 + e4*g4 + e5*g5 + e6*g6 + e7*g7 + e8*g8 )*h;\n else\n errst := (e1*f1 + e3*f3 + e4*f4 + e5* f5 + e6*f6 + e7*f7 + e8*f8)*h;\n errst2 := (e1*g1 + e3*g3 + e4*g4 + e5*g5 + e6*g6 + e7*g7 + e8*g8)*h;\n end if;\n \+ \n if stdstep or drvstep then \n err := abs(errst/ scale)/eps;\n else \n err := max(abs(errst/scale),a bs(errst2/scale2))/eps;\n end if; \n if err<=1.0 or m instepsize then break end if;\n \n # Shrink, but not t oo much.\n if prntflg then\n print(`reducing step-s ize and repeating step`);\n end if;\n htemp := safety* h*err^pshrink;\n if h>=0 then\n h := max(htemp,0.1* h)\n else\n h := min(htemp,0.1*h)\n end if; \n if maxstepsize then maxstepsize := false end if;\n \+ if abs(h)<=hmn then\n h := sgn*hmn;\n minstepsiz e := true;\n end if;\n end do;\n\n if member(outpt, \{'points','derivpts','rkstep','derivstep','step_pair','endpt'\}) then \n soln := soln,[xk,yk,uk];\n else # 4 extra stages neede d for interpolation\n ff := a91*f1 + a93*f3 + a94*f4 + a96*f6 \+ + a97*f7 + a98*f8;\n gg := a91*g1 + a93*g3 + a94*g4 + a96*g6 + a97*g7 + a98*g8;\n f9 := uk + gg*h;\n g9 := gn(xk + h ,yk + ff*h,f9);\n \n ff := aA1*f1 + aA3*f3 + aA4*f4 + aA5 *f5 + aA6*f6 + aA7*f7 + aA9*f9;\n gg := aA1*g1 + aA3*g3 + aA4* g4 + aA5*g5 + aA6*g6 + aA7*g7 + aA9*g9;\n fA := uk + gg*h;\n \+ gA := gn(xk + cA*h,yk + ff*h,fA);\n\n ff := aB1*f1 + aB 3*f3 + aB4*f4 + aB5*f5 + aB6*f6 + aB7*f7 + aB8*f8\n \+ + aB9*f9 + aBA*fA;\n gg := aB1*g1 + aB3*g3 + aB4*g4 + aB5*g5 + aB6*g6 + aB7*g7 + aB8*g8\n \+ + aB9*g9 + aBA*g A;\n fB := uk + gg*h;\n gB := gn(xk + cB*h,yk + ff*h,f B);\n\n ff := aC1*f1 + aC3*f3 + aC4*f4 + aC5*f5 + aC6*f6 + aC7 *f7 + aC8*f8\n + aC9*f 9 + aCA*fA + aCB*fB;\n gg := aC1*g1 + aC3*g3 + aC4*g4 + aC5*g5 + aC6*g6 + aC7*g7 + aC8*g8\n \+ + aC9*g9 + aCA*gA + aCB*gB;\n fC := uk + gg*h;\n \+ gC := gn(xk + cC*h,yk + ff*h,fC);\n\n if outpt='rkinterp' t hen\n soln := soln,[xk,yk,f1,f3,f4,f6,f7,f8,f9,fA,fB,fC];\n elif outpt='derivinterp' then\n soln := soln,[xk,u k,g1,g3,g4,g6,g7,g8,g9,gA,gB,gC];\n else\n soln := \+ soln,[xk,yk,f1,f3,f4,f6,f7,f8,f9,fA,fB,fC];\n soln2 := soln 2,[xk,uk,g1,g3,g4,g6,g7,g8,g9,gA,gB,gC];\n end if;\n end \+ if;\n \n if err>errcontrol then\n hnext := safety*h* err^pgrow;\n inc := false;\n else\n if abs(h) `,evalf(abs(errst),5),`abs err bound -> `,evalf(abs(scale )*eps,5));\n if stdstep then\n print(`step`,k,` ` ,h,` `,[xk,yk]);\n elif drvstep then\n print(`ste p`,k,` `,h,` `,[xk,uk]);\n else\n print(`step`, k,` `,h,` `,[xk,yk,uk]);\n end if;\n if laststep t hen\n print(`last step`);\n elif inc then\n \+ print(`increasing step-size by a factor of 5`)\n elif maxs tepsize then\n print(`used maximum step-size`)\n el if not minstepsize then\n print(`using error to adjust step -size`)\n else \n print(`used minimum step-size`)\n end if;\n print(``);\n end if;\n \n if (xk-xend)*(xend-xstart) >= 0 then\n finished := true;\n \+ break;\n end if;\n \n if errcntl=2 then\n if stdstep then \n if abs(yk)>maxval then maxval := abs(yk) end if;\n elif drvstep then\n if abs(uk)>maxval th en maxval := abs(uk) end if;\n else\n if abs(yk)>ma xval then maxval := abs(yk) end if;\n if abs(uk)>maxval2 th en maxval2 := abs(uk) end if;\n end if;\n end if;\n \+ h := hnext;\n end do;\n\n if not finished and k>=maxstps then\n \+ error \"reached maximum number of steps before reaching end of inte rval\"\n end if;\n\n \n if member(outpt,\{'rkstep','derivstep',' step_pair'\}) then\n soln := [soln,[xk,yk,uk]];\n eqns := \{ SOLN_=soln,GXYU_=gxyu,X_=x,Y_=y,U_=u,c2_=c2,c3_=c3,\n c4_=c4,c 5_=c5,a31_=a31,a32_=a32,a41_=a41,a42_=a42,\n a43_=a43,a51_=a51 ,a52_=a52,a53_=a53,a54_=a54,a61_=a61,\n a62_=a62,a63_=a63,a64_ =a64,a65_=a65,a71_=a71,a73_=a73,\n a74_=a74,a75_=a75,a76_=a76, a81_=a81,a82_=a82,a83_=a83,\n a84_=a84,a86_=a86,b1_=b1,b3_=b3, b4_=b4,b6_=b6,b8_=b8\};\n if outpt='rkstep' then\n return subs(`union`(eqns,\{DERIV_=false\}),eval(rk56step));\n elif outp t='derivstep' then\n return subs(`union`(eqns,\{DERIV_=true\}) ,eval(rk56step));\n else # outpt='step_pair' then\n retur n subs(`union`(eqns,\{DERIV_=false\}),eval(rk56step)),\n \+ subs(`union`(eqns,\{DERIV_=true\}),eval(rk56step));\n end if;\n elif member(outpt,\{'rkinterp','derivinterp','interp_pair'\}) then \n d12 := evalf(-207979/7020);\n d13 := evalf(859406/5265); \n d14 := evalf(-1617661/4680);\n d15 := evalf(553814/1755); \n d16 := evalf(-109975/1053);\n d32 := evalf(-19683/449540) ;\n d33 := evalf(190269/112385);\n d34 := evalf(-8207811/899 080);\n d35 := evalf(1692738/112385);\n d36 := evalf(-164025 /22477);\n d42 := evalf(-16807/547560);\n d43 := evalf(48740 3/410670);\n d44 := evalf(-2336173/365040);\n d45 := evalf(7 22701/68445);\n d46 := evalf(-420175/82134);\n d62 := evalf( -5632/100035);\n d63 := evalf(653312/300105);\n d64 := evalf (-391424/33345);\n d65 := evalf(1937408/100035);\n d66 := ev alf(-563200/60021);\n d72 := evalf(-1/650);\n d73 := evalf(5 8/975);\n d74 := evalf(-417/1300);\n d75 := evalf(172/325); \n d76 := evalf(-10/39);\n d82 := evalf(-187/18200);\n \+ d83 := evalf(5423/13650);\n d84 := evalf(-77979/36400);\n d8 5 := evalf(8041/2275);\n d86 := evalf(-935/546);\n d92 := ev alf(101/5096);\n d93 := evalf(-1957/2548);\n d94 := evalf(21 429/5096);\n d95 := evalf(-4577/637);\n d96 := evalf(2375/63 7);\n dA2 := evalf(68/351);\n dA3 := evalf(-7810/1053);\n \+ dA4 := evalf(1454/39);\n dA5 := evalf(-18634/351);\n dA6 \+ := evalf(24250/1053);\n dB2 := evalf(1562500/51597);\n dB3 : = evalf(-28906250/154791);\n dB4 := evalf(781250/1911);\n dB 5 := evalf(-19531250/51597);\n dB6 := evalf(19531250/154791);\n \+ dC2 := evalf(-6125/8424);\n dC3 := evalf(330875/12636);\n \+ dC4 := evalf(-23375/312);\n dC5 := evalf(78125/1053);\n dC 6 := evalf(-78125/3159);\n eqns := \n \{d12_=d12,d13_=d13, d14_=d14,d15_=d15,d16_=d16,\n d32_=d32,d33_=d33,d34_=d34,d35_=d 35,d36_=d36,\n d42_=d42,d43_=d43,d44_=d44,d45_=d45,d46_=d46,\n \+ d62_=d62,d63_=d63,d64_=d64,d65_=d65,d66_=d66,\n d72_=d72 ,d73_=d73,d74_=d74,d75_=d75,d76_=d76,\n d82_=d82,d83_=d83,d84_= d84,d85_=d85,d86_=d86,\n d92_=d92,d93_=d93,d94_=d94,d95_=d95,d9 6_=d96,\n dA2_=dA2,dA3_=dA3,dA4_=dA4,dA5_=dA5,dA6_=dA6,\n \+ dB2_=dB2,dB3_=dB3,dB4_=dB4,dB5_=dB5,dB6_=dB6,\n dC2_=dC2,dC3_ =dC3,dC4_=dC4,dC5_=dC5,dC6_=dC6\};\n if outpt='rkinterp' then\n \+ soln := [soln,[xk,yk]];\n return subs(`union`(eqns,\{SO LN_=soln\}),eval(rk56interp));\n elif outpt='derivinterp' then\n \+ soln := [soln,[xk,uk]];\n return subs(`union`(eqns,\{S OLN_=soln\}),eval(rk56interp));\n else # outpt='interp_pair'\n \+ soln := [soln,[xk,yk]];\n soln2 := [soln2,[xk,uk]];\n \+ return subs(`union`(eqns,\{SOLN_=soln\}),eval(rk56interp)),\n \+ subs(`union`(eqns,\{SOLN_=soln2\}),eval(rk56interp));\n \+ end if;\n else\n soln := [soln,[xk,yk,uk]];\n Digits : = saveDigits;\n if outpt='points' then\n return evalf([se q([soln[i,1],soln[i,2]],i=1..nops(soln))]); \n elif outpt='d erivpts' then\n return evalf([seq([soln[i,1],soln[i,3]],i=1..n ops(soln))]);\n elif outpt='points_pair' then\n return ev alf([seq([soln[i,1],soln[i,2]],i=1..nops(soln))]),\n evalf([ seq([soln[i,1],soln[i,3]],i=1..nops(soln))]); \n else # outpt='e ndpt'\n return soln[nops(soln),2];\n end if;\n end if; \nend proc: # of de2rk56" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 1 ";" }}}}{SECT 1 {PARA 4 "" 0 "" {TEXT -1 23 "de2rk67: implementation" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "rungk78" {MPLTEXT 1 0 57103 "de2rk67 := proc( gxyu::algebraic,xrng::(name=realcons..realcons),\n iy::(na me=realcons),iu::(name=realcons))\n local soln,xk,yk,k,xend,xstart,h ,xrg,c2,c3,c4,c5,c6,c7,c8,cC,cD,cE,cF,cG,a21,\n a32,a41,a43,a51,a53, a54,a61,a63,a64,a65,a71,a73,a74,a75,a76,a81,a83,a84,a85,\n a86,a87,a 91,a93,a94,a95,a96,a97,a98,aA1,aA3,aA4,aA5,aA6,aA7,aB1,aB3,aB4,aB5,\n \+ aB6,aB7,aB8,aB9,aC1,aC3,aC4,aC5,aC6,aC7,aC8,aC9,aCB,aD1,aD3,aD4,aD5, aD6,aD7,\n aD8,aD9,aDB,aDC,aE1,aE3,aE4,aE5,aE6,aE7,aE8,aE9,aEB,aEC,a ED,aF1,aF3,aF4,aF5,\n aF6,aF7,aF8,aF9,aFB,aFC,aFD,aG1,aG3,aG4,aG5,aG 6,aG7,aG8,aG9,aGB,aGC,aGD,f1,f2,\n f3,f4,f5,f6,f7,f8,f9,fA,fB,fC,fD, fE,fF,fG,g1,g2,g3,g4,g5,g6,g7,g8,g9,gA,gB,gC,\n gD,gE,gF,gG,b1,b4,b5 ,b6,b7,b8,b9,e1,e4,e5,e6,e7,e8,e9,eA,d12,d13,d14,d15,d16,\n d17,d42, d43,d44,d45,d46,d47,d52,d53,d54,d55,d56,d57,d62,d63,d64,d65,d66,d67,\n d72,d73,d74,d75,d76,d77,d82,d83,d84,d85,d86,d87,d92,d93,d94,d95,d96 ,d97,dB2,\n dB3,dB4,dB5,dB6,dB7,dC2,dC3,dC4,dC5,dC6,dC7,dD2,dD3,dD4, dD5,dD6,dD7,dE2,dE3,\n dE4,dE5,dE6,dE7,dF2,dF3,dF4,dF5,dF6,dF7,dG2,d G3,dG4,dG5,dG6,dG7,ff,gg,uk,yout,\n uout,errst,errst2,hmx,hmn,hstrt, sgn,gn,maxstps,tiny,scale,scale2,err,htemp,\n hnext,eps,i,Options,pr ntflg,t,tt,errcntl,maxval,maxval2,maxtemp,maxtemp2,\n x,y,u,errc,x0, y0,u0,xn,outpt,minstepsize,inc,rk67step,rk67interp,maxstepsize,\n la ststep,saveDigits,stdstep,drvstep,safety,pgrow,pshrink,errcontrol,fini shed,\n soln2,eqns,SQRT;\n\nrk67interp := proc(x_rk67interp::realcon s)\n local d12,d13,d14,d15,d16,d17,d42,d43,d44,d45,d46,d47,d52,d53,d 54,\n d55,d56,d57,d62,d63,d64,d65,d66,d67,d72,d73,d74,d75,d76,d77,d8 2,\n d83,d84,d85,d86,d87,dB2,dB3,dB4,dB5,dB6,dB7,dC2,dC3,dC4,dC5,dC6 ,\n dC7,dD2,dD3,dD4,dD5,dD6,dD7,dE2,dE3,dE4,dE5,dE6,dE7,dF2,dF3,dF4, \n dF5,dF6,dF7,dG2,dG3,dG4,dG5,dG6,dG7,s,b1,b4,b5,b6,b7,b8,b9,bB,bC, \n bD,bE,bF,bG,xF,xS,yF,f1,f4,f5,f6,f7,f8,f9,fB,fC,fD,fE,fF,fG,t,jF, \n jM,jS,n,h,data,xx,ys,saveDigits;\n options `Copyright 2007 by P eter Stone`;\n \n data := SOLN_;\n saveDigits := Digits;\n Dig its := max(trunc(evalhf(Digits)),Digits+5);\n xx := evalf(x_rk67inte rp);\n n := nops(data);\n if (data[1,1]data[n,1 ] or xxdata[1,1])) then\n error \"independent variable is outside t he interpolation interval: %1\",evalf(data[1,1])..evalf(data[n,1]);\n \+ end if;\n\n d12 := d12_; d13 := d13_; d14 := d14_; d15 := d15_; d1 6 := d16_; d17 := d17_;\n d42 := d42_; d43 := d43_; d44 := d44_; d45 := d45_; d46 := d46_; d47 := d47_;\n d52 := d52_; d53 := d53_; d54 \+ := d54_; d55 := d55_; d56 := d56_; d57 := d57_;\n d62 := d62_; d63 : = d63_; d64 := d64_; d65 := d65_; d66 := d66_; d67 := d67_;\n d72 := d72_; d73 := d73_; d74 := d74_; d75 := d75_; d76 := d76_; d77 := d77_ ;\n d82 := d82_; d83 := d83_; d84 := d84_; d85 := d85_; d86 := d86_; d87 := d87_;\n d92 := d92_; d93 := d93_; d94 := d94_; d95 := d95_; \+ d96 := d96_; d97 := d97_;\n dB2 := dB2_; dB3 := dB3_; dB4 := dB4_; d B5 := dB5_; dB6 := dB6_; dB7 := dB7_;\n dC2 := dC2_; dC3 := dC3_; dC 4 := dC4_; dC5 := dC5_; dC6 := dC6_; dC7 := dC7_;\n dD2 := dD2_; dD3 := dD3_; dD4 := dD4_; dD5 := dD5_; dD6 := dD6_; dD7 := dD7_;\n dE2 \+ := dE2_; dE3 := dE3_; dE4 := dE4_; dE5 := dE5_; dE6 := dE6_; dE7 := dE 7_;\n dF2 := dF2_; dF3 := dF3_; dF4 := dF4_; dF5 := dF5_; dF6 := dF6 _; dF7 := dF7_;\n dG2 := dG2_; dG3 := dG3_; dG4 := dG4_; dG5 := dG5_ ; dG6 := dG6_; dG7 := dG7_;\n\n # Perform a binary search for the in terval containing x.\n n := nops(data);\n jF := 0;\n jS := n+1; \n\n if data[1,1]1 do\n jM := trunc((jF+jS)/2);\n if xx>=data[jM,1] then jF := jM else jS := jM end if;\n end do;\n if jM = n then jF := n-1; jS := n end if;\n else\n while jS-jF>1 do\n jM := trunc((jF+jS) /2);\n if xx<=data[jM,1] then jF := jM else jS := jM end if;\n \+ end do;\n if jM = n then jF := n-1; jS := n end if;\n end \+ if;\n \n # Get the data needed from the list.\n xF := data[jF,1]; \n xS := data[jS,1];\n yF := data[jF,2];\n f1 := data[jF,3];\n \+ f4 := data[jF,4];\n f5 := data[jF,5];\n f6 := data[jF,6];\n f7 \+ := data[jF,7];\n f8 := data[jF,8];\n f9 := data[jF,9];\n fB := d ata[jF,10];\n fC := data[jF,11];\n fD := data[jF,12];\n fE := da ta[jF,13];\n fF := data[jF,14];\n fG := data[jF,15];\n\n # Calcu late the parameters.\n h := xx-xF;\n s := h/(xS-xF);\n b1 := ((( ((d17*s+d16)*s+d15)*s+d14)*s+d13)*s+d12)*s+1;\n b4 := (((((d47*s+d46 )*s+d45)*s+d44)*s+d43)*s+d42)*s;\n b5 := (((((d57*s+d56)*s+d55)*s+d5 4)*s+d53)*s+d52)*s;\n b6 := (((((d67*s+d66)*s+d65)*s+d64)*s+d63)*s+d 62)*s;\n b7 := (((((d77*s+d76)*s+d75)*s+d74)*s+d73)*s+d72)*s;\n b8 := (((((d87*s+d86)*s+d85)*s+d84)*s+d83)*s+d82)*s;\n b9 := (((((d97* s+d96)*s+d95)*s+d94)*s+d93)*s+d92)*s;\n bB := (((((dB7*s+dB6)*s+dB5) *s+dB4)*s+dB3)*s+dB2)*s;\n bC := (((((dC7*s+dC6)*s+dC5)*s+dC4)*s+dC3 )*s+dC2)*s; \n bD := (((((dD7*s+dD6)*s+dD5)*s+dD4)*s+dD3)*s+dD2)*s; \n bE := (((((dE7*s+dE6)*s+dE5)*s+dE4)*s+dE3)*s+dE2)*s;\n bF := (( (((dF7*s+dF6)*s+dF5)*s+dF4)*s+dF3)*s+dF2)*s;\n bG := (((((dG7*s+dG6) *s+dG5)*s+dG4)*s+dG3)*s+dG2)*s;\n\n # Calculate the interpolated y v alue.\n t := b1*f1 + b4*f4 + b5*f5 + b6*f6 + b7*f7 + b8*f8 + b9*f9 + bB*fB\n + bC*fC + bD*fD + bE*fE + bF*fF \+ + bG*fG;\n ys := yF + t*h;\n Digits := saveDigits;\n evalf(ys); \nend proc: # of rk67interp\n \nrk67step := proc(x_rk67step::realcon s)\n local c2,c3,c4,c5,c6,c7,c9,a21,a32,a41,a43,a51,a53,a54,a61,a63, a64,\n a65,a71,a73,a74,a75,a76,a81,a83,a84,a85,a86,a87,aA1,a93,a94,a 95,a96,\n a97,a98,f1,f2,f3,f4,f5,f6,f7,f8,f9,g1,g2,g3,g4,g5,g6,g7,g8 ,g9,b1,b4,\n b5,b6,b7,b8,b9,uk,xk,yk,jF,jM,jS,n,h,data,gn,xx,ys,us,s aveDigits;\n options `Copyright 2007 by Peter Stone`;\n \n data \+ := SOLN_;\n\n saveDigits := Digits;\n Digits := max(trunc(evalhf(D igits)),Digits+5);\n\n # procedure to evaluate the 2nd derivative as a function of x,y and u=dy/dx\n gn := proc(X_,Y_,U_)\n local v al; \n val := traperror(evalf(GXYU_));\n if val=lasterror or not type(val,numeric) then\n error \"evaluation of 2nd deriva tive failed when x = %1, y = %2, and the derivative u = %3\",evalf(X_, saveDigits),evalf(Y_,saveDigits),evalf(U_,saveDigits);\n end if; \n val;\n end proc;\n\n xx := evalf(x_rk67step);\n n := nop s(data);\n\n if (data[1,1]data[n,1] or xxdata[1,1])) t hen\n error \"independent variable is outside the interpolation i nterval: %1\",evalf(data[1,1])..evalf(data[n,1]);\n end if;\n\n c2 := c2_; c3 := c3_; c4 := c4_; c5 := c5_; c6 := c6_; c7 := c7_;\n c8 := c8_; a21 := c2; a32 := c3; a41 := a41_; a43 := 0.125;\n a51 := a 51_; a53 := a53_; a54 := a54_; a61 := a61_; a63 := a63_;\n a64 := a6 4_; a65 := a65_; a71 := a71_; a73 := a73_; a74 := a74_; \n a75 := a7 5_; a76 := a76_; a81 := a81_; a83 := a83_; a84 := a84_;\n a85 := a85 _; a86 := a86_; a87 := a87_; a91 := a91_; a93 := a93_; \n a94 := a94 _; a95 := a95_; a96 := a96_; a97 := a97_; a98 := a98_; \n b1 := b1_; b4 := b4_; b5 := b5_; b6 := b6_; b7 := b7_; b8 := b8_;\n b9 := b9_; \n\n # Peform a binary search for the interval containing x.\n n : = nops(data);\n jF := 0;\n jS := n+1;\n\n if data[1,1]1 do\n jM := trunc((jF+jS)/2);\n \+ if xx>=data[jM,1] then jF := jM else jS := jM end if;\n end do; \n if jM = n then jF := n-1; jS := n end if;\n else\n whil e jS-jF>1 do\n jM := trunc((jF+jS)/2);\n if xx<=data[jM, 1] then jF := jM else jS := jM end if;\n end do;\n if jM = n then jF := n-1; jS := n end if;\n end if;\n \n # Get the data ne eded from the list.\n xk := data[jF,1];\n yk := data[jF,2];\n uk := data[jF,3];\n\n # Do one step with step-size ..\n h := xx-xk; \n\n f1 := uk;\n g1 := gn(xk,yk,uk);\n\n ff := a21*f1;\n gg := a21*g1;\n f2 := uk + gg*h;\n g2 := gn(xk + c2*h,yk + ff*h,f2);\n \n ff := a32*f2;\n gg := a32*g2;\n f3 := uk + gg*h;\n g3 := gn (xk + c3*h,yk + ff*h,f3); \n\n ff := a41*f1 + a43*f3;\n gg := a41* g1 + a43*g3;\n f4 := uk + gg*h;\n g4 := gn(xk + c4*h,yk + ff*h,f4) ;\n\n ff := a51*f1 + a53*f3 + a54*f4;\n gg := a51*g1 + a53*g3 + a5 4*g4;\n f5 := uk + gg*h;\n g5 := gn(xk + c5*h,yk + ff*h,f5);\n\n \+ ff := a61*f1 + a63*f3 + a64*f4 + a65*f5;\n gg := a61*g1 + a63*g3 + \+ a64*g4 + a65*g5;\n f6 := uk + gg*h;\n g6 := gn(xk + c6*h,yk + ff*h ,f6);\n\n ff := a71*f1 + a73*f3 + a74*f4 + a75*f5 + a76*f6;\n gg : = a71*g1 + a73*g3 + a74*g4 + a75*g5 + a76*g6;\n f7 := uk + gg*h;\n \+ g7 := gn(xk + c7*h,yk + ff*h,f7);\n\n ff := a81*f1 + a83*f3 + a84*f 4 + a85*f5 + a86*f6 + a87*f7;\n gg := a81*g1 + a83*g3 + a84*g4 + a85 *g5 + a86*g6 + a87*g7;\n f8 := uk + gg*h;\n g8 := gn(xk + c8*h,yk \+ + ff*h,f8);\n\n ff := a91*f1 + a93*f3 + a94*f4 + a95*f5 + a96*f6 + a 97*f7 + a98*f8;\n gg := a91*g1 + a93*g3 + a94*g4 + a95*g5 + a96*g6 + a97*g7 + a98*g8;\n f9 := uk + gg*h;\n\n if DERIV_ then\n g9 \+ := gn(xk + h,yk + ff*h,f9);\n gg := b1*g1 + b4*g4 + b5*g5 + b6*g6 + b7*g7 + b8*g8 + b9*g9;\n us := uk + gg*h;\n Digits := sav eDigits;\n return evalf(us);\n else \n ff := b1*f1 + b4*f4 + b5*f5 + b6*f6 + b7*f7 + b8*f8 + b9*f9;\n ys := yk + ff*h;\n \+ Digits := saveDigits;\n return evalf(ys);\n end if;\nend pro c: # of rk67step\n\n # start of main procedure\n x := op(1,xrng); \n y := op(1,iy);\n u := op(1,iu);\n if not type(indets(gxyu,nam e) minus \{x,y,u\},set(realcons)) then\n error \"the 1st argument , %1, must depend only on the variables %2, %3 and %4\",gxyu,x,y,u;\n \+ end if;\n xrg := op(2,xrng);\n x0 := op(1,xrg);\n xn := op(2,x rg);\n y0 := op(2,iy);\n u0 := op(2,iu);\n\n # Get the options. \n # Set the default values to start with.\n maxstps := 2000;\n \+ t := Float(1,-Digits);\n hmx := 0.5;\n hstrt := evalf(0.1*10^(-cei l(Digits/10)));\n hmn := min(0.000005,hstrt/20);\n errcntl := 0;\n maxtemp := 0;\n maxtemp2 := 0;\n outpt := 'rkinterp';\n prntf lg := false;\n if nargs>4 then\n Options:=[args[5..nargs]];\n \+ if not type(Options,list(equation)) then\n error \"each op tional argument must be an equation\"\n end if;\n if hasopti on(Options,'maxsteps','maxstps','Options') then\n if not type( maxstps,posint) then\n error \"\\\"maxsteps\\\" must be a p ositive integer\"\n end if;\n end if;\n if hasoption (Options,'tolerance','t','Options') then \n tt := evalf(t); \n if not type(tt,float) or \n tt>Float(1,-iquo(Digit s,2)) or tthmx) or evalf(hstrttrue then prntflg := false end if; \n end if; \n if nops(Options)>0 then\n error \"%1 is not a valid op tion for %2\",op(1,Options), procname;\n end if;\n end if;\n\n \+ stdstep := evalb(member(outpt,\{'points','rkstep','rkinterp','endpt' \}));\n drvstep := evalb(member(outpt,\{'derivpts','derivstep','deri vinterp'\}));\n\n if prntflg then\n print(`method: Enright (Ver ner formula 1990) 10 stage, order 6-7`);\n print(`an embedded ord er 6 scheme provides error control`);\n if outpt='rkinterp' then \n print(`6 extra stages are used to construct the interpolati on procedure`);\n end if;\n print(``);\n end if;\n\n sav eDigits := Digits;\n Digits := max(trunc(evalhf(Digits)),Digits+5); \n\n # procedure to evaluate the 2nd derivative as a function of x,y and u=dy/dx\n gn := subs(\{GXYU_=evalf(gxyu),X_=x,Y_=y,U_=u\},\n \+ proc(X_,Y_,U_)\n local val; \n val := traperror(evalf(GXY U_));\n if val=lasterror or not type(val,numeric) then\n \+ error \"evaluation of 2nd derivative failed when x = %1, y = %2, and t he derivative u = %3\",evalf(X_,saveDigits),evalf(Y_,saveDigits),evalf (U_,saveDigits);\n end if;\n val;\n end proc);\n\n ## coefficients by Jim Verner\n # nodes \n c2 := evalf(1/18);\n c3 := evalf(1/9);\n c4 := evalf(1/6);\n c5 := evalf(4/9);\n c6 := \+ evalf(19/39);\n c7 := evalf(7/9);\n c8 := evalf(8/9);\n\n # link ing coefficients\n a21 := c2;\n a32 := c3; \n a41 := evalf(1/2 4);\n a43 := 0.125;\n a51 := evalf(44/81);\n a53 := evalf(-56/27 );\n a54 := evalf(160/81);\n a61 := evalf(91561/685464);\n a63 : = evalf(-12008/28561);\n a64 := evalf(55100/85683);\n a65 := evalf (29925/228488);\n a71 := evalf(-1873585/1317384);\n a73 := evalf(1 5680/2889);\n a74 := evalf(-4003076/1083375);\n a75 := evalf(-4381 3/21400);\n a76 := evalf(5751746/2287125);\n a81 := evalf(50383360 /12679821);\n a83 := evalf(-39440/2889);\n a84 := evalf(1258442432 /131088375);\n a85 := evalf(222872/29425);\n a86 := evalf(-9203268 152/1283077125);\n a87 := evalf(24440/43197);\n a91 := evalf(-2294 2833/6327608);\n a93 := evalf(71784/5947);\n a94 := evalf(-572980/ 77311);\n a95 := evalf(-444645/47576);\n a96 := evalf(846789710/90 281407);\n a97 := evalf(-240750/707693);\n a98 := evalf(3972375/14 534468);\n aA1 := evalf(3379947/720328);\n aA3 := evalf(-10656/677 );\n aA4 := evalf(78284/7447);\n aA5 := evalf(71865/5416);\n aA6 := evalf(-2803372/218671);\n aA7 := evalf(963000/886193); \n\n \+ # weights\n b1 := evalf(28781/595840);\n b4 := evalf(820752/31281 25);\n b5 := evalf(11259/280000);\n b6 := evalf(188245551/62510000 0);\n b7 := evalf(8667/43120);\n b8 := evalf(286011/2737280);\n \+ b9 := evalf(5947/140000);\n\n # error coefficients\n e1 := evalf(- 3531/595840);\n e4 := evalf(7704/284375);\n e5 := evalf(-95337/280 000);\n e6 := evalf(3933106749/10626700000);\n e7 := evalf(-8667/6 6640);\n e8 := evalf(286011/2737280);\n e9 := evalf(5947/140000); \n eA := evalf(-677/10000);\n\n ## nodes and linking coefficients \+ for 6 extra stages used for interpolation\n ## coefficients essentia lly those of W.H.Enright (1993) \n if member(outpt,\{'rkinterp','der ivinterp','interp_pair'\}) then;\n SQRT := evalf[Digits+3](sqrt(9 0853));\n cC := evalf(442/909-4/6363*SQRT);\n cD := 0.33;\n \+ cE := 0.49;\n cF := 0.61;\n cG := 0.35;\n aB1 := b 1; aB4 := b4; aB5 := b5;\n aB6 := b6; aB7 := b7; aB8 := b8; aB9 : = b9;\n aC1 := evalf(11500782840073597085891/22875813009324137639 4480 +\n 347602667982997729/57189532523310344098620*SQRT); \n aC4 := evalf(794918767646448887177152/320257798826495113020937 5 -\n 137422384360867840768/3202577988264951130209375*SQRT );\n aC5 := evalf(84269124746798382647/3981448936459923705000 -\n 215293121258077787/995362234114980926250*SQRT);\n aC 6 := evalf(12030734412172250507022797/79997262755821017042712500 -\n \+ 2041655568620905891771/6938538096168149437378125*SQRT);\n \+ aC7 := evalf(12608885740419399331/613143136214828250570 -\n \+ 657488494427626594/5211716657826040129845*SQRT);\n aC8 := e valf(-1171044770847163931/264779896617906218640 +\n 242477 98591381697/463364819081335882620*SQRT);\n aC9 := evalf(-14092051 85688274391/177391289248214422500 +\n 3057311703540761/443 47822312053605625*SQRT);\n aCB := evalf(243561230299384/304099352 99693901-\n 2322434132608/30409935299693901*SQRT);\n \+ aD1 := evalf(1502306202720008333061447/29374766853376000000000000 +\n \+ 3126692833058959793443287/762510197979934208000000000000*S QRT);\n aD4 := evalf(14575285912174737090561/60429388906250000000 000 -\n 9077872758165741724029/313725215445687500000000000 *SQRT);\n aD5 := evalf(-18036559373971584362499/47599764800000000 0000000-\n 38537171144973334348911/24711893893568000000000 00000*SQRT);\n aD6 := evalf(1352920089897847431103274703/18065300 735720000000000000000 -\n 4036637284909007967945489447/9378 7815299563952000000000000000*SQRT);\n aD7 := evalf(-2309093550000 85637997/22657488044800000000000 -\n 6646140167004703431168 3/2940715373334592000000000000*SQRT);\n aD8 := evalf(570074737194 45403888437/4653353006848000000000000-\n 578179970882375410 328571/120791737351760384000000000000*SQRT);\n aD9 := evalf(40523 41300370405229/336632000000000000000+\n 2127368298230962281 /2446722167680000000000000*SQRT);\n aDB := evalf(-183341815324915 6089/122113258000000000000+\n 1846789421375916171/792453987 791000000000000*SQRT);\n aDC := evalf(895329040032388269/56660551 7120000000000+\n 79170642190635173586639/73539730067004800 0000000000*SQRT);\n aE1 := evalf(63472312703155837317797756131/11 77630791475985897600000000000 +\n 453654247985838761866431/ 29440769786899647440000000000*SQRT);\n aE4 := evalf(3324599389021 10536824077757/1541658854501111328125000000 -\n 94213960911 34251901173/77082942725055566406250000*SQRT);\n aE5 := evalf(2180 8118118695032079526627/1103957109796600000000000000 -\n 409 297522766940260019/27598927744915000000000000*SQRT);\n aE6 := eva lf(163434554627706470804331019839/1232292123810454750000000000000 -\n \+ 13132645398396901409262867/123229212381045475000000000000*S QRT);\n aE7 := evalf(115345969968418926169167/6071764103881300000 000000 -\n 12320669221539113043/242870564155252000000000*SQ RT);\n aE8 := evalf(-42556750795339917186944817/10792284705371561 600000000000 -\n 6021136996292392683093/2698071176342890400 00000000*SQRT);\n aE9 := evalf(-1992929168149816073596867/2759892 77449150000000000000 -\n 204896940778270418139/275989277449 15000000000000*SQRT);\n aEB := evalf(84056791648457596199143983/1 0732339834309606220000000000 +\n 25127531386227343082961/13 41542479288700777500000000*SQRT);\n aEC := evalf(7174936380776481 074611049124987387/\n 747 15880296975738146964440000000000 +\n 8755575146183751557816 36808981/1494317605939514762939288800000000*SQRT);\n aED := evalf (-25949179022771474387043/594829247355851428960600 -\n 8802 54813493103748/2974146236779257144803*SQRT);\n aF1 := evalf(30403 02770337136329768408203011/57703908782323308982400000000000 -\n \+ 27805664230777838767882689/1442597719558082724560000000000*SQRT); \n aF4 := evalf(2626167145333789823380552731/10791611981507779296 875000000 +\n 6345738369828830304657/4150619992887607421875 0000*SQRT);\n aF5 := evalf(158752394088004083113707941/7727699768 576200000000000000 +\n 3583846237549473642123/1931924942144 05000000000000*SQRT);\n aF6 := evalf(1160644759100262780858457646 937/8626044866673183250000000000000 +\n 1642723348529448616 7930877/123229212381045475000000000000*SQRT);\n aF7 := evalf(6562 97759149621255662327/297516441090183700000000000 +\n 755166 281355508534317/11900657643607348000000000*SQRT);\n aF8 := evalf( -1228747478142046557023820711/75545992937600931200000000000 +\n \+ 4055509363768674605937/145280755649232560000000000*SQRT);\n \+ aF9 := evalf(-26449889813931965961835861/1931924942144050000000000000 \+ +\n 1794096200068460594163/193192494214405000000000000*SQRT );\n aFB := evalf(201347553402524051240218527/1073233983430960622 0000000000-\n 31431277740965230477791/134154247928870077750 0000000*SQRT);\n aFC := evalf(-8974913400428577075069503767310997 /\n 747158802969757381469644400 00000000 -\n 1095208717369001411094866904411/14943176059395 14762939288800000000*SQRT);\n aFD := evalf(1712956800471297282658 77/594829247355851428960600 +\n 1101084428090224188/2974146 236779257144803*SQRT);\n aG1 := evalf(172544210917722105598130227 /3391576679450839385088000000 +\n 3176876199752450173927/84 789416986270984627200000*SQRT);\n aG4 := evalf(111019168439769165 365741/493330833440355625000000 -\n 563903395955299673/1897 426282462906250000*SQRT);\n aG5 := evalf(7847274989491175037051/3 53266275134912000000000 -\n 318472484391171747/883165687837 2800000000*SQRT);\n aG6 := evalf(60024459139515434197977707/39433 3479619345520000000000 -\n 10218449841528261376771/39433347 961934552000000000*SQRT);\n aG7 := evalf(72680779249424414721/194 2964513242016000000 -\n 9586654983445059/777185805296806400 00*SQRT);\n aG8 := evalf(23094931095498698946279/3453531105718899 712000000 -\n 360386036939521593/6641405972536345600000*SQR T);\n aG9 := evalf(-217984284848388029671/88316568783728000000000 -\n 159429349419647307/8831656878372800000000*SQRT);\n \+ aGB := evalf(-17239555749073841710163/10303046240937221971200000 +\n 58654843252586650979/1287880780117152746400000*SQRT);\n \+ aGC := evalf(16748353122837812409131633846593/717272450850967086210 85862400000 +\n 2043801597108489464981675759/14345449017019 34172421717248000*SQRT);\n aGD := evalf(-80044753462531150076875/ 214138529048106514425816-\n 19263435335939112500/2676731613 1013314303227*SQRT);\n end if;\n \n xstart := evalf(x0);\n xen d:= evalf(xn);\n \n sgn := sign(xend-xstart);\n h := sgn*hstrt; \n\n eps := evalf(t);\n safety := 0.9;\n pgrow := -0.14285714285 714285714;\n pshrink := -0.16666666666666666667;\n errcontrol := 0 .6122200345e-5; #(5/safety)^(1/pgrow)\n tiny := Float(1,-3*saveDigi ts);\n \n xk := evalf(x0);\n yk := evalf(y0);\n uk := evalf(u0) ;\n \n if errcntl=2 then\n if stdstep then\n if maxte mp<>0 then\n maxval := abs(evalf(maxtemp))\n else \+ \n maxval := max(abs(yk),tiny)\n end if;\n el if drvstep then\n if maxtemp2<>0 then\n maxval := a bs(evalf(maxtemp2))\n else\n maxval := max(abs(uk), tiny)\n end if;\n else\n if maxtemp<>0 then\n \+ maxval := abs(evalf(maxtemp))\n else \n m axval := max(abs(yk),tiny)\n end if;\n if maxtemp2<>0 \+ then\n maxval2 := abs(evalf(maxtemp2))\n else\n \+ maxval2 := max(abs(uk),tiny)\n end if;\n end if; \n end if;\n f1 := uk;\n g1 := gn(xk,yk,uk);\n\n finished := f alse;\n soln := NULL;\n soln2 := NULL;\n\n for k from 1 to maxst ps do\n if stdstep then \n if errcntl=0 then scale := max (abs(yk),abs(uk*h),tiny)\n elif errcntl=1 then scale := max(ab s(yk),tiny)\n elif errcntl=2 then scale := abs(maxval)\n \+ else scale := max(abs(uk*h),tiny) end if;\n elif drvstep then \n if errcntl=0 then scale := max(abs(uk),abs(g1*h),tiny)\n \+ elif errcntl=1 then scale := max(abs(uk),tiny)\n elif er rcntl=2 then scale := abs(maxval)\n else scale := max(abs(g1*h ),tiny) end if;\n else\n if errcntl=0 then\n s cale := max(abs(yk),abs(uk*h),tiny);\n scale2 := max(abs(uk ),abs(g1*h),tiny);\n elif errcntl=1 then\n scale := max(abs(yk),tiny);\n scale2 := max(abs(uk),tiny);\n \+ elif errcntl=2 then\n scale := abs(maxval);\n \+ scale2 := abs(maxval2);\n else\n scale := max(abs(u k*h),tiny);\n scale2 := max(abs(g1*h),tiny);\n end \+ if;\n end if;\n \n if abs(h)>=hmx then\n h := s gn*hmx;\n maxstepsize := true;\n else\n maxstepsi ze := false;\n end if;\n if abs(h)<=hmn then\n h := \+ sgn*hmn;\n minstepsize := true;\n else\n minsteps ize := false;\n end if;\n if (xk+h-xend)*(xk+h-xstart)>0 the n \n h := xend-xk;\n laststep := true;\n else\n \+ laststep := false;\n end if;\n\n # Do step.\n do \n ff := a21*f1;\n gg := a21*g1;\n f2 := uk + \+ gg*h;\n g2 := gn(xk + c2*h,yk + ff*h,f2);\n\n ff := a3 2*f2;\n gg := a32*g2;\n f3 := uk + gg*h;\n g3 \+ := gn(xk + c3*h,yk + ff*h,f3); \n\n ff := a41*f1 + a43*f3;\n \+ gg := a41*g1 + a43*g3;\n f4 := uk + gg*h;\n g4 \+ := gn(xk + c4*h,yk + ff*h,f4);\n\n ff := a51*f1 + a53*f3 + a54 *f4;\n gg := a51*g1 + a53*g3 + a54*g4;\n f5 := uk + gg *h;\n g5 := gn(xk + c5*h,yk + ff*h,f5);\n\n ff := a61* f1 + a63*f3 + a64*f4 + a65*f5;\n gg := a61*g1 + a63*g3 + a64*g 4 + a65*g5;\n f6 := uk + gg*h;\n g6 := gn(xk + c6*h,yk + ff*h,f6);\n\n ff := a71*f1 + a73*f3 + a74*f4 + a75*f5 + a76 *f6;\n gg := a71*g1 + a73*g3 + a74*g4 + a75*g5 + a76*g6;\n \+ f7 := uk + gg*h;\n g7 := gn(xk + c7*h,yk + ff*h,f7);\n\n \+ ff := a81*f1 + a83*f3 + a84*f4 + a85*f5 + a86*f6 + a87*f7;\n \+ gg := a81*g1 + a83*g3 + a84*g4 + a85*g5 + a86*g6 + a87*g7;\n \+ f8 := uk + gg*h;\n g8 := gn(xk + c8*h,yk + ff*h,f8);\n\n ff := a91*f1 + a93*f3 + a94*f4 + a95*f5 + a96*f6 + a97*f7 + a 98*f8;\n gg := a91*g1 + a93*g3 + a94*g4 + a95*g5 + a96*g6 + a9 7*g7 + a98*g8;\n f9 := uk + gg*h;\n g9 := gn(xk + h,yk + ff*h,f9);\n\n yout := yk + (b1*f1 + b4*f4 + b5*f5 + b6*f6 + b7*f7 + b8*f8 + b9*f9)*h;\n uout := uk + (b1*g1 + b4*g4 + b5* g5 + b6*g6 + b7*g7 + b8*g8 + b9*g9)*h;\n \n # error estimate\n ff := aA1*f1 + aA3*f3 + aA4*f4 + aA5*f5 + aA6*f6 + aA7*f7;\n \+ gg := aA1*g1 + aA3*g3 + aA4*g4 + aA5*g5 + aA6*g6 + aA7*g7;\n \+ fA := uk + gg*h;\n gA := gn(xk + h,yk + ff*h,fA);\n\n \+ if stdstep then\n errst := (e1*f1 + e4*f4 + e5*f5 + \+ e6*f6 + e7*f7 + e8*f8 + e9*f9 + eA*fA)*h; \n elif drvstep then \n errst := (e1*g1 + e4*g4 + e5*g5 + e6*g6 + e7*g7 + e8*g8 \+ + e9*g9 + eA*gA)*h;\n else\n errst := (e1*f1 + e4*f 4 + e5*f5 + e6*f6 + e7*f7 + e8*f8 + e9*f9 + eA*fA)*h;\n err st2 := (e1*g1 + e4*g4 + e5*g5 + e6*g6 + e7*g7 + e8*g8 + e9*g9 + eA*gA) *h;\n end if;\n \n if stdstep or drvstep then \+ \n err := abs(errst/scale)/eps;\n else \n \+ err := max(abs(errst/scale),abs(errst2/scale2))/eps;\n end i f; \n if err<=1.0 or minstepsize then break end if;\n \+ \n # Shrink, but not too much.\n if prntflg then\n \+ print(`reducing step-size and repeating step`);\n end if;\n htemp := safety*h*err^pshrink;\n if h>=0 then\n h := max(htemp,0.1*h)\n else\n h := min (htemp,0.1*h)\n end if;\n if maxstepsize then maxsteps ize := false end if;\n if abs(h)<=hmn then\n h := s gn*hmn;\n minstepsize := true;\n end if;\n end do;\n\n if member(outpt,\{'points','derivpts','rkstep','derivste p','step_pair','endpt'\}) then\n soln := soln,[xk,yk,uk];\n \+ else # 6 extra stages needed for interpolation\n ff := aB1* f1 + aB4*f4 + aB5*f5 + aB6*f6 + aB7*f7 + aB8*f8 + aB9*f9;\n gg := aB1*g1 + aB4*g4 + aB5*g5 + aB6*g6 + aB7*g7 + aB8*g8 + aB9*g9;\n \+ fB := uk + gg*h;\n gB := gn(xk + h,yk + ff*h,fB);\n\n \+ ff := aC1*f1 + aC4*f4 + aC5*f5 + aC6*f6 + aC7*f7 + aC8*f8 + aC9* f9 + aCB*fB;\n gg := aC1*g1 + aC4*g4 + aC5*g5 + aC6*g6 + aC7*g 7 + aC8*g8 + aC9*g9 + aCB*gB;\n fC := uk + gg*h;\n gC \+ := gn(xk + cC*h,yk + ff*h,fC);\n\n ff := aD1*f1 + aD4*f4 + aD5 *f5 + aD6*f6 + aD7*f7 + aD8*f8 + aD9*f9 + aDB*fB\n \+ + aDC*fC;\n \+ gg := aD1*g1 + aD4*g4 + aD5*g5 + aD6*g6 + aD7*g7 + aD8*g8 + aD9* g9 + aDB*gB\n \+ + aDC*gC;\n fD := uk + gg*h;\n gD : = gn(xk + cD*h,yk + ff*h,fD);\n\n ff := aE1*f1 + aE4*f4 + aE5* f5 + aE6*f6 + aE7*f7 + aE8*f8 + aE9*f9 + aEB*fB\n \+ + aEC*fC + aED*fD;\n \+ gg := aE1*g1 + aE4*g4 + aE5*g5 + aE6*g6 + aE7*g7 + aE8*g8 + aE9*g 9 + aEB*gB\n \+ + aEC*gC + aED*gD;\n fE := uk + gg*h;\n gE := gn(xk + cE*h,yk + ff*h,fE);\n\n ff := aF1*f1 + aF4*f4 + aF5*f 5 + aF6*f6 + aF7*f7 + aF8*f8 + aF9*f9 + aFB*fB\n \+ + aFC*fC + aFD*fD;\n \+ gg := aF1*g1 + aF4*g4 + aF5*g5 + aF6*g6 + aF7*g7 + aF8*g8 + aF9*g9 + aFB*gB\n \+ + aFC*gC + aFD*gD;\n fF := uk + gg*h;\n gF := \+ gn(xk + cF*h,yk + ff*h,fF);\n\n ff := aG1*f1 + aG4*f4 + aG5*f5 + aG6*f6 + aG7*f7 + aG8*f8 + aG9*f9 + aGB*fB\n \+ + aGC*fC + aGD*fD;\n \+ gg := aG1*g1 + aG4*g4 + aG5*g5 + aG6*g6 + aG7*g7 + aG8*g8 + aG9*g9 \+ + aGB*gB\n \+ + aGC*gC + aGD*gD;\n fG := uk + gg*h;\n gG := g n(xk + cG*h,yk + ff*h,fG); \n\n if outpt='rkinterp' then\n soln := soln,[xk,yk,f1,f4,f5,f6,f7,f8,f9,fB,fC,fD,fE,fF,fG ];\n elif outpt='derivinterp' then\n soln := soln,[ xk,uk,g1,g4,g5,g6,g7,g8,g9,gB,gC,gD,gE,gF,gG];\n else\n \+ soln := soln,[xk,yk,f1,f4,f5,f6,f7,f8,f9,fB,fC,fD,fE,fF,fG];\n \+ soln2 := soln2,[xk,uk,g1,g4,g5,g6,g7,g8,g9,gB,gC,gD,gE,gF,gG] ;\n end if;\n end if;\n \n if err>errcontrol th en\n hnext := safety*h*err^pgrow;\n inc := false;\n \+ else\n if abs(h) `,evalf(abs(errst),5),`abs err bound -> `,evalf(abs(scale)*eps,5));\n if stdstep then\n \+ print(`step`,k,` `,h,` `,[xk,yk]);\n elif drvst ep then\n print(`step`,k,` `,h,` `,[xk,uk]);\n \+ else\n print(`step`,k,` `,h,` `,[xk,yk,uk]);\n \+ end if;\n if laststep then\n print(`last step`);\n \+ elif inc then\n print(`increasing step-size by a fa ctor of 5`)\n elif maxstepsize then\n print(`used m aximum step-size`)\n elif not minstepsize then\n pr int(`using error to adjust step-size`)\n else \n pr int(`used minimum step-size`)\n end if;\n print(``);\n end if;\n \n if (xk-xend)*(xend-xstart) >= 0 then\n \+ finished := true;\n break;\n end if;\n \n \+ if errcntl=2 then\n if stdstep then \n if abs(yk )>maxval then maxval := abs(yk) end if;\n elif drvstep then\n \+ if abs(uk)>maxval then maxval := abs(uk) end if;\n \+ else\n if abs(yk)>maxval then maxval := abs(yk) end if;\n \+ if abs(uk)>maxval2 then maxval2 := abs(uk) end if;\n \+ end if;\n end if;\n h := hnext;\n end do;\n\n if not fi nished and k>=maxstps then\n error \"reached maximum number of st eps before reaching end of interval\"\n end if;\n \n if member(o utpt,\{'rkstep','derivstep','step_pair'\}) then\n soln := [soln,[ xk,yk,uk]];\n eqns := \{SOLN_=soln,GXYU_=gxyu,X_=x,Y_=y,U_=u,c2_= c2,c3_=c3,\n c4_=c4,c5_=c5,c6_=c6,c7_=c7,c8_=c8,c9_=c9,a41_=a4 1,\n a51_=a51,a53_=a53,a54_=a54,a61_=a61,a63_=a63,a64_=a64,\n \+ a65_=a65,a71_=a71,a73_=a73,a74_=a74,a75_=a75,a76_=a76,\n \+ a81_=a81,a83_=a83,a84_=a84,a85_=a85,a86_=a86,a87_=a87,\n a9 1_=a91,a93_=a93,a94_=a94,a95_=a95,a96_=a96,a97_=a97,\n a98_=a9 8,b1_=b1,b4_=b4,b5_=b5,b6_=b6,b7_=b7,b8_=b8,b9_=b9\};\n if outpt= 'rkstep' then\n return subs(`union`(eqns,\{DERIV_=false\}),eva l(rk67step));\n elif outpt='derivstep' then\n return subs (`union`(eqns,\{DERIV_=true\}),eval(rk67step));\n else # outpt='s tep_pair' then\n return subs(`union`(eqns,\{DERIV_=false\}),ev al(rk67step)),\n subs(`union`(eqns,\{DERIV_=true\}),eva l(rk67step));\n end if;\n elif member(outpt,\{'rkinterp','deriv interp','interp_pair'\}) then\n SQRT := evalf[Digits+3](sqrt(9085 3)); \n d12 := evalf(-1245492445607086572225081867133090468655067 965932222387/\n 18536661357004623541974832014924538157850 4728717375840 +\n 567636630476852201021059394200997877801 3515749/\n 6201626415859693389754042159559899015674296711 856*SQRT);\n d13 := evalf(619272605386539484276343536403316701061 0274394963286001/\n 2595132589980647295876476482089435342 09906620204326176-\n 224682273110532408837174764893322966 231076268109837/\n 46341653392511558854937080037311345394 626182179343960*SQRT);\n d14 := evalf(-36033638377564737959842886 215129369079092076099666664271/\n 74146645428018494167899 3280596981526314018914869503360+\n 6970024818705686057600 853461829325865779670811050531/\n 64878314749516182396911 9120522358835524766550510815440*SQRT);\n d15 := evalf(18471519421 393009931491942508354367069752503925063167621/\n 32439157 3747580911984559560261179417762383275255407720-\n 6732876 3059222761276241780523037919254937089737629/\n 5792706674 063944856867135004663918174328272772417995*SQRT);\n d16 := evalf( -15001461228970908131092923220274158140637555553525125/\n \+ 421287758113741444135791636702830412678419837994036+\n 4 300693702808932497120998703956514517497439695250/\n 73725 3576699047527237635364229953222187234716489563*SQRT);\n d17 := ev alf(74357607912502959886982099899826543150485520824221250/\n \+ 8109789343689522799613989006529485444059581881385193-\n \+ 8276188149631282481324843493345801090640998610000/\n 8 109789343689522799613989006529485444059581881385193*SQRT);\n d42 \+ := evalf(1030484186012736659906682306185879664010577739584/\n \+ 96221238834312592026877197081263671772079653125-\n 3 90410094670758467158067206228065646634145664/\n 192442477 66862518405375439416252734354415930625*SQRT);\n d43 := evalf(-140 40492752991105957745181536605742675826055603904/\n 211686 725435487702459129833578780077898575236875+\n 10340070854 340934474776184767726915029408555776/\n 96221238834312592 026877197081263671772079653125*SQRT);\n d44 := evalf(190474670029 177038707050892899545193058401433877808/\n 10584336271774 38512295649167893900389492876184375-\n 160383259177898125 080021668421251314614943766144/\n 67354867184018814418814 0379568845702404557571875*SQRT);\n d45 := evalf(-2682728115837994 05050526324644033445272252559656704/\n 105843362717743851 2295649167893900389492876184375+\n 2478821923703818496993 9863752518812512962779136/\n 9622123883431259202687719708 1263671772079653125*SQRT);\n d46 := evalf(30591809237766123963682 0540615387742339826576896/\n 1693493803483901619673038668 630240623188601895-\n 13933681462240583660826319948472250 2398578688/\n 1077677874944301030701024607310153123847292 115*SQRT);\n d47 := evalf(-12153303341163340651693384427927065347 7611032576/\n 2370891324877462267542254136082336872464042 653+\n 4875229117031834623265977816148826703888384/\n \+ 215535574988860206140204921462030624769458423*SQRT);\n \+ d52 := evalf(38874238489059856872960010130592130908010593477/\n \+ 23685228020753868806615925435387980743896530000-\n \+ 7363963142166995237151335821316868900409671/\n 236852280 2075386880661592543538798074389653000*SQRT);\n d53 := evalf(97517 843029873091519009069373133624672649307/\n 59213070051884 67201653981358846995185974132500*SQRT-\n 4815154513967887 4367120944853209025621358693017/\n 4737045604150773761323 185087077596148779306000);\n d54 := evalf(26129139007379869665900 12577679956099582506949761/\n 947409120830154752264637017 41551922975586120000-\n 302516872726528611764509919139757 7170653585141/\n 8289829807263854082315573902385793260363 7855000*SQRT);\n d55 := evalf(58444804358684592193007186280952224 509465238/\n 14803267512971168004134953397117487964935331 25*SQRT-\n 2300088505436171265394324266927747785202085685 73/\n 5921307005188467201653981358846995185974132500);\n \+ d56 := evalf(131142377740173337114582208861075368648359501/\n \+ 4737045604150773761323185087077596148779306-\n \+ 328523513234096986248906281087789711439204/\n 16579659614 527708164631147804771586520727571*SQRT);\n d57 := evalf(574732313 81411087623079589525084164283360/\n 165796596145277081646 31147804771586520727571*SQRT-\n 1302483521953781147477936 15711977046612476140/\n 165796596145277081646311478047715 86520727571);\n d62 := evalf(499969422347829786019491696078958893 67429710815381/\n 406748242741023170082846565650028207774 9923325000-\n 9470941532182236108083986705130470199924727 863/\n 406748242741023170082846565650028207774992332500*S QRT);\n d63 := evalf(12541966490732179776226396139937802765056374 3371/\n 1016870606852557925207116414125070519437480831250 *SQRT-\n 619286734463384620050862458582395426992818363130 01/\n 813496485482046340165693131300056415549984665000); \n d64 := evalf(3360521271597980850578036775928273706653274923439 633/\n 16269929709640926803313862626001128310999693300000 -\n 3890730519393186362969470712211710116041902648773/\n \+ 14236188495935810952899629797750987272124731637500*SQRT); \n d65 := evalf(150334083496796172533193084895058207211461442028/ \n 508435303426278962603558207062535259718740415625*SQRT- \n 295819022084621912852297173475226628279869278088269/\n 1016870606852557925207116414125070519437480831250);\n \+ d66 := evalf(168664857222933206806474670122706725038694237853/\n \+ 813496485482046340165693131300056415549984665-\n \+ 845041433727662371488993912982186607664350024/\n 56944 75398374324381159851919100394908849892655*SQRT);\n d67 := evalf(2 9566992858073804469903455415505672253706432/\n 1138895079 674864876231970383820078981769978531*SQRT-\n 670060131747 21112994157522457885661218493934968/\n 113889507967486487 6231970383820078981769978531);\n d72 := evalf(3886334222488465556 76606660186242923213784313/\n 473704560415077376132318508 70775961487793060-\n 736189905831886845160415708568536832 98499/\n 4737045604150773761323185087077596148779306*SQRT );\n d73 := evalf(-5295185333962630583023577697115483804198746303 /\n 104215003291317022749110071915707115273144732+\n \+ 6824335646956455717811622251749704277288081/\n 8 2898298072638540823155739023857932603637855*SQRT);\n d74 := evalf (287339966473756017908665309159049643016781339799/\n 2084 300065826340454982201438314142305462894640-\n 21170245508 0042913399624338443126721556529503/\n 1160576173016939571 524180346334011056450929970*SQRT);\n d75 := evalf(-17705717272062 6133379275321267100009364477099549/\n 9118812787990239490 54713129262437258640016405+\n 163599583162308734196252947 86296633152420616/\n 828982980726385408231557390238579326 03637855*SQRT);\n d76 := evalf(3605404526772494108751360829428331 049685114750/\n 26053750822829255687277517978926778818286 183-\n 11495100037949109721593516048526324108566000/\n \+ 116057617301693957152418034633401105645092997*SQRT);\n \+ d77 := evalf(-50131560017645533374150780148135050314873910000/\n \+ 1276633790318633528676598380967412162096022967+\n \+ 2010999266779263039787284525567039103440000/\n 11605761 7301693957152418034633401105645092997*SQRT);\n d82 := evalf(98751 7525934319097974257523533243267886225939333/\n 2315467891 30889821453477287056352899752332477280-\n 187065855071882 447355261631547265209261485959/\n 23154678913088982145347 728705635289975233247728*SQRT);\n d83 := evalf(-12231878121453676 64678446448033676758769910395993/\n 463093578261779642906 95457411270579950466495456+\n 247723383984519342556561887 7385142652655573403/\n 5788669728272245536336932176408822 4938083119320*SQRT);\n d84 := evalf(66375532255437640136901686415 740467536876489493569/\n 92618715652355928581390914822541 1599009329909120-\n 7684799119405557756406363485485499992 5020209589/\n 8104137619581143750871705046972351491331636 70480*SQRT);\n d85 := evalf(-584288669978066240151608560181430030 9027744285117/\n 5788669728272245536336932176408822493808 3119320+\n 742333108598975881415497750928209729291085451/ \n 7235837160340306920421165220511028117260389915*SQRT); \n d86 := evalf(416424222842223069560782175798972236238630753625/ \n 5788669728272245536336932176408822493808311932-\n \+ 521590164221940853617305790701881956426182250/\n \+ 10130172024476429688589631308715439364164545881*SQRT);\n d87 := \+ evalf(-206792685072787825168371968111057082548854878750/\n \+ 10130172024476429688589631308715439364164545881+\n 9124 9091730109060430348035347604399318590000/\n 1013017202447 6429688589631308715439364164545881*SQRT);\n d92 := evalf(61600078 948691438535436498866675033975470023823/\n 35527842031130 803209923888153081971115844795000-\n 11668928538893450752 821474588161849014318229/\n 35527842031130803209923888153 08197111584479500*SQRT);\n d93 := evalf(-763008896737730524543747 02649089814913461270283/\n 710556840622616064198477763061 6394223168959000+\n 1545266753260472356151204198140222930 79734993/\n 888196050778270080248097203827049277896119875 0*SQRT);\n d94 := evalf(41404207214731703944340007459266450637402 52819139/\n 142111368124523212839695552612327884463379180 000-\n 4793679302170705180291874471420567928024745759/\n \+ 124347447108957811234733608535786898905456782500*SQRT);\n d95 := evalf(-364471791682091940189183224498249828899461859127/ \n 8881960507782700802480972038270492778961198750+\n \+ 185223155620089139233580461930627700057441924/\n \+ 4440980253891350401240486019135246389480599375*SQRT);\n d96 := e valf(207808078982363665286549532666350977178735399/\n 710 5568406226160641984777630616394223168959-\n 1041156052866 067027563147164204148901640792/\n 49738978843583124493893 443414314759562182713*SQRT);\n d97 := evalf(-41278281401860572790 0414938789836129072419720/\n 4973897884358312449389344341 4314759562182713+\n 1821440485079945313586220724250868771 61280/\n 49738978843583124493893443414314759562182713*SQR T);\n dB2 := evalf(-564560335725330998034853598436898292948498354 11003601/\n 178615513051943284591718350196575482654405180 78422271+\n 142403276592771202378029928655719939171161840 5510/\n 2665903179879750516294303734277246009767241504242 13*SQRT);\n dB3 := evalf(1195899351048129091443514166119525885053 12505652440033/\n 595385043506477615305727833988584942181 3506026140757-\n 7543144964534395189741558797930488133717 249785068/\n 26659031798797505162943037342772460097672415 0424213*SQRT);\n dB4 := evalf(-1003855881122743285477194596323330 545077681204327771666/\n 17861551305194328459171835019657 548265440518078422271+\n 16714367005597800975160663279434 229819461730073606/\n 26659031798797505162943037342772460 0976724150424213*SQRT);\n dB5 := evalf(14667014022877264049898895 64026043605393485683669975168/\n 178615513051943284591718 35019657548265440518078422271-\n 180831576254761745665401 67857970353794914333214048/\n 266590317987975051629430373 427724600976724150424213*SQRT);\n dB6 := evalf(-36416525530250223 0907385791408911679802956387736440000/\n 5953850435064776 153057278339885849421813506026140757+\n 53386060368576275 5744887331563174923985551960000/\n 1568178341105735597820 1786672219094175101420613189*SQRT);\n dB7 := evalf(32733647300061 7945579893516531854042871977002320800000/\n 1786155130519 4328459171835019657548265440518078422271-\n 1587727444172 910090322320546664560990296148800000/\n 26659031798797505 1629430373427724600976724150424213*SQRT);\n dC2 := evalf(11352303 23607327582930999838580422891731542256382488105/\n 291457 742976870051344267267922881921818948292009982364+\n 59066 244383911681051255770329712958815574758756930765/\n 14572 8871488435025672133633961440960909474146004991182*SQRT);\n dC3 := evalf(-3006674812544326620349663912731736074211477170882749457/\n \+ 145728871488435025672133633961440960909474146004991182-\n \+ 156437848397470984648344464490883899812694876944585301/\n \+ 72864435744217512836066816980720480454737073002495591*SQRT );\n dC4 := evalf(13324592466308207367606604383798620669469582473 836593513/\n 29145774297687005134426726792288192181894829 2009982364+\n 6932810184545611044349992293410993689650701 93606128909/\n 145728871488435025672133633961440960909474 146004991182*SQRT);\n dC5 := evalf(-37502796041470853712561666940 0008694050450791797834536/\n 7286443574421751283606681698 0720480454737073002495591*SQRT-\n 36039460211503516330456 59458427844910607167834397260676/\n 728644357442175128360 66816980720480454737073002495591);\n dC6 := evalf(164432673922640 136583813059658606168442788666791315000/\n 66240396131106 82985096983361883680041339733909317781+\n 171109250706981 95778542993357056503351376264006590000/\n 662403961311068 2985096983361883680041339733909317781*SQRT);\n dC7 := evalf(-3164 31683205410296835853297045715795458050097420600000/\n 728 64435744217512836066816980720480454737073002495591-\n 329 27998384737024533139292872135106892315711511600000/\n 728 64435744217512836066816980720480454737073002495591*SQRT);\n dD2 : = evalf(-36973941277404807553093649179718938285760000000000000/\n \+ 284771207968754616793185268225185417780450548776251+\n \+ 58043815619384227481546325677386120000000000000/\n \+ 46753481905317922160075193290702083516193373679683*SQRT);\n dD3 \+ := evalf(195852093883494425825008126285129714960768000000000000/\n \+ 284771207968754616793185268225185417780450548776251-\n \+ 307459860466403526034884323376956816000000000000/\n \+ 46753481905317922160075193290702083516193373679683*SQRT);\n dD 4 := evalf(-433975986325961246403245484155164053784256000000000000/\n \+ 284771207968754616793185268225185417780450548776251+\n \+ 681280417052486840321147312190395272000000000000/\n \+ 46753481905317922160075193290702083516193373679683*SQRT);\n \+ dD5 := evalf(469515606769648844859076505274862984629248000000000000/ \n 284771207968754616793185268225185417780450548776251-\n 737072553485530165777879848345064576000000000000/\n \+ 46753481905317922160075193290702083516193373679683*SQRT);\n \+ dD6 := evalf(-2356419237083676160429808173261579763200000000000000 00/\n 284771207968754616793185268225185417780450548776251 +\n 33629474507481161574920311385440000000000000000/\n \+ 4250316536847083832734108480972916683290306698153*SQRT);\n \+ dD7 := evalf(4122415065859039931523531910104826880000000000000000 0/\n 284771207968754616793185268225185417780450548776251- \n 64716038302230153314052891385600000000000000000/\n \+ 46753481905317922160075193290702083516193373679683*SQRT);\n \+ dE2 := evalf(-413250732284251416811693521464553882942612500000/\n 17756815447159175444319959298910369163699228541+\n \+ 105132434254010817990034583829762376625000000/\n \+ 362383988717534192741223659161436105381616909*SQRT);\n dE3 := eva lf(12347706616230164816753008131857399054272937500000/\n \+ 372893124390342684330719145277117752437683799361-\n 27287 595721332884898403388614659457906450000000/\n 17756815447 159175444319959298910369163699228541*SQRT);\n dE4 := evalf(423253 728003122852990728081422253818643175000000/\n 12429770813 0114228110239715092372584145894599787*SQRT+\n 36220066476 6610305901409376896326482752162500000/\n 1972979494128797 271591106588767818795966580949);\n dE5 := evalf(-7942748761960247 948589805513429584907086362500000/\n 13810856458901580901 137746121374731571766066643-\n 65416467132630535829216376 266057105997200000000/\n 17756815447159175444319959298910 369163699228541*SQRT);\n dE6 := evalf(310773080925872978965665954 64475575822010000000000/\n 532704463414775263329598778967 31107491097685623+\n 135188183117147745258370937294388455 00000000000/\n 731162989000671930060233618190426965564085 8811*SQRT);\n dE7 := evalf(-2507076898477820784770507860107923700 5125000000000/\n 1242977081301142281102397150923725841458 94599787-\n 402056242736557854072021829113067400000000000 00/\n 124297708130114228110239715092372584145894599787*SQ RT);\n dF2 := evalf(422685139362473999493283918132943588092710125 00000/\n 659261742298069410523989653346219672419839184979 -\n 3475580372113118510881164788100647319125000000/\n \+ 10807569545869990336458846776167535613439986639*SQRT);\n \+ dF3 := evalf(1123025565008874140379109232326967279108050000000/\n \+ 659261742298069410523989653346219672419839184979*SQRT-\n \+ 185612783596395059692053224236518788380415187500000/\n \+ 659261742298069410523989653346219672419839184979);\n dF4 := evalf(289931163366790681847885836863676693606149837500000/\n \+ 659261742298069410523989653346219672419839184979-\n \+ 2488439707639343205961834335539239033316225000000/\n 6 59261742298069410523989653346219672419839184979*SQRT);\n dF5 := e valf(-116485456126822054815821533996110224177763162500000/\n \+ 659261742298069410523989653346219672419839184979+\n 2 692225643942456702608813575242748555174800000000/\n 65926 1742298069410523989653346219672419839184979*SQRT);\n dF6 := evalf (-105714013142384696890443504719206272987617500000000/\n \+ 659261742298069410523989653346219672419839184979-\n 13511 82411507879203029805812804951694500000000000/\n 659261742 298069410523989653346219672419839184979*SQRT);\n dF7 := evalf(756 12575562563729601104034274864233130375000000000/\n 659261 742298069410523989653346219672419839184979+\n 23638131289 4791795167468392848614380000000000000/\n 6592617422980694 10523989653346219672419839184979*SQRT);\n dG2 := evalf(2022259167 73594899051143979322023883211647432000/\n 360252318195666 3445486282258722511871146662213-\n 1108694301447614594026 993238833729947327760000/\n 36025231819566634454862822587 22511871146662213*SQRT);\n dG3 := evalf(-391981914805358152828798 31893148171202666084920000/\n 176523635915876508828827830 677403081686186448437+\n 41109512548378815407008975035344 376674564576000/\n 25217662273696644118403975811057583098 026635491*SQRT);\n dG4 := evalf(110568869921931111401233522989563 9923255255864000/\n 3602523181956663445486282258722511871 146662213-\n 63764336807766909138199684127536512806000334 4000/\n 176523635915876508828827830677403081686186448437* SQRT);\n dG5 := evalf(9855170473509665730227077766520280169165593 6000/\n 25217662273696644118403975811057583098026635491*S QRT-\n 11860073990354471424207143791273473130800116584000 /\n 176523635915876508828827830677403081686186448437);\n \+ dG6 := evalf(-4509810641702468578201419796202184147587380000000/ \n 25217662273696644118403975811057583098026635491-\n \+ 346230009558287183945438320962122549295680000000/\n \+ 176523635915876508828827830677403081686186448437*SQRT);\n dG 7 := evalf(18539123779155172114386433006171406849699600000000/\n \+ 176523635915876508828827830677403081686186448437+\n \+ 60570877422561081469799562036510196211200000000/\n 176 523635915876508828827830677403081686186448437*SQRT);\n eqns := \n \{d12_=d12,d13_=d13,d14_=d14,d15_=d15,d16_=d16,d17_=d17,\n \+ d42_=d42,d43_=d43,d44_=d44,d45_=d45,d46_=d46,d47_=d47,\n d5 2_=d52,d53_=d53,d54_=d54,d55_=d55,d56_=d56,d57_=d57,\n d62_=d62 ,d63_=d63,d64_=d64,d65_=d65,d66_=d66,d67_=d67,\n d72_=d72,d73_= d73,d74_=d74,d75_=d75,d76_=d76,d77_=d77,\n d82_=d82,d83_=d83,d8 4_=d84,d85_=d85,d86_=d86,d87_=d87,\n d92_=d92,d93_=d93,d94_=d94 ,d95_=d95,d96_=d96,d97_=d97,\n dB2_=dB2,dB3_=dB3,dB4_=dB4,dB5_= dB5,dB6_=dB6,dB7_=dB7,\n dC2_=dC2,dC3_=dC3,dC4_=dC4,dC5_=dC5,dC 6_=dC6,dC7_=dC7,\n dD2_=dD2,dD3_=dD3,dD4_=dD4,dD5_=dD5,dD6_=dD6 ,dD7_=dD7,\n dE2_=dE2,dE3_=dE3,dE4_=dE4,dE5_=dE5,dE6_=dE6,dE7_= dE7,\n dF2_=dF2,dF3_=dF3,dF4_=dF4,dF5_=dF5,dF6_=dF6,dF7_=dF7,\n dG2_=dG2,dG3_=dG3,dG4_=dG4,dG5_=dG5,dG6_=dG6,dG7_=dG7\};\n \+ if outpt='rkinterp' then\n soln := [soln,[xk,yk]];\n \+ return subs(`union`(eqns,\{SOLN_=soln\}),eval(rk67interp));\n el if outpt='derivinterp' then\n soln := [soln,[xk,uk]];\n \+ return subs(`union`(eqns,\{SOLN_=soln\}),eval(rk67interp));\n e lse # outpt='interp_pair'\n soln := [soln,[xk,yk]];\n \+ soln2 := [soln2,[xk,uk]];\n return subs(`union`(eqns,\{SOLN_=s oln\}),eval(rk67interp)),\n subs(`union`(eqns,\{SOLN_=s oln2\}),eval(rk67interp));\n end if;\n else\n soln := [sol n,[xk,yk,uk]];\n Digits := saveDigits;\n if outpt='points' t hen\n return evalf([seq([soln[i,1],soln[i,2]],i=1..nops(soln)) ]); \n elif outpt='derivpts' then\n return evalf([se q([soln[i,1],soln[i,3]],i=1..nops(soln))]);\n elif outpt='points_ pair' then\n return evalf([seq([soln[i,1],soln[i,2]],i=1..nops (soln))]),\n evalf([seq([soln[i,1],soln[i,3]],i=1..nops(soln ))]); \n else # outpt='endpt'\n return soln[nops(soln),2 ];\n end if;\n end if;\nend proc: # of de2rk67" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 1 ";" }}}} {SECT 1 {PARA 4 "" 0 "" {TEXT -1 23 "de2rk78: implementation" }}{PARA 0 "" 0 "" {TEXT -1 90 "\nThe code adapted from \"Numerical Recipes in \+ C \", Cambridge University Press, pp 714 -722." }}{PARA 0 "" 0 "" {TEXT -1 85 "The procedure uses constants supplied to Maple by Jim Ver ner for the dverk78 method. " }}{PARA 0 "" 0 "" {TEXT -1 0 "" }} {EXCHG {PARA 0 "> " 0 "rungk78" {MPLTEXT 1 0 86445 "de2rk78 := proc(gx yu::algebraic,xrng::(name=realcons..realcons),\n iy::(name =realcons),iu::(name=realcons))\n local soln,xk,yk,k,xend,xstart,h,x rg,c2,c3,c4,c5,c6,c7,c8,c9,cA,cB,cF,cG,\n cH,cI,cJ,cK,cL,a21,a31,a32 ,a41,a43,a51,a53,a54,a61,a63,a64,a65,a71,a74,a75,\n a76,a81,a84,a85, a86,a87,a91,a94,a95,a96,a97,a98,aA1,aA4,aA5,aA6,aA7,aA8,aA9,\n aB1,a B4,aB5,aB6,aB7,aB8,aB9,aBA,aC1,aC4,aC5,aC6,aC7,aC8,aC9,aCA,aCB,aD1,aD4 ,\n aD5,aD6,aD7,aD8,aD9,aDA,aE1,aE6,aE7,aE8,aE9,aEA,aEB,aEC,aF1,aF6, aF7,aF8,aF9,\n aFA,aFB,aFC,aFE,aG1,aG6,aG7,aG8,aG9,aGA,aGB,aGC,aGE,a GF,aH1,aH6,aH7,aH8,aH9,\n aHA,aHB,aHC,aHE,aHF,aHG,aI1,aI6,aI7,aI8,aI 9,aIA,aIB,aIC,aIE,aIF,aIG,aIH,aJ1,\n aJ6,aJ7,aJ8,aJ9,aJA,aJB,aJC,aJE ,aJF,aJG,aJH,aK1,aK6,aK7,aK8,aK9,aKA,aKB,aKC,\n aKE,aKF,aKG,aKH,aL1, aL6,aL7,aL8,aL9,aLA,aLB,aLC,aLE,aLF,aLG,aLH,f1,f2,f3,f4,\n f5,f6,f7, f8,f9,fA,fB,fC,fD,fE,fF,fG,fH,fI,fJ,fK,fL,g1,g2,g3,g4,g5,g6,g7,g8,\n \+ g9,gA,gB,gC,gD,gE,gF,gG,gH,gI,gJ,gK,gL,b1,b6,b7,b8,b9,bA,bB,bC,e1,e6, e7,e8,\n e9,eA,eB,eC,eD,d12,d62,d72,d82,d92,dA2,dB2,dC2,dE2,dF2,dG2, dH2,dI2,dJ2,dK2,\n dL2,d13,d63,d73,d83,d93,dA3,dB3,dC3,dE3,dF3,dG3,d H3,dI3,dJ3,dK3,dL3,d14,d64,\n d74,d84,d94,dA4,dB4,dC4,dE4,dF4,dG4,dH 4,dI4,dJ4,dK4,dL4,d15,d65,d75,d85,d95,\n dA5,dB5,dC5,dE5,dF5,dG5,dH5 ,dI5,dJ5,dK5,dL5,d16,d66,d76,d86,d96,dA6,dB6,dC6,\n dE6,dF6,dG6,dH6, dI6,dJ6,dK6,dL6,d17,d67,d77,d87,d97,dA7,dB7,dC7,dE7,dF7,dG7,\n dH7,d I7,dJ7,dK7,dL7,d18,d68,d78,d88,d98,dA8,dB8,dC8,dE8,dF8,dG8,dH8,dI8,dJ8 ,\n dK8,dL8,uk,yout,uout,errst,errst2,hmx,hmn,hstrt,sgn,gn,maxstps,t iny,scale,\n scale2,err,htemp,hnext,eps,i,Options,prntflg,t,tt,ff,gg ,errcntl,maxval,\n maxval2,maxtemp,maxtemp2,x,y,u,errc,x0,y0,u0,xn,o utpt,minstepsize,inc,\n rk78step,rk78interp,maxstepsize,laststep,sav eDigits,stdstep,drvstep,safety,\n pgrow,pshrink,errcontrol,finished, soln2,eqns,SQRT7;\n\nrk78interp := proc(x_rk78interp::realcons)\n lo cal b1,b6,b7,b8,b9,bA,bB,bC,bE,bF,bG,bH,bI,bJ,bK,bL,xF,xS,yF,\n f1,f 6,f7,f8,f9,fA,fB,fC,fE,fF,fG,fH,fI,fJ,fK,fL,d12,d62,d72,d82,\n d92,d A2,dB2,dC2,dE2,dF2,dG2,dH2,dI2,dJ2,dK2,dL2,d13,d63,d73,d83,d93,dA3,\n \+ dB3,dC3,dE3,dF3,dG3,dH3,dI3,dJ3,dK3,dL3,d14,d64,d74,d84,d94,dA4,dB4, dC4,\n dE4,dF4,dG4,dH4,dI4,dJ4,dK4,dL4,d15,d65,d75,d85,d95,dA5,dB5,d C5,dE5,dF5,\n dG5,dH5,dI5,dJ5,dK5,dL5,d16,d66,d76,d86,d96,dA6,dB6,dC 6,dE6,dF6,dG6,dH6,\n dI6,dJ6,dK6,dL6,d17,d67,d77,d87,d97,dA7,dB7,dC7 ,dE7,dF7,dG7,dH7,dI7,dJ7,\n dK7,dL7,d18,d68,d78,d88,d98,dA8,dB8,dC8, dE8,dF8,dG8,dH8,dI8,dJ8,dK8,dL8,\n s,t,jF,jM,jS,n,h,data,xx,ys,saveD igits;\n options `Copyright 2007 by Peter Stone`;\n \n data := S OLN_;\n saveDigits := Digits;\n Digits := max(trunc(evalhf(Digits) ),Digits+5);\n xx := evalf(x_rk78interp);\n n := nops(data);\n i f (data[1,1]data[n,1] or xxdata[1,1])) then\n er ror \"independent variable is outside the interpolation interval: %1\" ,evalf(data[1,1])..evalf(data[n,1]);\n end if;\n\n d12 := d12_; d6 2 := d62_; d72 := d72_; d82 := d82_; d92 := d92_; dA2 := dA2_;\n dB2 := dB2_; dC2 := dC2_; dE2 := dE2_; dF2 := dF2_; dG2 := dG2_; dH2 := d H2_;\n dI2 := dI2_; dJ2 := dJ2_; dK2 := dK2_; dL2 := dL2_; d13 := d1 3_; d63 := d63_;\n d73 := d73_; d83 := d83_; d93 := d93_; dA3 := dA3 _; dB3 := dB3_; dC3 := dC3_;\n dE3 := dE3_; dF3 := dF3_; dG3 := dG3_ ; dH3 := dH3_; dI3 := dI3_; dJ3 := dJ3_;\n dK3 := dK3_; dL3 := dL3_; d14 := d14_; d64 := d64_; d74 := d74_; d84 := d84_;\n d94 := d94_; \+ dA4 := dA4_; dB4 := dB4_; dC4 := dC4_; dE4 := dE4_; dF4 := dF4_;\n d G4 := dG4_; dH4 := dH4_; dI4 := dI4_; dJ4 := dJ4_; dK4 := dK4_; dL4 := dL4_;\n d15 := d15_; d65 := d65_; d75 := d75_; d85 := d85_; d95 := \+ d95_; dA5 := dA5_;\n dB5 := dB5_; dC5 := dC5_; dE5 := dE5_; dF5 := d F5_; dG5 := dG5_; dH5 := dH5_;\n dI5 := dI5_; dJ5 := dJ5_; dK5 := dK 5_; dL5 := dL5_; d16 := d16_; d66 := d66_;\n d76 := d76_; d86 := d86 _; d96 := d96_; dA6 := dA6_; dB6 := dB6_; dC6 := dC6_;\n dE6 := dE6_ ; dF6 := dF6_; dG6 := dG6_; dH6 := dH6_; dI6 := dI6_; dJ6 := dJ6_;\n \+ dK6 := dK6_; dL6 := dL6_; d17 := d17_; d67 := d67_; d77 := d77_; d87 \+ := d87_;\n d97 := d97_; dA7 := dA7_; dB7 := dB7_; dC7 := dC7_; dE7 : = dE7_; dF7 := dF7_;\n dG7 := dG7_; dH7 := dH7_; dI7 := dI7_; dJ7 := dJ7_; dK7 := dK7_; dL7 := dL7_;\n d18 := d18_; d68 := d68_; d78 := \+ d78_; d88 := d88_; d98 := d98_; dA8 := dA8_;\n dB8 := dB8_; dC8 := d C8_; dE8 := dE8_; dF8 := dF8_; dG8 := dG8_; dH8 := dH8_; \n dI8 := d I8_; dJ8 := dJ8_; dK8 := dK8_; dL8 := dL8_;\n\n # Perform a binary s earch for the interval containing x.\n n := nops(data);\n jF := 0; \n jS := n+1;\n\n if data[1,1]1 do\n jM := trunc((jF+jS)/2);\n if xx>=data[jM,1] then j F := jM else jS := jM end if;\n end do;\n if jM = n then jF \+ := n-1; jS := n end if;\n else\n while jS-jF>1 do\n jM : = trunc((jF+jS)/2);\n if xx<=data[jM,1] then jF := jM else jS : = jM end if;\n end do;\n if jM = n then jF := n-1; jS := n e nd if;\n end if;\n \n # Get the data needed from the list.\n xF := data[jF,1];\n xS := data[jS,1];\n yF := data[jF,2];\n f1 := \+ data[jF,3];\n f6 := data[jF,4];\n f7 := data[jF,5];\n f8 := data [jF,6];\n f9 := data[jF,7];\n fA := data[jF,8];\n fB := data[jF, 9];\n fC := data[jF,10];\n fE := data[jF,11];\n fF := data[jF,12 ];\n fG := data[jF,13];\n fH := data[jF,14];\n fI := data[jF,15] ;\n fJ := data[jF,16];\n fK := data[jF,17];\n fL := data[jF,18]; \n\n # Calculate the parameters.\n h := xx-xF;\n s := h/(xS-xF); \n b1 := ((((((d18*s+d17)*s+d16)*s+d15)*s+d14)*s+d13)*s+d12)*s+1;\n \+ b6 := ((((((d68*s+d67)*s+d66)*s+d65)*s+d64)*s+d63)*s+d62)*s;\n b7 \+ := ((((((d78*s+d77)*s+d76)*s+d75)*s+d74)*s+d73)*s+d72)*s;\n b8 := (( ((((d88*s+d87)*s+d86)*s+d85)*s+d84)*s+d83)*s+d82)*s;\n b9 := ((((((d 98*s+d97)*s+d96)*s+d95)*s+d94)*s+d93)*s+d92)*s;\n bA := ((((((dA8*s+ dA7)*s+dA6)*s+dA5)*s+dA4)*s+dA3)*s+dA2)*s;\n bB := ((((((dB8*s+dB7)* s+dB6)*s+dB5)*s+dB4)*s+dB3)*s+dB2)*s;\n bC := ((((((dC8*s+dC7)*s+dC6 )*s+dC5)*s+dC4)*s+dC3)*s+dC2)*s;\n bE := ((((((dE8*s+dE7)*s+dE6)*s+d E5)*s+dE4)*s+dE3)*s+dE2)*s;\n bF := ((((((dF8*s+dF7)*s+dF6)*s+dF5)*s +dF4)*s+dF3)*s+dF2)*s;\n bG := ((((((dG8*s+dG7)*s+dG6)*s+dG5)*s+dG4) *s+dG3)*s+dG2)*s;\n bH := ((((((dH8*s+dH7)*s+dH6)*s+dH5)*s+dH4)*s+dH 3)*s+dH2)*s;\n bI := ((((((dI8*s+dI7)*s+dI6)*s+dI5)*s+dI4)*s+dI3)*s+ dI2)*s;\n bJ := ((((((dJ8*s+dJ7)*s+dJ6)*s+dJ5)*s+dJ4)*s+dJ3)*s+dJ2)* s;\n bK := ((((((dK8*s+dK7)*s+dK6)*s+dK5)*s+dK4)*s+dK3)*s+dK2)*s;\n \+ bL := ((((((dL8*s+dL7)*s+dL6)*s+dL5)*s+dL4)*s+dL3)*s+dL2)*s;\n \n \+ # Calculate the interpolated y value.\n t := b1*f1 + b6*f6 + b7*f7 + b8*f8 + b9*f9 + bA*fA + bB*fB + bC*fC + bE*fE\n \+ + bF*fF + bG*fG + bH*fH + bI*fI + bJ*fJ + bK*fK + bL*fL;\n ys := y F + t*h;\n Digits := saveDigits;\n evalf(ys);\nend proc: # of rk78 interp\n \nrk78step := proc(x_rk78step::realcons)\n local c2,c3,c4 ,c5,c6,c7,c8,c9,cA,cB,a21,a31,a32,a41,a43,a51,a53,a54,\n a61,a63,a64 ,a65,a71,a74,a75,a76,a81,a84,a85,a86,a87,a91,a94,a95,a96,\n a97,a98, aA1,aA4,aA5,aA6,aA7,aA8,aA9,aB1,aB4,aB5,aB6,aB7,aB8,aB9,aBA,\n aC1,a C4,aC5,aC6,aC7,aC8,aC9,aCA,aCB,f1,f2,f3,f4,f5,f6,f7,f8,f9,fA,fB,\n f C,g1,g2,g3,g4,g5,g6,g7,g8,g9,gA,gB,gC,b1,b6,b7,b8,b9,bA,bB,bC,\n uk, xk,yk,jF,jM,jS,n,h,data,gn,xx,ys,us,saveDigits;\n options `Copyright 2004 by Peter Stone`;\n \n data := SOLN_;\n\n saveDigits := Dig its;\n Digits := max(trunc(evalhf(Digits)),Digits+5);\n\n # proced ure to evaluate the 2nd derivative as a function of x,y and u=dy/dx\n \+ gn := proc(X_,Y_,U_)\n local val; \n val := traperror(eval f(GXYU_));\n if val=lasterror or not type(val,numeric) then\n \+ error \"evaluation of 2nd derivative failed when x = %1, y = %2, \+ and the derivative u = %3\",evalf(X_,saveDigits),evalf(Y_,saveDigits), evalf(U_,saveDigits);\n end if;\n val;\n end proc;\n\n x x := evalf(x_rk78step);\n n := nops(data);\n\n if (data[1,1]data[n,1] or xxdata[1,1])) then\n error \"independent var iable is outside the interpolation interval: %1\",evalf(data[1,1])..ev alf(data[n,1]);\n end if;\n\n c2 := 0.0625; c3 := c3_; c4 := c4_; \+ c5 := 0.39; c6 := c6_; c7 := 0.156;\n c8 := 0.96; c9 := c9_; cA := c A_; cB :=0.95; a21 := c2; a31 := a31_;\n a32 := a32_; a41 := a41_; a 43 := a43_; a51 := a51_; a53 := a53_; a54 := a54_;\n a61 := a61_; a6 4 := a64_; a65 := a65_; a71 := a71_; a74 := a74_; a75 := a75_;\n a76 := a76_; a81 := a81_; a84 := -1.4; a85 := a85_; a86 := a86_; a87 := a 87_;\n a91 := a91_; a94 := a94_; a95 := a95_; a96 := a96_; a97 := a9 7_; a98 := a98_;\n aA1 := aA1_; aA4 := aA4_; aA5 := aA5_; aA6 := aA6 _; aA7 := aA7_; aA8 := aA8_;\n aA9 := aA9_; aB1 := aB1_; aB4 := aB4_ ; aB5 := aB5_; aB6 := aB6_; aB7 := aB7_;\n aB8 := aB8_; aB9 := aB9_; aBA := aBA_; aC1 := aC1_; aC4 := aC4_; aC5 := aC5_;\n aC6 := aC6_; \+ aC7 := aC7_; aC8 := aC8_; aC9 := aC9_; aCA := aCA_; aCB := aCB_;\n b 1 := b1_; b6 := b6_; b7 := b7_; b8 := b8_; b9 := b9_; bA := bA_; bB := bB_;\n bC := bC_;\n\n # Peform a binary search for the interval c ontaining x.\n n := nops(data);\n jF := 0;\n jS := n+1;\n\n if data[1,1]1 do\n jM := trunc ((jF+jS)/2);\n if xx>=data[jM,1] then jF := jM else jS := jM en d if;\n end do;\n if jM = n then jF := n-1; jS := n end if; \n else\n while jS-jF>1 do\n jM := trunc((jF+jS)/2);\n \+ if xx<=data[jM,1] then jF := jM else jS := jM end if;\n end do;\n if jM = n then jF := n-1; jS := n end if;\n end if;\n \+ \n # Get the data needed from the list.\n xk := data[jF,1];\n yk := data[jF,2];\n uk := data[jF,3];\n\n # Do one step with step-si ze ..\n h := xx-xk;\n\n f1 := uk;\n g1 := gn(xk,yk,uk);\n\n ff := a21*f1;\n gg := a21*g1;\n f2 := uk + gg*h;\n g2 := gn(xk + c 2*h,yk + ff*h,f2);\n\n ff := a31*f1 + a32*f2;\n gg := a31*g1 + a32 *g2;\n f3 := uk + gg*h;\n g3 := gn(xk + c3*h,yk + ff*h,f3); \n\n \+ ff := a41*f1 + a43*f3;\n gg := a41*g1 + a43*g3;\n f4 := uk + gg* h;\n g4 := gn(xk + c4*h,yk + ff*h,f4);\n\n ff := a51*f1 + a53*f3 + a54*f4;\n gg := a51*g1 + a53*g3 + a54*g4;\n f5 := uk + gg*h;\n \+ g5 := gn(xk + c5*h,yk + ff*h,f5);\n\n ff := a61*f1 + a64*f4 + a65*f5 ;\n gg := a61*g1 + a64*g4 + a65*g5;\n f6 := uk + gg*h;\n g6 := g n(xk + c6*h,yk + ff*h,f6);\n\n ff := a71*f1 + a74*f4 + a75*f5 + a76* f6;\n gg := a71*g1 + a74*g4 + a75*g5 + a76*g6;\n f7 := uk + gg*h; \n g7 := gn(xk + c7*h,yk + ff*h,f7);\n\n ff := a81*f1 + a84*f4 + a 85*f5 + a86*f6 + a87*f7;\n gg := a81*g1 + a84*g4 + a85*g5 + a86*g6 + a87*g7;\n f8 := uk + gg*h;\n g8 := gn(xk + c8*h,yk + ff*h,f8);\n \n ff := a91*f1 + a94*f4 + a95*f5 + a96*f6 + a97*f7 + a98*f8;\n gg := a91*g1 + a94*g4 + a95*g5 + a96*g6 + a97*g7 + a98*g8;\n f9 := uk \+ + gg*h;\n g9 := gn(xk + c9*h,yk + ff*h,f9);\n\n ff := aA1*f1 + aA4 *f4 + aA5*f5 + aA6*f6 + aA7*f7 + aA8*f8 + aA9*f9;\n gg := aA1*g1 + a A4*g4 + aA5*g5 + aA6*g6 + aA7*g7 + aA8*g8 + aA9*g9;\n fA := uk + gg* h;\n gA := gn(xk + cA*h,yk + ff*h,fA);\n\n ff := aB1*f1 + aB4*f4 + aB5*f5 + aB6*f6 + aB7*f7 + aB8*f8 + aB9*f9 + aBA*fA;\n gg := aB1*g1 + aB4*g4 + aB5*g5 + aB6*g6 + aB7*g7 + aB8*g8 + aB9*g9 + aBA*gA;\n f B := uk + gg*h;\n gB := gn(xk + cB*h,yk + ff*h,fB);\n\n ff := aC1* f1 + aC4*f4 + aC5*f5 + aC6*f6 + aC7*f7 + aC8*f8 + aC9*f9 + aCA*fA + aC B*fB;\n gg := aC1*g1 + aC4*g4 + aC5*g5 + aC6*g6 + aC7*g7 + aC8*g8 + \+ aC9*g9 + aCA*gA + aCB*gB;\n fC := uk + gg*h;\n\n if DERIV_ then\n \+ gC := gn(xk + h,yk + ff*h,fC);\n gg := b1*g1 + b6*g6 + b7*g7 + b8*g8 + b9*g9 + bA*gA + bB*gB + bC*gC;\n us := uk + gg*h;\n \+ Digits := saveDigits;\n return evalf(us);\n else \n ff \+ := b1*f1 + b6*f6 + b7*f7 + b8*f8 + b9*f9 + bA*fA + bB*fB + bC*fC;\n \+ ys := yk + ff*h;\n Digits := saveDigits;\n return evalf(y s);\n end if;\nend proc: # of rk78step\n\n # start of main procedu re\n x := op(1,xrng);\n y := op(1,iy);\n u := op(1,iu);\n if n ot type(indets(gxyu,name) minus \{x,y,u\},set(realcons)) then\n e rror \"the 1st argument, %1, must depend only on the variables %2, %3 \+ and %4\",gxyu,x,y,u;\n end if;\n xrg := op(2,xrng);\n x0 := op(1 ,xrg);\n xn := op(2,xrg);\n y0 := op(2,iy);\n u0 := op(2,iu);\n \n # Get the options.\n # Set the default values to start with.\n \+ maxstps := 2000;\n t := Float(1,-Digits);\n hmx := 0.5;\n hstr t := evalf(0.1*10^(-ceil(Digits/10)));\n hmn := min(0.000005,hstrt/2 0);\n errcntl := 0;\n maxtemp := 0;\n maxtemp2 := 0;\n outpt : = 'rkinterp';\n prntflg := false;\n if nargs>4 then\n Options :=[args[5..nargs]];\n if not type(Options,list(equation)) then\n \+ error \"each optional argument must be an equation\"\n en d if;\n if hasoption(Options,'maxsteps','maxstps','Options') then \n if not type(maxstps,posint) then\n error \"\\\"m axsteps\\\" must be a positive integer\"\n end if;\n end \+ if;\n if hasoption(Options,'tolerance','t','Options') then \n \+ tt := evalf(t); \n if not type(tt,float) or \n \+ tt>Float(1,-iquo(Digits,2)) or tthmx) or evalf( hstrttrue then prntflg := false end if; \n end if;\n if nops(Options)>0 then\n error \" %1 is not a valid option for %2\",op(1,Options), procname;\n end \+ if;\n end if;\n\n stdstep := evalb(member(outpt,\{'points','rkstep ','rkinterp','endpt'\}));\n drvstep := evalb(member(outpt,\{'derivpt s','derivstep','derivinterp'\}));\n\n if prntflg then\n print(` method: Verner 13 stage, order 7-8 .. Maple's dverk78 coefficients`); \n print(`an embedded order 7 scheme provides error control`);\n \+ if outpt='rkinterp' then\n print(`8 extra stages are used to construct the interpolation procedure`);\n end if;\n pri nt(``);\n end if;\n\n saveDigits := Digits;\n Digits := max(trun c(evalhf(Digits)),Digits+5);\n\n # procedure to evaluate the 2nd der ivative as a function of x,y and u=dy/dx\n gn := subs(\{GXYU_=evalf( gxyu),X_=x,Y_=y,U_=u\},\n proc(X_,Y_,U_)\n local val; \n \+ val := traperror(evalf(GXYU_));\n if val=lasterror or not type( val,numeric) then\n error \"evaluation of 2nd derivative faile d when x = %1, y = %2, and the derivative u = %3\",evalf(X_,saveDigits ),evalf(Y_,saveDigits),evalf(U_,saveDigits);\n end if;\n val ;\n end proc);\n\n ## coefficients by Jim Verner (supplied to M aple for dsolve's dverk78 method)\n # nodes\n c2 := 0.0625;\n c3 := evalf(112/1065);\n c4 := evalf(56/355);\n c5 := 0.39;\n c6 : = evalf(7/15);\n c7 := 0.156;\n c8 := 0.96;\n c9 := evalf(144358 68/16178861);\n cA := evalf(11/12);\n cB := 0.95;\n\n # linking \+ coefficients\n a21 := c2;\n a31 := evalf(18928/1134225);\n a32 : = evalf(100352/1134225);\n a41 := evalf(14/355);\n a43 := evalf(42 /355);\n a51 := evalf(94495479/250880000);\n a53 := evalf(-3528065 97/250880000);\n a54 := evalf(178077159/125440000);\n a61 := evalf (12089/252720);\n a64 := evalf(2505377/10685520);\n a65 := evalf(9 60400/5209191);\n a71 := evalf(21400899/350000000);\n a74 := evalf (3064329829899/27126050000000);\n a75 := evalf(-21643947/592609375); \n a76 := evalf(124391943/6756250000);\n a81 := evalf(-15365458811 /13609565775);\n a84 := -1.4;\n a85 := evalf(-8339128164608/939060 038475);\n a86 := evalf(341936800488/47951126225);\n a87 := evalf( 1993321838240/380523459069);\n a91 := evalf(-18409112522823765844381 57336464708426954728061551/\n 2991923615171151921596 253813483118262195533733898);\n a94 := evalf(-1476496080404865730363 8372252908780219281424435/\n 2981692102565021975611711269 209606363661854518);\n a95 := evalf(-8753250485021304411186134217852 66742862694404520560000/\n 17021203042889441839557167757596 1339495435011888324169);\n a96 := evalf(7632051964154290925661849798 370645637589377834346780/\n 1734087257418811583049800347581 865260479233950396659);\n a97 := evalf(75198347919711375170485321796 52347729899303513750000/\n 10456773035023175965978907078123 49832637339039997351);\n a98 := evalf(136604268348916635129331554935 8278750/\n 144631418224267718165055326464180836641);\n a A1 := evalf(-63077736705254280154824845013881/783693578537866338551121 90394368);\n aA4 := evalf(-31948346510820970247215/69560092169600266 32192);\n aA5 := evalf(-3378604805394255292453489375/517042670569824 692230499952);\n aA6 := evalf(1001587844183325981198091450220795/184 232684207722503701669953872896);\n aA7 := evalf(18702307523134990076 8014890274453125/25224698849808178010752575653374848);\n aA8 := eval f(1908158550070998850625/117087067039189929394176);\n aA9 := evalf(- 52956818288156668227044990077324877908565/\n 291277995947 7433986349822224412353951940608);\n aB1 := evalf(-101161065918269095 34781157993685116703/\n 9562819945036894030442231411 871744000);\n aB4 := evalf(-9623541317323077848129/38644495649777925 73440);\n aB5 := evalf(-4823348333146829406881375/576413233634141239 944816);\n aB6 := evalf(6566119246514996884067001154977284529/970305 487021846325473990863582315520);\n aB7 := evalf(22264551305192135492 56016892506730559375/\n 3648804431596752555774 35648380047355776);\n aB8 := evalf(39747262782380466933662225/175603 2802431424164410720256);\n aB9 := evalf(4817577141926095533524468380 5171548038966866545122229/\n 198978642051381514652888016595 2064118903852843612160000);\n aBA := evalf(-2378292068163246/4776872 8487211875);\n aC1 := evalf(-3218022174758599831659045535578571/1453 396753634469525663775847094384);\n aC4 := evalf(26290092604284231996 745/5760876126062860430544);\n aC5 := evalf(-69706929756092645204558 6710000/41107967755245430594036502319);\n aC6 := evalf(1827357820434 213461438077550902273440/139381013914245317709567680839641697);\n aC 7 := evalf(643504802814241550941949227194107500000/\n \+ 242124609118836550860494007545333945331);\n aC8 := evalf(162 259938151380266113750/59091082835244183497007);\n aC9 := evalf(-2302 8251632873523818545414856857015616678575554130463402/\n 2 0013169183191444503443905240405603349978424504151629055);\n aCA := e valf(7958341351371843889152/3284467988443203581305);\n aCB := evalf( -507974327957860843878400/121555654819179042718967);\n aD1 := evalf( -549080624436801105208519835138333/353987109028707139687100885600400); \n aD4 := evalf(29116675312186033956481/5331818957833865866320);\n \+ aD5 := evalf(-91153092961177216058210567600/7609267653017028089793994 539);\n aD6 := evalf(1540775569495234383390307262972464/164751248733 597841985831445059895);\n aD7 := evalf(-2027488254536386321212021357 622300000/\n 7563800784313191306927092359781 550321);\n aD8 := evalf(-707592954577756600025/243067160700710125392 6);\n aD9 := evalf(-315869406877370103440389763510384832076674110731 /\n 550845901016714794114516357859531754926300500125);\n aDA := evalf(4305840920849725632512/5066413598663346018375);\n\n \+ # weights\n b1 := evalf(4631674879841/103782082379976);\n b6 := ev alf(14327219974204125/40489566827933216);\n b7 := evalf(272076232401 0009765625000/10917367480696813922225349);\n b8 := evalf(-4985330058 59375/95352091037424);\n b9 := evalf(4059320304637772479267050305961 75437402459637909765779/\n 78803919436321841083201886041201 537229769115088303952);\n bA := evalf(-10290327637248/1082076946951) ;\n bB := evalf(863264105888000/85814662253313);\n bC := evalf(-29 746300739/247142463456);\n\n # error coefficients\n e1 := evalf(-2 6977003309/415128329519904);\n e6 := evalf(-10116376240875/101223917 06983304);\n e7 := evalf(2634472979394531250000/10917367480696813922 225349);\n e8 := evalf(-10537891917578125/1334929274523936);\n e9 \+ := evalf(483817271607736806435859407382949628502464641547815749/\n \+ 394019597181609205416009430206007686148845575441519760);\n \+ eA := evalf(-20718338541312/5410384734755);\n eB := evalf(8632641058 88000/85814662253313);\n eC := evalf(-29746300739/247142463456);\n \+ eD := evalf(45884771325/82380821152);\n\n ## nodes and linking coef ficients for 8 extra stages used for interpolation\n if member(outpt ,\{'rkinterp','derivinterp','interp_pair'\}) then\n SQRT7 := eval f[Digits+3](sqrt(7));\n cF := evalf(1/2-SQRT7/14);\n cG := 0 .45;\n cH := 0.1;\n cI := .325;\n cJ := 0.4;\n cK \+ := 0.3;\n cL := 0.7;\n aE1 := b1; aE6 := b6; aE7 := b7; aE8 \+ := b8; aE9 := b9;\n aEA := bA; aEB := bB; aEC := bC;\n aF1 : = evalf(923507123432989/20341288146475296 +\n 3728619917 660047/7973784953418316032*SQRT7);\n aF6 := evalf(153301253723984 1375/7935955098274910336 -\n 11049456415304617875/1944308 99907735303232*SQRT7);\n aF7 := evalf(129834778101757666015625000 /534951006554143882189042101 -\n 827664115296743896484375 00/26212599321153050227263062949*SQRT7);\n aF8 := evalf(130615647 53515625/18689009843335104 + \n 31047286856168359375/2564 1321505055762688*SQRT7);\n aF9 := evalf(-321179942882656684988231 1586102611111468427562764815533/\n 1544556820951908085230 7569664075501297034746557307574592 -\n 356099260585467255 08440519811766382833790503793377686129/\n 635993985097844 50568325286852075593576025427000678248320*SQRT7);\n aFA := evalf( 37302437685024/53021770400599+15742143124443936/12990333748146755*SQRT 7);\n aFB := evalf(-5071676622092000/4204918450412337 -\n \+ 380378998046332000/206041004070204513*SQRT7);\n aFC := eval f(1100613127343/48439922837376-29746300739/1424703612864*SQRT7);\n \+ aFE := evalf(3/392-3/392*SQRT7);\n aG1 := evalf(379175609750815 3347/82000657682944000000 +\n 821104665636321*SQRT7/64224 2913320960000);\n aG6 := evalf(768457351210057567857/518266455397 5451648000 -\n 62532827932224226599*SQRT7/226741574236426 0096000);\n aG7 := evalf(253006492725129434765625/107825851661203 1004664232 -\n 46193539913722265625*SQRT7/550332454705374 9203536);\n aG8 := evalf(15520930467726675/5625380975771648 -\n \+ 223623196267702275*SQRT7/157510667321606144);\n aG9 : = evalf(-2460557325340377391451533907481561939821407244475387801507/\n 25943677180682087599408028326321493738195593444709120000 00 +\n 19909145981716051470356945303928592126330523948448 1767*SQRT7/\n 4167675722502032152644473002111895025794576 43520000000);\n aGA := evalf(42605915213080224/16907452296109375 \+ -\n 1106650521763256349*SQRT7/860743025983750000);\n \+ aGB := evalf(-61485359208535917/14302443708885500 +\n 88 7648262380253891*SQRT7/400468423848794000);\n aGC := evalf(-15396 38779949901/263618627686400000);\n aGE := evalf(101277*SQRT7/6400 0000 - 79893/16000000);\n aGF := evalf(708939*SQRT7/16000000);\n \+ aH1 := evalf(-4215121951102178392285859687667763860057798131121*S QRT7/\n 5524907006530535028430669612520227037472745107200 000 +\n 2146494832028430179008259285220940994755770724705 07941/\n 430735562496636837154026079666108200408968890420 0800000);\n aH6 := evalf(1185913430248674317434870618267722069953 058737510283*SQRT7/\n 30008442317179171818955614503925786 051785131637358800 -\n 3119944319113373568400240361006807 75990247322848978459/\n 336094553952406724372302882443968 8037799934743384185600);\n aH7 := evalf(3993218188734046844685987 8465078752005970844232914062500*SQRT7/\n 7991406437185379 813952210414813050100306894094759398308201 +\n 3543645172 41886228469307408685840332599095120809109472656250/\n 453 1127449884110354510903305198999406874008951728578840749967);\n aH 8 := evalf(4482425539475296955559304996688796936033039629875*SQRT7/\n \+ 20845977587384504244419538387493205979265982789632 -\n \+ 46323379005207505717635146937831732889161714866875/\n \+ 48707428401292639724941806040008163970784940556544);\n aH 9 := evalf(22574276849009355247368902305397516894891496017540384017227 17509558293702749265180053129*SQRT7/\n15382319963668643757680340043617 3457280333898078105274095131111501836720940560681990528000 +\n42492774 7007115794173549944207313054512456246547193016720629059219336389266382 8255136238663/\n511041528480475840465122234652209083659859298107142717 25745707161059426234354242200368775000);\n aHA := evalf(826748868 09376207867730668398503287366098540852*SQRT7/\n 729064214 207911394139200255820908786902329141125 -\n 7288004949863 2524878182125169775730823179168857424/\n 1079575855654022 64132150807111942262675921815128125);\n aHB := evalf(-14452334021 133180240325340727774770157932021057436*SQRT7/\n 42400459 244893414400850901677665011873556514674975 +\n 1379482776 995886509031984497778742508172264966358576/\n 89040964414 2761702417868935230965249344686808174475);\n aHC := evalf(2400779 3882669277531292945295458719370616706273*SQRT7/\n 3052786 573498438708373913400079618470033568180000 -\n 8388482751 1307050547839026717499224825563955775903/\n 2564340721738 688515034087256066879514828197271200000);\n aHE := evalf(-4114436 729416819286145536389728774047607/\n 45654231239218086213 9685668388139491300000 +\n 167309383720093788703940567057 1696062733*SQRT7/\n 9130846247843617242793713367762789826 00000);\n aHF := evalf(1001373308041744989114984611143231300353/ \n 40206851375447746381620044659182739290625 -\n \+ 892131449472993412180461043706539941657*SQRT7/\n 257 32384880286557684236828581876953146000);\n aHG := evalf(-29759184 46967643161447796202231979904*SQRT7/\n 141528116841576067 263302557200323242303 +\n 5330320873680983609804206303875 6642432/\n 707640584207880336316512786001616211515);\n \+ aI1 := evalf(-674107528569903747657*SQRT7/194736308727800627200000 \+ +\n 6676290817642855930112293/173510051076470358835200000 );\n aI6 := evalf(-227711699316765384611310459*SQRT7/704009836106 7108075752652800 +\n 860764742109302032039902111/70400983 61067108075752652800);\n aI7 := evalf(-30419486646169688917382812 5*SQRT7/7899680270269138271354212352 +\n 5488869008435008 2907540673828125/365048175129272014088413829892096);\n aI8 := eva lf(-9661338110897182125*SQRT7/209930810853020925952 +\n 1 7032572234499325505625/51013187037284085006336);\n aI9 := evalf(- 399866634050793590138577034430419123328121213083504583*SQRT7/\n \+ 15662284975171767637632388396363220624764129071529984000 -\n \+ 35536138789892879785467436310191605063042447812379594764641 69103/\n 901446230039706917622219027421452669331200803483 07809053900800000);\n aIA := evalf(17668130783823819/665893505816 00000);\n aIB := evalf(661671021433877476047*SQRT7/97141739992551 63166400 -\n 65155243311676871271269/11657008799106195799 6800);\n aIC := evalf(-729594201713541940737*SQRT7/35809785668998 8567040000 +\n 62747303504529774530387/537146785034982850 5600000);\n aIE := evalf(3949144173/1143910400000 - 908415729*SQR T7/3145753600000);\n aIF := evalf(319287235181733/976956677120000 0 + 29511701788023*SQRT7/781565341696000);\n aIG := evalf(9084157 29*SQRT7/64849710464 - 2317999437/23581712896);\n aIH := evalf(99 92573019*SQRT7/352964993024 + 112099727493/1764824965120);\n aJ1 \+ := evalf(-146095905498393119*SQRT7/28971542512452028125 +\n \+ 362058929348034963652/8604548126198252353125);\n aJ6 := evalf( -1265405169411103125627*SQRT7/26855843967693741133700 +\n \+ 3975969853211105248983/26855843967693741133700);\n aJ7 := evalf( -12657909213874869625000000*SQRT7/225650046782590131286240929 +\n \+ 415816207712929843732812500000/231720033041041805817840809990 1);\n aJ8 := evalf(-1449590403533375*SQRT7/21622207233549366 +\n \+ 401012292446311250/1264899123162637911);\n aJ9 := ev alf(-59996123596940840224374749037212780460893575326973*SQRT7/\n \+ 1613165643042136101593301722342708423113370837903250 +\n \+ 4545331033882832793172679358463262481859874938464112848008/\n \+ 171937223442021735691493802532473119608154450127235048396 875);\n aJA := evalf(596839002960384/3381490459221875);\n aJ B := evalf(15060740399158849536*SQRT7/151783968738361924475 -\n \+ 233279804085211463168/455351906215085773425);\n aJC := eva lf(-4054391044424961*SQRT7/1366034914741472500 +\n 245337 047543712611/20490523721122087500);\n aJE := evalf(10035998/34560 28125 - 1453856*SQRT7/3456028125);\n aJF := evalf(28388719184/596 287034375 + 3935951656*SQRT7/71554444125);\n aJG := evalf(9304678 4*SQRT7/4559745267 - 254314496/3256960905);\n aJH := evalf(159924 16*SQRT7/387778923 + 2125088/55396989);\n aK1 := evalf(-408385534 705961*SQRT7/145260583712400000 +\n 374919208039108066769 /10197982964383113900000);\n aK6 := evalf(-1842890934880471474773 *SQRT7/70154041384995895206400 +\n 9140257429226972040116 7/859387006966199716278400);\n aK7 := evalf(-20162764237590275410 15625*SQRT7/64471441937882894653211694 +\n 33841871953716 766022861328125/257466703378935339797600899989);\n aK8 := evalf(- 103445455138314625*SQRT7/2767642525894318848 +\n 35072554 7323759375/1124354776144567032);\n aK9 := evalf(-1677086632362266 79032764579220523036527050471387*SQRT7/\n 808826050019168 0872887407280342617343355065504000 -\n 160655663824415526 41715569501610915152347902393579453431911/\n 305666175008 038641229322315613285545970052355781751197150000);\n aKA := evalf (901046813736528/3381490459221875);\n aKB := evalf(11995115179801 17216*SQRT7/21683424105480274925 -\n 79948431067612848912 /151783968738361924475);\n aKC := evalf(-5904670442992239*SQRT7/3 568417736467520000 +\n 2337899411211529353/21856558635863 5600000);\n aKE := evalf(367198237/110592900000 - 3242183*SQRT7/1 3824112500);\n aKF := evalf(126616972699/4770296275000 + 35109599 707*SQRT7/1144871106000);\n aKG := evalf(7410704*SQRT7/651392181 \+ - 298713632/3256960905);\n aKH := evalf(5094859*SQRT7/221587956 + 42920003/553969890);\n aL1 := evalf(276727826458195951*SQRT7/756 80764114160400000 +\n 27993284828754981193/51084515777058 2700000);\n aL6 := evalf(2396869514758244044683*SQRT7/70154041384 995895206400 +\n 135939757794763166091/474013793141864156 800);\n aL7 := evalf(2622375205154089396484375*SQRT7/644714419378 82894653211694 +\n 255381525950382596240234375/7058179501 70703033255683247);\n aL8 := evalf(134541471320113375*SQRT7/27676 42525894318848 +\n 555006824763125/510245713256409);\n \+ aL9 := evalf(113641767182046923760020640897484653184317971780717*SQ RT7/\n 42139837205998657347743391930585036358879891275840 00 -\n 19725249536158413435648903585583405898983584276673 979718229/\n 56142766838211179001304098786113671708785126 572158383150000);\n aLA := evalf(7074600250608/6273637215625);\n \+ aLB := evalf(-1560088302368475936*SQRT7/21683424105480274925 -\n \+ 122630185337518052432/65050272316440824775);\n aLC : = evalf(7679632208088369*SQRT7/3568417736467520000 +\n 46 8087818175204739/13381566511753200000);\n aLE := evalf(1321004573 /110592900000 + 4216793*SQRT7/13824112500);\n aLF := evalf(-16467 8417029/4770296275000 - 45663651397*SQRT7/1144871106000);\n aLG : = evalf(-9638384*SQRT7/651392181 + 57814624/651392181);\n aLH := \+ evalf(-6626389*SQRT7/221587956 - 46233929/553969890);\n end if;\n \+ \n xstart := evalf(x0);\n xend:= evalf(xn);\n \n sgn := sign(x end-xstart);\n h := sgn*hstrt;\n\n eps := evalf(t);\n safety := \+ 0.9;\n pgrow := -0.125;\n pshrink := -0.14285714285714285714;\n \+ errcontrol := 0.000001101996057; #(5/safety)^(1/pgrow)\n tiny := Flo at(1,-3*saveDigits);\n \n xk := evalf(x0);\n yk := evalf(y0);\n \+ uk := evalf(u0);\n \n if errcntl=2 then\n if stdstep then\n \+ if maxtemp<>0 then\n maxval := abs(evalf(maxtemp)) \n else \n maxval := max(abs(yk),tiny)\n \+ end if;\n elif drvstep then\n if maxtemp2<>0 then\n \+ maxval := abs(evalf(maxtemp2))\n else\n maxva l := max(abs(uk),tiny)\n end if;\n else\n if maxt emp<>0 then\n maxval := abs(evalf(maxtemp))\n else \+ \n maxval := max(abs(yk),tiny)\n end if;\n \+ if maxtemp2<>0 then\n maxval2 := abs(evalf(maxtemp2))\n \+ else\n maxval2 := max(abs(uk),tiny)\n end if ;\n end if;\n end if;\n f1 := uk;\n g1 := gn(xk,yk,uk);\n\n finished := false;\n soln := NULL;\n soln2 := NULL;\n\n for k from 1 to maxstps do\n if stdstep then \n if errcntl=0 t hen scale := max(abs(yk),abs(uk*h),tiny)\n elif errcntl=1 then scale := max(abs(yk),tiny)\n elif errcntl=2 then scale := abs (maxval)\n else scale := max(abs(uk*h),tiny) end if;\n el if drvstep then\n if errcntl=0 then scale := max(abs(uk),abs(g 1*h),tiny)\n elif errcntl=1 then scale := max(abs(uk),tiny)\n \+ elif errcntl=2 then scale := abs(maxval)\n else scale \+ := max(abs(g1*h),tiny) end if;\n else\n if errcntl=0 then \n scale := max(abs(yk),abs(uk*h),tiny);\n scale 2 := max(abs(uk),abs(g1*h),tiny);\n elif errcntl=1 then\n \+ scale := max(abs(yk),tiny);\n scale2 := max(abs(uk), tiny);\n elif errcntl=2 then\n scale := abs(maxval) ;\n scale2 := abs(maxval2);\n else\n sca le := max(abs(uk*h),tiny);\n scale2 := max(abs(g1*h),tiny); \n end if;\n end if;\n \n if abs(h)>=hmx then\n h := sgn*hmx;\n maxstepsize := true;\n else\n \+ maxstepsize := false;\n end if;\n if abs(h)<=hmn then \n h := sgn*hmn;\n minstepsize := true;\n else\n \+ minstepsize := false;\n end if;\n if (xk+h-xend)*(xk +h-xstart)>0 then \n h := xend-xk;\n laststep := true; \n else\n laststep := false;\n end if;\n\n # Do step.\n do\n ff := a21*f1;\n gg := a21*g1;\n \+ f2 := uk + gg*h;\n g2 := gn(xk + c2*h,yk + ff*h,f2);\n\n \+ ff := a31*f1 + a32*f2;\n gg := a31*g1 + a32*g2;\n \+ f3 := uk + gg*h;\n g3 := gn(xk + c3*h,yk + ff*h,f3); \n\n ff := a41*f1 + a43*f3;\n gg := a41*g1 + a43*g3;\n \+ f4 := uk + gg*h;\n g4 := gn(xk + c4*h,yk + ff*h,f4);\n\n \+ ff := a51*f1 + a53*f3 + a54*f4;\n gg := a51*g1 + a53*g 3 + a54*g4;\n f5 := uk + gg*h;\n g5 := gn(xk + c5*h,yk + ff*h,f5);\n\n ff := a61*f1 + a64*f4 + a65*f5;\n gg \+ := a61*g1 + a64*g4 + a65*g5;\n f6 := uk + gg*h;\n g6 : = gn(xk + c6*h,yk + ff*h,f6);\n\n ff := a71*f1 + a74*f4 + a75* f5 + a76*f6;\n gg := a71*g1 + a74*g4 + a75*g5 + a76*g6;\n \+ f7 := uk + gg*h;\n g7 := gn(xk + c7*h,yk + ff*h,f7);\n\n \+ ff := a81*f1 + a84*f4 + a85*f5 + a86*f6 + a87*f7;\n gg \+ := a81*g1 + a84*g4 + a85*g5 + a86*g6 + a87*g7;\n f8 := uk + gg *h;\n g8 := gn(xk + c8*h,yk + ff*h,f8);\n\n ff := a91* f1 + a94*f4 + a95*f5 + a96*f6 + a97*f7 + a98*f8;\n gg := a91*g 1 + a94*g4 + a95*g5 + a96*g6 + a97*g7 + a98*g8;\n f9 := uk + g g*h;\n g9 := gn(xk + c9*h,yk + ff*h,f9);\n\n ff := aA1 *f1 + aA4*f4 + aA5*f5 + aA6*f6 + aA7*f7 + aA8*f8 + aA9*f9;\n g g := aA1*g1 + aA4*g4 + aA5*g5 + aA6*g6 + aA7*g7 + aA8*g8 + aA9*g9;\n \+ fA := uk + gg*h;\n gA := gn(xk + cA*h,yk + ff*h,fA);\n \n ff := aB1*f1 + aB4*f4 + aB5*f5 + aB6*f6 + aB7*f7 + aB8*f8 + aB9*f9 + aBA*fA;\n gg := aB1*g1 + aB4*g4 + aB5*g5 + aB6*g6 + \+ aB7*g7 + aB8*g8 + aB9*g9 + aBA*gA;\n fB := uk + gg*h;\n \+ gB := gn(xk + cB*h,yk + ff*h,fB);\n\n ff := aC1*f1 + aC4*f4 \+ + aC5*f5 + aC6*f6 + aC7*f7 + aC8*f8 + aC9*f9 + aCA*fA\n \+ + aCB*fB; \n gg := aC1*g1 + aC4*g4 + aC5*g5 + aC6*g6 + aC7*g7 + aC8*g8 + aC9*g9 + aCA*gA\n \+ + aCB*gB;\n fC := uk + gg*h;\n \+ gC := gn(xk + h,yk + ff*h,fC);\n\n yout := yk + (b1*f1 + b6*f 6 + b7*f7 + b8*f8 + b9*f9 + bA*fA + bB*fB + bC*fC)*h;\n uout : = uk + (b1*g1 + b6*g6 + b7*g7 + b8*g8 + b9*g9 + bA*gA + bB*gB + bC*gC) *h;\n\n # error estimate\n gg := aD1*g1 + aD4*g4 + aD5 *g5 + aD6*g6 + aD7*g7 + aD8*g8 + aD9*g9 + aDA*gA;\n fD := uk + gg*h; \n if stdstep then\n errst := (e1*f1 + e6*f6 + e7*f7 + e8*f8 + e9*f9 + eA*fA + eB*fB + eC*fC\n \+ + eD*fD)*h; \n else\n ff := aD1*f1 + aD4*f4 + aD5*f5 + aD6*f6 + aD7*f7 + aD8*f8 + aD9*f9 + aDA*fA;\n gD := gn(xk + h,yk + \+ ff*h,fD);\n if drvstep then\n errst := (e1*g1 + e6*g6 + e7*g7 + e8*g8 + e9*g9 + eA*gA + eB*gB\n \+ + eC*gC + eD*gD)*h;\n \+ else\n errst := (e1*f1 + e6*f6 + e7*f7 + e8*f8 + e 9*f9 + eA*fA + eB*fB\n \+ + eC*fC + eD*fD)*h;\n\n errst2 := (e1*g1 \+ + e6*g6 + e7*g7 + e8*g8 + e9*g9 + eA*gA + eB*gB\n \+ + eC*gC + eD*gD)*h;\n \+ end if;\n end if;\n \n if stdstep or drvs tep then \n err := abs(errst/scale)/eps;\n else \n \+ err := max(abs(errst/scale),abs(errst2/scale2))/eps;\n \+ end if; \n if err<=1.0 or minstepsize then break end if; \n \n # Shrink, but not too much.\n if prntflg then\n print(`reducing step-size and repeating step`);\n \+ end if;\n htemp := safety*h*err^pshrink;\n if h >=0 then\n h := max(htemp,0.1*h)\n else\n \+ h := min(htemp,0.1*h)\n end if;\n if maxstepsize the n maxstepsize := false end if;\n if abs(h)<=hmn then\n \+ h := sgn*hmn;\n minstepsize := true;\n end if; \n end do;\n\n if member(outpt,\{'points','derivpts','rkstep ','derivstep','step_pair','endpt'\}) then\n soln := soln,[xk,y k,uk];\n else # 4 extra stages needed for interpolation\n \+ ff := aE1*f1 + aE6*f6 + aE7*f7 + aE8*f8 + aE9*f9 + aEA*fA + aEB*fB + \+ aEC*fC;\n gg := aE1*g1 + aE6*g6 + aE7*g7 + aE8*g8 + aE9*g9 + a EA*gA + aEB*gB + aEC*gC;\n fE := uk + gg*h;\n gE := gn (xk + h,yk + ff*h,fE);\n\n ff := aF1*f1 + aF6*f6 + aF7*f7 + aF 8*f8 + aF9*f9 + aFA*fA + aFB*fB + aFC*fC\n \+ + aFE*fE;\n gg := aF1*g1 + aF6*g6 + aF7*g7 + aF8*g8 + aF9*g9 + aFA*gA + aFB*gB + aFC *gC\n \+ + aFE*gE;\n fF := uk + gg*h;\n gF := gn(xk \+ + cF*h,yk + ff*h,fF);\n\n ff := aG1*f1 + aG6*f6 + aG7*f7 + aG8 *f8 + aG9*f9 + aGA*fA + aGB*fB + aGC*fC\n \+ + aGE*fE + aGF*fF;\n gg \+ := aG1*g1 + aG6*g6 + aG7*g7 + aG8*g8 + aG9*g9 + aGA*gA + aGB*gB + aGC* gC\n \+ + aGE*gE + aGF*gF;\n fG := uk + gg*h;\n gG := gn(xk + cG*h,yk + ff*h,fG);\n\n ff := aH1*f1 + aH6*f6 + aH7*f7 + aH8* f8 + aH9*f9 + aHA*fA + aHB*fB + aHC*fC\n \+ + aHE*fE + aHF*fF + aHG*fG;\n gg : = aH1*g1 + aH6*g6 + aH7*g7 + aH8*g8 + aH9*g9 + aHA*gA + aHB*gB + aHC*g C\n + aHE*gE \+ + aHF*gF + aHG*gG;\n fH := uk + gg*h;\n gH := gn(xk + \+ cH*h,yk + ff*h,fH);\n\n ff := aI1*f1 + aI6*f6 + aI7*f7 + aI8*f 8 + aI9*f9 + aIA*fA + aIB*fB + aIC*fC\n \+ + aIE*fE + aIF*fF + aIG*fG + aIH*fH;\n gg := aI1*g1 + aI6*g6 + aI7*g7 + aI8*g8 + aI9*g9 + aIA*gA + aIB*gB + aIC*gC \n + aIE*gE + aIF*gF + aIG*gG + aIH*gH;\n fI := uk + gg*h;\n gI := gn(xk + c I*h,yk + ff*h,fI);\n\n ff := aJ1*f1 + aJ6*f6 + aJ7*f7 + aJ8*f8 + aJ9*f9 + aJA*fA + aJB*fB + aJC*fC\n \+ + aJE*fE + aJF*fF + aJG*fG + aJH*fH;\n gg := \+ aJ1*g1 + aJ6*g6 + aJ7*g7 + aJ8*g8 + aJ9*g9 + aJA*gA + aJB*gB + aJC*gC \n + aJE*gE + aJF*gF + aJG*gG + aJH*gH;\n fJ := uk + gg*h;\n gJ := gn(xk + c J*h,yk + ff*h,fJ);\n\n ff := aK1*f1 + aK6*f6 + aK7*f7 + aK8*f8 + aK9*f9 + aKA*fA + aKB*fB + aKC*fC\n \+ + aKE*fE + aKF*fF + aKG*fG + aKH*fH;\n gg := \+ aK1*g1 + aK6*g6 + aK7*g7 + aK8*g8 + aK9*g9 + aKA*gA + aKB*gB + aKC*gC \n + aKE*gE + aKF*gF + aKG*gG + aKH*gH;\n fK := uk + gg*h;\n gK := gn(xk + c K*h,yk + ff*h,fK);\n\n ff := aL1*f1 + aL6*f6 + aL7*f7 + aL8*f8 + aL9*f9 + aLA*fA + aLB*fB + aLC*fC\n \+ + aLE*fE + aLF*fF + aLG*fG + aLH*fH;\n gg := \+ aL1*g1 + aL6*g6 + aL7*g7 + aL8*g8 + aL9*g9 + aLA*gA + aLB*gB + aLC*gC \n + aLE*gE + aLF*gF + aLG*gG + aLH*gH;\n fL := uk + gg*h;\n gL := gn(xk + c L*h,yk + ff*h,fL);\n\n if outpt='rkinterp' then\n s oln := soln,[xk,yk,f1,f6,f7,f8,f9,fA,fB,fC,fE,fF,fG,fH,fI,fJ,fK,fL];\n elif outpt='derivinterp' then\n soln := soln,[xk,u k,g1,g6,g7,g8,g9,gA,gB,gC,gE,gF,gG,gH,gI,gJ,gK,gL];\n else\n \+ soln := soln,[xk,yk,f1,f6,f7,f8,f9,fA,fB,fC,fE,fF,fG,fH,fI,f J,fK,fL];\n soln2 := soln2,[xk,uk,g1,g6,g7,g8,g9,gA,gB,gC,g E,gF,gG,gH,gI,gJ,gK,gL];\n end if;\n end if;\n \n \+ if err>errcontrol then\n hnext := safety*h*err^pgrow;\n \+ inc := false;\n else\n if abs(h) `,e valf(abs(errst),5),`abs err bound -> `,evalf(abs(scale)*eps,5));\n \+ if stdstep then\n print(`step`,k,` `,h,` `,[xk,yk] );\n elif drvstep then\n print(`step`,k,` `,h,` \+ `,[xk,uk]);\n else\n print(`step`,k,` `,h,` `, [xk,yk,uk]);\n end if;\n if laststep then\n \+ print(`last step`);\n elif inc then\n print(`incre asing step-size by a factor of 5`)\n elif maxstepsize then\n \+ print(`used maximum step-size`)\n elif not minstepsi ze then\n print(`using error to adjust step-size`)\n \+ else \n print(`used minimum step-size`)\n end if; \n print(``);\n end if;\n \n if (xk-xend)*(xend -xstart) >= 0 then\n finished := true;\n break;\n \+ end if;\n \n if errcntl=2 then\n if stdstep then \+ \n if abs(yk)>maxval then maxval := abs(yk) end if;\n \+ elif drvstep then\n if abs(uk)>maxval then maxval := abs (uk) end if;\n else\n if abs(yk)>maxval then maxval := abs(yk) end if;\n if abs(uk)>maxval2 then maxval2 := ab s(uk) end if;\n end if;\n end if;\n h := hnext;\n \+ end do;\n\n if not finished and k>=maxstps then\n error \"reach ed maximum number of steps before reaching end of interval\"\n end i f;\n\n if member(outpt,\{'rkstep','derivstep','step_pair'\}) then\n \+ soln := [soln,[xk,yk,uk]];\n eqns := \{SOLN_=soln,GXYU_=gxyu ,X_=x,Y_=y,U_=u,c3_=c3,c4_=c4,c6_=c6,\n c9_=c9,cA_=cA,a31_=a31 ,a32_=a32,a41_=a41,a43_=a43,a51_=a51,\n a53_=a53,a54_=a54,a61_ =a61,a64_=a64,a65_=a65,a71_=a71,a74_=a74,\n a75_=a75,a76_=a76, a81_=a81,a85_=a85,a86_=a86,a87_=a87,a91_=a91,\n a94_=a94,a95_= a95,a96_=a96,a97_=a97,a98_=a98,aA1_=aA1,aA4_=aA4,\n aA5_=aA5,a A6_=aA6,aA7_=aA7,aA8_=aA8,aA9_=aA9,aB1_=aB1,aB4_=aB4,\n aB5_=a B5,aB6_=aB6,aB7_=aB7,aB8_=aB8,aB9_=aB9,aBA_=aBA,aC1_=aC1,\n aC 4_=aC4,aC5_=aC5,aC6_=aC6,aC7_=aC7,aC8_=aC8,aC9_=aC9,aCA_=aCA,\n \+ aCB_=aCB,b1_=b1,b6_=b6,b7_=b7,b8_=b8,b9_=b9,bA_=bA,bB_=bB,bC_=bC\}; \n if outpt='rkstep' then\n return subs(`union`(eqns,\{DE RIV_=false\}),eval(rk78step));\n elif outpt='derivstep' then\n \+ return subs(`union`(eqns,\{DERIV_=true\}),eval(rk78step));\n \+ else # outpt='step_pair' then\n return subs(`union`(eqns,\{D ERIV_=false\}),eval(rk78step)),\n subs(`union`(eqns,\{D ERIV_=true\}),eval(rk78step));\n end if;\n elif member(outpt,\{ 'rkinterp','derivinterp','interp_pair'\}) then\n d12 := evalf(356 43680302198397392977791611006902844604115504781863583325615*SQRT7/\n \+ 382731994099076159547788740295516541397461808306498896786042894 \+ -\n 49913430094603751641566666553290435741449130095513853795522 4539656077/\n 4367507877462197687063636431008257460502995679308 7815107842498805916);\n d62 := evalf(-236859708878371301763021532 74051068033533413543752892588902929763625*\n SQRT7/470124624692 00662341983992359390786121649003097783705034965814997192 -\n 31 8555525426354785267263601778513469051754900650813057635058169612625/\n 27384759388309385814205675549345132915860544304459008182867587 23586434);\n d72 := evalf(-51259308379995267859058610262718392599 578938940008688345921713867187500000\n *SQRT7/14445769238741169 8446617427382693665797531195246660764237040764885295387027 -\n \+ 9191902943338743687894134552913884099193965310325712891127074414062500 00000/\n 112195474420889752460206201933892080436082561641573193 55743499406091275059097);\n d82 := evalf(268082252135945924435008 11319552220037327838869838401763840251953125*\n SQRT7/360118120 7724335064530774666694061429863907960106427575589521043396 +\n \+ 171934719369281979992977297098299373880896289047165344616861328125/\n \+ 100032811325675974014743740741501706385108554447400765988597806 761);\n d92 := evalf(-5791282363694647383494930623934076601319818 366128184086760571640512757656160930124011293784825753160970893*SQRT7/ \n78960491752622616892134852743469023966537545959871553109402024591207 4193807136326057747285010721816047996 -\n37142425507719738213341950069 2053803036941586595728362939460454134605398282516230480526532261208762 08741/\n21933469931284060247815236873185839990704873877742098085945006 830890949827976009057159646805853383779111);\n dA2 := evalf(11087 6201679254623037871993864066005939382896536227671113630596096*SQRT7\n \+ /81885666598791530198409687248227604168050639353204606037382379 13 +\n 28159766316316226442327715443324263660962796329673063061 3584596992/\n 9007423325867068321825065597305036458485570328852 5066641120617043);\n dB2 := evalf(-163347330891545876403903842900 594992244726299935020978849222045568000*\n SQRT7/11404348058165 283147477049669067558933009760570649783842405618582767 -\n 7165 78320817183103406175772945383311056484201637487951993884383744000/\n \+ 2166826131051403798020639437122836197271854508423458930057067530 72573);\n dC2 := evalf(381941538321819998039607469315758342141261 9088899955423132510917*SQRT7/\n 2228701507275694949985589565430 9880045443486828417763716847159592 +\n 220462599128642020502802 009787550092329168455670656206543685061/\n 55717537681892373749 63973913577470011360871707104440929211789898);\n dE2 := evalf(402 585847555372253030773794622450357040040289344403163858*SQRT7/\n \+ 4295036713001971052017223760142007374020655560556027616721 +\n \+ 2721489311917062733130875756847927895477861273414985588679/\n \+ 47245403843021681572189461361562081114227211166116303783931);\n d F2 := evalf(-123492430408563200278801156813453826186179158427946623755 28*SQRT7/\n 164377948275384077299424613042471887153876941206465 2544671 +\n 295537263218050228202416128071316106023653790387136 89058228/\n 164377948275384077299424613042471887153876941206465 2544671);\n dG2 := evalf(-357652006723831496049762003344690736121 25825077957568000000*SQRT7/\n 493133844826152231898273839127415 6614616308236193957634013 +\n 128517437682336804655701775914367 5528393594918717610624000000/\n 1627341687926302365264303669120 47168282338171794400601922429);\n dH2 := evalf(-53809165379932608 6073602371256585993376203834697972000000*SQRT7/\n 1431678904333 990350672407920047335791340218520185342538907 +\n 3167556144993 2759585814449048894682735398944250970524500000/\n 1431678904333 990350672407920047335791340218520185342538907);\n dI2 := evalf(-1 73069075495440698843906977750181786857481132028743640678400*SQRT7/\n \+ 4295036713001971052017223760142007374020655560556027616721 +\n \+ 13938150103470867094540617814388965150457511215120796621209600/ \n 55835477269025623676223908881846095862268522287228359017373) ;\n dJ2 := evalf(332850677853640526165412989983121657148062490953 9443236125*SQRT7/\n 1590754338148878167413786577830373101489131 68909482504323 -\n 41519259552832447855406165498677935500678562 865236277287875/\n 63630173525955126696551463113214924059565267 5637930017292);\n dK2 := evalf(1497118870780096785653851352791263 510405606027720535895500*SQRT7/\n 53025144604962605580459552594 345770049637722969827501441 -\n 1081071940558630026922178842686 9054893442683433666843966500/\n 5302514460496260558045955259434 5770049637722969827501441);\n dL2 := evalf(1185358024193049429204 894939437968202309486148704187724700*SQRT7/\n 15907543381488781 6741378657783037310148913168909482504323 -\n 187243883348260488 09573294764906626932882278291570734642700/\n 111352803670421471 7189650604481261171042392182366377530261);\n d13 := evalf(-246230 945735113892339372585690030669766812810495003823744255113735*SQRT7/\n \+ 313457503167143374669638978302028047404521221003022596467769130 186 +\n 3231074952031261645234323783136870725405275716603642707 65036005492591/\n 503943216630253579276573434347106630058037962 9971670973981826785298);\n d63 := evalf(4822446573891340110911165 7520645193884053404474223761391463039244625*\n SQRT7/1134783576 8427746082547860224680534581087690402913308111888300171736 +\n \+ 4472108436078443467778472980115895869902314425514801408228309257006262 5/\n 5476951877661877162841135109869026583172108860891801636573 517447172868);\n d73 := evalf(3541056331199227679532598709 97321382253869744249799701441590241518554687500000*SQRT7/\n 118 3108500652901810277796730264261122881780489070151659101363864410569219 75113 +\n 67940851965291117811367357780127224374270905887018262 802541051081181640625000000/\n 11814183456519690934059713063638 836069919493740857657281597904874614112637229141);\n d83 := evalf (-26456361535933405820655294979290299863007510302862110709158453404296 875*\n SQRT7/42133820130374720255010063600320518729407723133245 2026343973962077332 -\n 762500956877114261757074447215492759278 50831457556362286280073529296875/\n 632007301955620803825150954 004807780941115846998678039515960943115998);\n d93 := evalf(30774 5337126029212059142399973448631566530326017344081741144309830801424994 3618454887532557145872390493628329*SQRT7/49745109804152248642044957228 3854850989186539547190784589232754924606742098495885416380789556754744 11023748 +\n1267079071292303233179256524471818174979021868395003886460 544124543045290853187282757708660292816458666030863/106596663866040532 8043820512036831823548256870458265966976927331981300161639634040177958 8347644744516647946);\n dA3 := evalf(-851051661193116785372575153 46907811541623568055391798062460169174016*\n SQRT7/745159566049 002924805528153958871197929260818114161914940179650083 -\n 2569 62403700955597405150437397475457337271082383744977126104318773248/\n \+ 1170965032362718881837258527649654739603124142750825866334568021 559);\n dB3 := evalf(47510569498982918125134697696975104131967515 527218789537205684352000*\n SQRT7/39325338131604424646472585065 7502032172750364505164960082952364923 +\n 150897521680799186986 973522562260953677284916446359064398733016553216000/\n 65004783 9315421139406191831136850859181556352527037679017120259217719);\n \+ dC3 := evalf(-2255127622897123456876081777974926631981739820338509145 10537775289*\n SQRT7/156009105509298646498991269580169160318104 407798924346017930117144 -\n 9285031060912294067234218307412638 0973594493023226754287693593983/\n 3343052260913542424978384348 1464820068165230242626645575270739388);\n dE3 := evalf(-213931750 513121240897311333948469797620487410133479950210474*SQRT7/\n 27 0587312919124176277085096888946464563301300315029739853423 -\n \+ 6026554549218325371819602880566514575441175091155923561220047/\n \+ 2976460442110365939047936065778411110196314303465327138387653);\n \+ dF3 := evalf(937473583863200678290023199702129127111060390461868310 702712*SQRT7/\n 14794015344784566956948215173822469843848924708 581872902039 -\n 2243525181240063021054547606023596942176560700 713986922286012/\n 14794015344784566956948215173822469843848924 708581872902039);\n dG3 := evalf(27150595984707922614116206747405 52998114611488544663872000000*SQRT7/\n 443820460343537008708446 45521467409531546774125745618706117 -\n 97562014525403177062257 730233870040805011233298292327296000000/\n 14646075191336721287 37873302208424514541043546149605417301861);\n dH3 := evalf(408483 91230556879049094874218040955333336609646353788000000*SQRT7/\n \+ 12885110139005913156051671280426022122061966681668082850163 -\n \+ 2404600995794184108553369816093489658400897946481484185500000/\n \+ 12885110139005913156051671280426022122061966681668082850163);\n \+ dI3 := evalf(1707975069410864825911811161600298561877484215075627316 87116800*SQRT7/\n 502519295421230613086015179936614862760416700 585055231156357 -\n 1469604360050531892734122746115860001716171 503446532235375411200/\n 50251929542123061308601517993661486276 0416700585055231156357);\n dJ3 := evalf(-252678416666023204018532 478629807794349483090715026166341375*SQRT7/\n 14316789043339903 50672407920047335791340218520185342538907 +\n 20673550498828075 80588801884762356866603197474794104605922875/\n 286335780866798 0701344815840094671582680437040370685077814);\n dK3 := evalf(-795 560158652028881526157940792991314731592433374109190961500*SQRT7/\n \+ 3340584110112644151568951813443783513127176547099132590783 +\n \+ 24001196016558020249137334006257368893543757664440775397285500/\n \+ 10021752330337932454706855440331350539381529641297397772349);\n dL3 := evalf(-62989227922502970708737552142020568395473738988599 1590309100*SQRT7/\n 1002175233033793245470685544033135053938152 9641297397772349 +\n 128584297443389765422915618137213935526237 0475712225168576900/\n 1002175233033793245470685544033135053938 1529641297397772349);\n d14 := evalf(1339553408769109755218650588 04930854478181657243056758022875707595*SQRT7/\n 447796433095919 10667091282614575435343503031571860370923967018598 -\n 15942899 3525717958732435122909792054219844229114153042132964106856070471/\n \+ 78615141794319558367145455758148634289053922227558067194116497850 6488);\n d64 := evalf(-760821581925611346296739540636503375531588 844487442872536857709497625*\n SQRT7/47012462469200662341983992 359390786121649003097783705034965814997192 -\n 1988435643032622 1976755087081652752135466456648956346616516634571272397625/\n 3 0670930514906512111910356615266548865763809620994089164811697704168060 8);\n d74 := evalf(-192641670807867235686269180225709354160799250 354290899373597571538085937500000*SQRT7/\n 16901550009327168718 254239003775158898311149843859309415733769491579560282159 -\n 3 7760715554186243643722912474772524442507868308094469837983401249140051 26953125000/\n 826992841956378365384179914454718524894364561860 03600971185334122298788460603987);\n d84 := evalf(100750116608204 859903313329960826963417814591192968820314883670072265625*\n SQ RT7/421338201303747202550100636003205187294077231332452026343973962077 332 +\n 4843302189152206884263600323195414737330457281426178710 961574794533203125/\n 50560584156449664306012076320384622475289 26775989424316127687544927984);\n d94 := evalf(-1674205953883007036 7125095134382121545371708931118033814261438891236916442934642564419937 05518690601901111333*SQRT7/7106444257736035520292136746912212156988379 136388439779846182213208667744264226934519725565096496344431964 -\n563 3819537049559793410035100952088381039577274326205737968049912289576653 52906175788066319539947839934746531703/5969413176498269837045394867406 2582118702384745662894150707930590952809051819506249965694746810569293 2284976);\n dA4 := evalf(4629918267934746510646027686053787321852 0453497703926889996052319232*\n SQRT7/1064513665784289892579325 93422695885418465831159165987848597092869 +\n 14281664055712408 136475245264915777099888212847111472750534674661140736/\n 81967 55226539032172860809693547583177221868999255781064341976150913);\n \+ dB4 := evalf(-524691072537160417643721547041440930191803905429921661 7679970826112000*\n SQRT7/1140434805816528314747704966906755893 3009760570649783842405618582767 -\n 119810062286262954625607969 4150511550870494101799806263079322013821216000/\n 6500478393154 21139406191831136850859181556352527037679017120259217719);\n dC4 \+ := evalf(1226841689391452206935525741914267005199301196723054670380756 27253*SQRT7\n /222870150727569494998558956543098800454434868284 17763716847159592 +\n 41284076564951970958647826412373517915122 082928531250158904168376423/\n 18721092661115837579878952349620 29923817252893587092152215161405728);\n dE4 := evalf(116383830142 974352559205642901851452389500804492627501586498*SQRT7/\n 38655 330417017739468155013841278066366185900045004248550489 +\n 4469 8182650756690761769735727252352467984063731890113472400110/\n 2 976460442110365939047936065778411110196314303465327138387653);\n \+ dF4 := evalf(-35700514888657337576645408405026489305210345903327408528 41768*SQRT7/\n 147940153447845669569482151738224698438489247085 81872902039 +\n 85437078457056829425076230725729910131912562498 79172243240468/\n 147940153447845669569482151738224698438489247 08581872902039);\n dG4 := evalf(-10339387401121986568134497304353 564371909018441162307008000000*SQRT7/\n 44382046034353700870844 645521467409531546774125745618706117 +\n 3715319782962346149008 19651625346784235446910086141052544000000/\n 146460751913367212 8737873302208424514541043546149605417301861);\n dH4 := evalf(-155 557300430237724477930535584876290931582349335611732000000*SQRT7/\n \+ 12885110139005913156051671280426022122061966681668082850163 +\n \+ 9157110678028170982401939084023751427627959028125420984500000/\n \+ 12885110139005913156051671280426022122061966681668082850163);\n dI4 := evalf(-65042461403217409379105172841705071748216145133908 3515867955200*SQRT7/\n 5025192954212306130860151799366148627604 16700585055231156357 +\n 68812146595255820086298543709123206405 39588082195871903822643200/\n 502519295421230613086015179936614 862760416700585055231156357);\n dJ4 := evalf(96224040138330575928 1068249126719609416913245186419069251125*SQRT7/\n 1431678904333 990350672407920047335791340218520185342538907 -\n 6410032074881 028772399481554077690611991277986846048477664625/\n 19089052057 78653800896543893396447721786958026913790051876);\n dK4 := evalf( 432803163396713955929400840527752756100563709091898459035500*SQRT7/\n \+ 477226301444663450224135973349111930446739506728447512969 -\n \+ 111114488575406951697814647617112481576947418506724192036853000/ \n 10021752330337932454706855440331350539381529641297397772349) ;\n dL4 := evalf(342675997638791328751843399036669849568846218979 805820800700*SQRT7/\n 14316789043339903506724079200473357913402 18520185342538907 -\n 42810761474190596496947055479494445878418 60930558872690173400/\n 100217523303379324547068554403313505393 81529641297397772349);\n d15 := evalf(-19502064779674555110583266 96135743462758645751611098779858131152365*\n SQRT7/313457503167 143374669638978302028047404521221003022596467769130186 +\n 7424 3391633422797921589354811480821232154726827981191218422498436501339/\n 19653785448579889591786363939537158572263480556889516798529124 4626622);\n d65 := evalf(1107652123413408805714996110073726977795 4476399103782076984857286503375*\n SQRT7/3290872372844046363938 87946515735502851543021684485935244760704980344 +\n 16906790265 053033329648335601858388471864447291145441331568974896761472375/\n \+ 766773262872662802797758915381663721644095240524852229120292442604 20152);\n d75 := evalf(280459914383848363568642057975527686042601 6270238510991238647118735351562500000*\n SQRT7/1183108500652901 81027779673026426112288178048907015165910136386441056921975113 +\n \+ 128425076339768441767211733988767075966831919665569312807415494805 90463867187500000/\n 826992841956378365384179914454718524894364 56186003600971185334122298788460603987);\n d85 := evalf(-20954054 9408971241058439263241027813186596877686456237303114804759765625*\n \+ SQRT7/42133820130374720255010063600320518729407723133245202634397 3962077332 -\n 411804599204346385234379203443831442014901761604 5054996408305694060546875/\n 1264014603911241607650301908009615 561882231693997356079031921886231996);\n d95 := evalf(24374147946 1764312416978132821152573445669417424241323409391263297767220215589769 35336200985921795322095810211*SQRT7/4974510980415224864204495722838548 5098918653954719078458923275492460674209849588541638078955675474411023 748 +\n479018798711467374115375153220564860715508133092718823566820002 396538239888287074784313198222024975036400066777/149235329412456745926 1348716851564552967559618641572353767698264773820226295487656249142368 67026423233071244);\n dA5 := evalf(-67405275067629095544857313147 6753048620070444486152452043108816262144*\n SQRT7/7451595660490 02924805528153958871197929260818114161914940179650083 -\n 48572 273318863461544753218173392303920428065931051295941934257889156096/\n \+ 819675522653903217286080969354758317722186899925578106434197615 0913);\n dB5 := evalf(1091254872061015387230549673942225748089579 3952366018425701905663872000*\n SQRT7/1140434805816528314747704 9669067558933009760570649783842405618582767 +\n 407476822659943 8636959251699100997766836376192247637561931221314581376000/\n 6 50047839315421139406191831136850859181556352527037679017120259217719); \n dC5 := evalf(-178611363640234164841404819600730131782365246311 5059649161263392851*\n SQRT7/1560091055092986464989912695801691 60318104407798924346017930117144 -\n 35102027375928656197360237 373946948817888902208668958451100751617257/\n 46802731652789593 9496973808740507480954313223396773038053790351432);\n dE5 := eval f(-1694389324006523377473023508146745285244449384512671429450766*SQRT7 /\n 27058731291912417627708509688894646456330130031502973985342 3 -\n 149053953640720357553471138481703434532931554920520150727 204840/\n 29764604421103659390479360657784111101963143034653271 38387653);\n dF5 := evalf(742500927621080754184156703100425068619 5270805576966863546408*SQRT7/\n 1479401534478456695694821517382 2469843848924708581872902039 -\n 177692423219797321133034865918 52924208923200638318894675721108/\n 147940153447845669569482151 73822469843848924708581872902039);\n dG5 := evalf(215039048044819 81635576759310429973127232607726738406848000000*SQRT7/\n 443820 46034353700870844645521467409531546774125745618706117 -\n 77271 3893304367360463415912039301427705023691227512321664000000/\n 1 464607519133672128737873302208424514541043546149605417301861);\n \+ dH5 := evalf(323528778864697640409442763387912876880174943254587092000 000*SQRT7/\n 12885110139005913156051671280426022122061966681668 082850163 -\n 1904500031433728925514060581816599561474819476320 5317544500000/\n 1288511013900591315605167128042602212206196668 1668082850163);\n dI5 := evalf(1352756061845794935005032527459177 157343737472884618209964851200*SQRT7/\n 50251929542123061308601 5179936614862760416700585055231156357 -\n 162840451262782904612 96539094899248799774589651392237003204198400/\n 502519295421230 613086015179936614862760416700585055231156357);\n dJ5 := evalf(-2 001271950418236472823158285298015115392245938807932725791125*SQRT7/\n \+ 1431678904333990350672407920047335791340218520185342538907 +\n \+ 11517119258776437375058476324737880745366423251156991761578500/ \n 1431678904333990350672407920047335791340218520185342538907); \n dK5 := evalf(-630102187352623228833535306527867999766036748559 5369684528500*SQRT7/\n 3340584110112644151568951813443783513127 176547099132590783 +\n 2596099945399191125203815750912965514905 49603905366764948523500/\n 100217523303379324547068554403313505 39381529641297397772349);\n dL5 := evalf(-49888936571271868262966 87829354717852873073088222647736756900*SQRT7/\n 100217523303379 32454706855440331350539381529641297397772349 +\n 74105783989068 01657428051910976918842569991849588522199953300/\n 100217523303 37932454706855440331350539381529641297397772349);\n d16 := evalf( 87593279292444328573400503228921644809254715323653677309899691125*SQRT 7/\n 1205605781412089902575534531930877105402004696165471524876 0351161 -\n 401822368168950462616648969731266769950301636330267 16312006139827990900/\n 982689272428994479589318196976857928613 17402784447583992645622313311);\n d66 := evalf(-64675073009695165 21025929921764741053468015851759795471956639951946875*\n SQRT7/ 164543618642202318196943973257867751425771510842242967622380352490172 \+ -\n 72110533133812330863008791329099292224580827541809542096031 97468316165625/\n 191693315718165700699439728845415930411023810 13121305728007311065105038);\n d76 := evalf(-25193643738239506850 3297428488456354703069952284229953696997300048828125000000*SQRT7/\n \+ 91008346204069370021368979251097009452444653005396281469335681877 73609382701 -\n 73034172088466893068325012865144669882447139976 16442372528485130509277343750000000/\n 275664280652126121794726 63815157284163145485395334533657061778040766262820201329);\n d86 \+ := evalf(9411487488546092478066242425829708665068152652753598274320297 900390625*\n SQRT7/16205315434759507790388486000123276434387585 820478924090152844695282 +\n 5854738190994366163597922956162899 97925144761821549862844906260302734375/\n 105334550325936800637 525159000801296823519307833113006585993490519333);\n d96 := evalf (-14231903362493828176590679609992576890872896269669391033131831084299 927256021775791805841788147988818788330975*SQRT7/248725549020761243210 2247861419274254945932697735953922946163774623033710492479427081903947 7837737205511874 -\n68103407791922265319239305287885740782552959117026 284898925632386305073324820674656222237927256276086704523325/124362774 5103806216051123930709637127472966348867976961473081887311516855246239 7135409519738918868602755937);\n dA6 := evalf(6054998946507855941 1540852248961942552952505671499453948353424025600*\n SQRT7/5731 9966619154071138886781073759322917635447547243224226167665391 +\n \+ 8286782930724444950242426855421112899386181596425199380544301730539 5200/\n 8196755226539032172860809693547583177221868999255781064 341976150913);\n dB6 := evalf(-1274352967522643207649882854577366 8006242117239918967340627507526400000*\n SQRT7/1140434805816528 3147477049669067558933009760570649783842405618582767 -\n 231728 3605070559754766097807721904833622226626044503834275727836710400000/\n 21668261310514037980206394371228361972718545084234589300570675 3072573);\n dC6 := evalf(1042899908700117841039313312353663742325 293833338076584273444464975*\n SQRT7/78004552754649323249495634 790084580159052203899462173008965058572 +\n 4990550874280040648 638722246400872012250593517892524642718365021325/\n 39002276377 324661624747817395042290079526101949731086504482529286);\n dE6 := evalf(1978685381819462071519578054725043358416118338445111406746700*S QRT7/\n 2705873129191241762770850968889464645633013003150297398 53423 +\n 32940231821852493147901757808184303485005651911032106 64134000/\n 386553304170177394681550138412780663661859000450042 48550489);\n dF6 := evalf(-86708273633195214583917499773999608807 38754626900190802259600*SQRT7/\n 147940153447845669569482151738 22469843848924708581872902039 +\n 20750685530389736142396736277 471776562099060814518578546774600/\n 14794015344784566956948215 173822469843848924708581872902039);\n dG6 := evalf(-2511197484888 1885321672674753908806295730804842016137600000000*SQRT7/\n 4438 2046034353700870844645521467409531546774125745618706117 +\n 820 33185179704454423090234313012641155003796319965868800000000/\n \+ 133146138103061102612533936564402228594640322377236856118351);\n \+ dH6 := evalf(-37781261736456381678127465298843899301568233390731540000 0000*SQRT7/\n 1288511013900591315605167128042602212206196668166 8082850163 +\n 222404987949399822783380734599709307663772951480 98911525000000/\n 128851101390059131560516712804260221220619666 81668082850163);\n dI6 := evalf(-12151773761237929318655995623307 4423082943425456607622266880000*SQRT7/\n 3865533041701773946815 5013841278066366185900045004248550489 +\n 204815956340976350229 98477937197814100746282772852146893127680000/\n 502519295421230 613086015179936614862760416700585055231156357);\n dJ6 := evalf(23 37058843108387223130118014187125966651720500656422395131250*SQRT7/\n \+ 1431678904333990350672407920047335791340218520185342538907 -\n \+ 14706725244159097369839650045084389134466768834323339695143750/ \n 1431678904333990350672407920047335791340218520185342538907); \n dK6 := evalf(7358249780628949799290333551278654301242533370906 131902325000*SQRT7/\n 33405841101126441515689518134437835131271 76547099132590783 -\n 46130182751302283817918221879360970634138 119727341303044612500/\n 14316789043339903506724079200473357913 40218520185342538907);\n dL6 := evalf(582596385077990210493473562 5648005867645807120912036599905000*SQRT7/\n 1002175233033793245 4706855440331350539381529641297397772349 -\n 671362494647510761 2879670524364761895187151459653206454772500/\n 1002175233033793 2454706855440331350539381529641297397772349);\n d17 := evalf(-699 489475093839665173148832780546819469357457958881532054048398750*SQRT7 \n /15672875158357168733481948915101402370226061050151129823388 4565093 +\n 163074924384235731939807678090398452743117931030873 070102421348689659750/\n 68788249070029613571252273788380055002 9221819491133087948519356193177);\n d67 := evalf(3256447967434277 0145680506638056725979974514653489394159326992515625*\n SQRT7/1 348718185591822280302819452933342224801405826575762029691642233526 +\n 41986895194618622915638860421102159164607440878383392575567397 620821546875/\n 13418532100271599048960781019179115128771666709 1849140096051177455735266);\n d77 := evalf(201187679882678 6379735123103598287827469131143296795192190628542480468750000000*SQRT7 /\n 11831085006529018102777967302642611228817804890701516591013 6386441056921975113 +\n 127574072573303770128993440408331408200 224952046321093978563413855778808593750000000/\n 57889498936946 4855768925940118302967426055193302025206798297338856091519224227909); \n d87 := evalf(-375784335076447250223603077283108559615445652570 02421026817336669921875*\n SQRT7/105334550325936800637525159000 801296823519307833113006585993490519333 -\n 1460984971666740349 835101113156446918665956503535718197130879330322265625/\n 31600 3650977810401912575477002403890470557923499339019757980471557999);\n \+ d97 := evalf(42152300379328187360712412601420263340896624638536430 29744516593998712667294578315821888672681938019401125*SQRT7/1199255299 0393502565584608782156577892699771927367183813626633435983769095913594 151793172361541821217701 +\n118961149824658369771865126296143521093082 4057389275797971404168722371042772730469473142015542448281668359647125 /261161826471799305370736025449023796769322933262275161909347196335418 539601710339843599914517296240657874677);\n dA7 := evalf(-4835311 64605213332827621048053052792169911733168059717563493500416000*\n \+ SQRT7/7451595660490029248055281539588711979292608181141619149401796 50083 -\n 48250411041509266029313826635647119106359043494616632 7068843254107648000/\n 5737728658577322521002566785483308224055 3082994790467450393833056391);\n dB7 := evalf(7828107498105571372 108920646280380631802076888100147265069689408000000*\n SQRT7/11 404348058165283147477049669067558933009760570649783842405618582767 +\n 40477669336499798751079880256441409547001320907230018857505974 948288000000/\n 45503348752079479758433428179579560142708944676 89263753119841814524033);\n dC7 := evalf(-18842163096119342192252 573336439026736716490976415059145514438625*SQRT7\n /22942515516 07333036749871611473075887030947173513593323793089958 -\n 87173 562896690203922763033059969335557665368796189760818312215457125/\n \+ 819047803923817894119704165295888091670048140944352816594133115006 );\n dE7 := evalf(-1215468733432960389436919410886628774863609227 850563214449000*SQRT7/\n 27058731291912417627708509688894646456 3301300315029739853423 -\n 212782850393317473657425990408971734 919709700004931017869430000/\n 29764604421103659390479360657784 11110196314303465327138387653);\n dF7 := evalf(532632405835979321 1972372472079770450825900701602014640012000*SQRT7/\n 1479401534 4784566956948215173822469843848924708581872902039 -\n 127467507 92840163841933814131143866811838471678117766637062000/\n 147940 15344784566956948215173822469843848924708581872902039);\n dG7 := \+ evalf(15425807732760500780763672238300515681881597379952672000000000*S QRT7/\n 4438204603435370087084464552146740953154677412574561870 6117 -\n 554305650946780364723806333094169233744998044820565696 000000000/\n 14646075191336721287378733022084245145410435461496 05417301861);\n dH7 := evalf(232083093008364823648443315110295386 092801194235238000000000*SQRT7/\n 12885110139005913156051671280 426022122061966681668082850163 -\n 1366191469830622919572921696 9711744974728895376228541750000000/\n 1288511013900591315605167 1280426022122061966681668082850163);\n dI7 := evalf(9703984048055 40150632185310931084731489172095720641989836800000*SQRT7/\n 502 519295421230613086015179936614862760416700585055231156357 -\n 1 3040552832797494056061335704744868473870997008694932232601600000/\n \+ 502519295421230613086015179936614862760416700585055231156357);\n \+ dJ7 := evalf(-143561072320613792895169479042893174790689445717472 1992937500*SQRT7/\n 1431678904333990350672407920047335791340218 520185342538907 +\n 3161437105296062675426098100171489277186422 929136425922375000/\n 47722630144466345022413597334911193044673 9506728447512969);\n dK7 := evalf(-452003265568192567694419754888 8486813595105051207128217750000*SQRT7/\n 3340584110112644151568 951813443783513127176547099132590783 +\n 2037039049232472059405 79809550396524495519753185149039998000000/\n 100217523303379324 54706855440331350539381529641297397772349);\n dL7 := evalf(-35787 78601084225084833595616265137525299387923370917980350000*SQRT7/\n \+ 10021752330337932454706855440331350539381529641297397772349 +\n \+ 2901721383817167216825184518040806692095561741960030898200000/\n \+ 10021752330337932454706855440331350539381529641297397772349);\n \+ d18 := evalf(1755557759904094373588398202354871858232742541545282 02609108731250*SQRT7/\n 156728751583571687334819489151014023702 260610501511298233884565093 -\n 5578679855741510132035418472699 340833939827654525857901613430487513750/\n 98268927242899447958 931819697685792861317402784447583992645622313311);\n d68 := evalf (-49854907736726005687427277190461458195347979864243050810486680492187 5*\n SQRT7/8227180932110115909847198662893387571288575542112148 3811190176245086 -\n 191851070581227852035352891600495640794948 8468882540636667169305833671875/\n 1916933157181657006994397288 4541593041102381013121305728007311065105038);\n d78 := evalf(-504 9348205957701186514837206158216163444578746182130754394081176757812500 00000*SQRT7/\n 118310850065290181027779673026426112288178048907 015165910136386441056921975113 -\n 5829252743778141191277392529 471287085269196234842362636809291368688964843750000000/\n 82699 2841956378365384179914454718524894364561860036009711853341222987884606 03987);\n d88 := evalf(943132282877242882990264029419363461045718 2926248640916490469970703125*\n SQRT7/1053345503259368006375251 59000801296823519307833113006585993490519333 +\n 46729835757727 4183055906496221275583413793032011754808657495228271484375/\n 3 16003650977810401912575477002403890470557923499339019757980471557999); \n d98 := evalf(-109706908092514677104590989638959580116175688861 8750778004559713543349165251141566933644183495378079259924375*SQRT7/12 4362774510380621605112393070963712747296634886797696147308188731151685 52462397135409519738918868602755937 -\n5435701745900875827253652949677 6799668344136235116716227353781227314811155694172455232889568897360064 327858125/373088323531141864815337179212891138241889904660393088441924 56619345505657387191406228559216756605808267811);\n dA8 := evalf( 121355205246550268021752326174813280073096153911386860039155223040000* \n SQRT7/745159566049002924805528153958871197929260818114161914 940179650083 +\n 2204710058076475130873011094771787034340334473 3525449061074282421760000/\n 8196755226539032172860809693547583 177221868999255781064341976150913);\n dB8 := evalf(-1964675002696 647740703375759826243832120046196602305650193859520000000*\n SQ RT7/114043480581652831474770496690675589330097605706497838424056185827 67 -\n 18495495227367365784253178686748969667083327545746456079 20741018560000000/\n 650047839315421139406191831136850859181556 352527037679017120259217719);\n dC8 := evalf(80392145392847409094 641048445807581719640248385135864947859274375*SQRT7/\n 39002276 377324661624747817395042290079526101949731086504482529286 +\n 3 983228883819335958312855997120149472135026200554177016609686308125/\n \+ 117006829131973984874243452185126870238578305849193259513447587 858);\n dE8 := evalf(30505470673633401643229794888262596009239951 4374513276935000*SQRT7/\n 2705873129191241762770850968889464645 63301300315029739853423 +\n 69353937077584493629916215748288775 268139741309544613455050000/\n 29764604421103659390479360657784 11110196314303465327138387653);\n dF8 := evalf(-13367848788808393 35796750843751432009304881437822766197780000*SQRT7/\n 147940153 44784566956948215173822469843848924708581872902039 +\n 31991413 83068294686005314463711435892226627541404474243530000/\n 147940 15344784566956948215173822469843848924708581872902039);\n dG8 := \+ evalf(-3871523079657954441500094362198449477079860886355680000000000*S QRT7/\n 4438204603435370087084464552146740953154677412574561870 6117 +\n 139117974112156976275654586466561785559001945472146240 000000000/\n 14646075191336721287378733022084245145410435461496 05417301861);\n dH8 := evalf(-58247520424623867073113342801624660 418662229380970000000000*SQRT7/\n 12885110139005913156051671280 426022122061966681668082850163 +\n 3428826482420154462410850018 536495909254143411432276250000000/\n 12885110139005913156051671 280426022122061966681668082850163);\n dI8 := evalf(-2435476887663 50101247330678706502258397906715390477320192000000*SQRT7/\n 502 519295421230613086015179936614862760416700585055231156357 +\n 3 305948674571861574612799677320341847721769707549595504640000000/\n \+ 502519295421230613086015179936614862760416700585055231156357);\n \+ dJ8 := evalf(36030528479187697602731212194442813243666411666898443 1562500*SQRT7/\n 1431678904333990350672407920047335791340218520 185342538907 -\n 2427440465292287234817246484618844561890536685 058664154375000/\n 14316789043339903506724079200473357913402185 20185342538907);\n dK8 := evalf(113442427459509325851337648476138 4930885032455880792216250000*SQRT7/\n 3340584110112644151568951 813443783513127176547099132590783 -\n 5124610167754558953597359 9862632917488838190987880233485000000/\n 1002175233033793245470 6855440331350539381529641297397772349);\n dL8 := evalf(8981911476 60838097980111166950774250753970120340516135250000*SQRT7/\n 100 21752330337932454706855440331350539381529641297397772349 -\n 43 4922168250264826621856885191498764502971172424562510000000/\n 1 0021752330337932454706855440331350539381529641297397772349);\n eq ns := \n \{d12_=d12,d62_=d62,d72_=d72,d82_=d82,d92_=d92,dA2_=dA 2,dB2_=dB2,dC2_=dC2,\n dE2_=dE2,dF2_=dF2,dG2_=dG2,dH2_=dH2,dI2_ =dI2,dJ2_=dJ2,dK2_=dK2,dL2_=dL2,\n d13_=d13,d63_=d63,d73_=d73,d 83_=d83,d93_=d93,dA3_=dA3,dB3_=dB3,dC3_=dC3,\n dE3_=dE3,dF3_=dF 3,dG3_=dG3,dH3_=dH3,dI3_=dI3,dJ3_=dJ3,dK3_=dK3,dL3_=dL3,\n d14_ =d14,d64_=d64,d74_=d74,d84_=d84,d94_=d94,dA4_=dA4,dB4_=dB4,dC4_=dC4,\n dE4_=dE4,dF4_=dF4,dG4_=dG4,dH4_=dH4,dI4_=dI4,dJ4_=dJ4,dK4_=dK4 ,dL4_=dL4,\n d15_=d15,d65_=d65,d75_=d75,d85_=d85,d95_=d95,dA5_= dA5,dB5_=dB5,dC5_=dC5,\n dE5_=dE5,dF5_=dF5,dG5_=dG5,dH5_=dH5,dI 5_=dI5,dJ5_=dJ5,dK5_=dK5,dL5_=dL5,\n d16_=d16,d66_=d66,d76_=d76 ,d86_=d86,d96_=d96,dA6_=dA6,dB6_=dB6,dC6_=dC6,\n dE6_=dE6,dF6_= dF6,dG6_=dG6,dH6_=dH6,dI6_=dI6,dJ6_=dJ6,dK6_=dK6,dL6_=dL6,\n d1 7_=d17,d67_=d67,d77_=d77,d87_=d87,d97_=d97,dA7_=dA7,dB7_=dB7,dC7_=dC7, \n dE7_=dE7,dF7_=dF7,dG7_=dG7,dH7_=dH7,dI7_=dI7,dJ7_=dJ7,dK7_=d K7,dL7_=dL7,\n d18_=d18,d68_=d68,d78_=d78,d88_=d88,d98_=d98,dA8 _=dA8,dB8_=dB8,dC8_=dC8,\n dE8_=dE8,dF8_=dF8,dG8_=dG8,dH8_=dH8, dI8_=dI8,dJ8_=dJ8,dK8_=dK8,dL8_=dL8\};\n if outpt='rkinterp' then \n soln := [soln,[xk,yk]];\n return subs(`union`(eqns, \{SOLN_=soln\}),eval(rk78interp));\n elif outpt='derivinterp' the n\n soln := [soln,[xk,uk]];\n return subs(`union`(eqns ,\{SOLN_=soln\}),eval(rk78interp));\n else # outpt='interp_pair' \n soln := [soln,[xk,yk]];\n soln2 := [soln2,[xk,uk]]; \n return subs(`union`(eqns,\{SOLN_=soln\}),eval(rk78interp)), \n subs(`union`(eqns,\{SOLN_=soln2\}),eval(rk78interp)) ;\n end if;\n else\n soln := [soln,[xk,yk,uk]];\n Dig its := saveDigits;\n if outpt='points' then\n return eval f([seq([soln[i,1],soln[i,2]],i=1..nops(soln))]); \n elif out pt='derivpts' then\n return evalf([seq([soln[i,1],soln[i,3]],i =1..nops(soln))]);\n elif outpt='points_pair' then\n retu rn evalf([seq([soln[i,1],soln[i,2]],i=1..nops(soln))]),\n ev alf([seq([soln[i,1],soln[i,3]],i=1..nops(soln))]); \n else # out pt='endpt'\n return soln[nops(soln),2];\n end if;\n end if;\nend proc: # of de2rk78b" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 1 ";" }}}}{SECT 1 {PARA 4 "" 0 " " {TEXT -1 23 "de2rk89: implementation" }}{PARA 0 "" 0 "" {TEXT -1 0 " " }}{EXCHG {PARA 0 "> " 0 "rungk78" {MPLTEXT 1 0 200767 "de2rk89 := pr oc(gxyu::algebraic,xrng::(name=realcons..realcons),\n iy:: (name=realcons),iu::(name=realcons))\n local soln,xk,yk,k,xend,xstar t,h,xrg,SQRT6,ff,gg,c2,c3,c4,c5,c6,c7,c8,c9,cA,cB,cC,cD,\n cE,cI,cJ, cK,cL,cM,cN,cO,cP,cQ,cR,cS,a21,a31,a32,a41,a42,a43,a51,a53,a54,a61,a64 ,a65,\n a71,a74,a75,a76,a81,a86,a87,a91,a96,a97,a98,aA1,aA6,aA7,aA8, aA9,aB1,aB6,aB7,aB8,aB9,\n aBA,aC1,aC6,aC7,aC8,aC9,aCA,aCB,aD1,aD6,a D7,aD8,aD9,aDA,aDB,aDC,aE1,aE6,aE7,aE8,aE9,\n aEA,aEB,aEC,aED,aF1,aF 6,aF7,aF8,aF9,aFA,aFB,aFC,aFD,aFE,aG1,aG6,aG7,aG8,aG9,aGA,aGB,\n aGC ,aGD,aGE,aH1,aH6,aH7,aH8,aH9,aHA,aHB,aHC,aHD,aHE,aHG,aHF,aI1,aI8,aI9,a IA,aIB,aIC,\n aID,aIE,aIF,aIH,aJ1,aJ8,aJ9,aJA,aJB,aJC,aJD,aJE,aJF,aJ H,aJI,aK1,aK8,aK9,aKA,aKB,aKC,\n aKD,aKE,aKF,aKH,aKI,aKJ,aL1,aL8,aL9 ,aLA,aLB,aLC,aLD,aLE,aLF,aLH,aLI,aLJ,aLK,aM1,aM8,\n aM9,aMA,aMB,aMC, aMD,aME,aMF,aMH,aMI,aMJ,aMK,aML,aN1,aN8,aN9,aNA,aNB,aNC,aND,aNE,aNF,\n aNH,aNI,aNJ,aNK,aNL,aO1,aO8,aO9,aOA,aOB,aOC,aOD,aOE,aOF,aOH,aOI,aOJ ,aOK,aOL,aP1,aP8,\n aP9,aPA,aPB,aPC,aPD,aPE,aPF,aPH,aPI,aPJ,aPK,aPL, aQ1,aQ8,aQ9,aQA,aQB,aQC,aQD,aQE,aQF,\n aQH,aQI,aQJ,aQK,aQL,aR1,aR8,a R9,aRA,aRB,aRC,aRD,aRE,aRF,aRH,aRI,aRJ,aRK,aRL,aRM,aS1,\n aS8,aS9,aS A,aSB,aSC,aSD,aSE,aSF,aSH,aSI,aSJ,aSK,aSL,aSM,aSN,b1,b8,b9,bA,bB,bC,bD ,bE,\n bF,f1,f2,f3,f4,f5,f6,f7,f8,f9,fA,fB,fC,fD,fE,fF,fG,fH,fI,fJ,f K,fL,fM,fN,fO,fP,fQ,fR,\n fS,g1,g2,g3,g4,g5,g6,g7,g8,g9,gA,gB,gC,gD, gE,gF,gG,gH,gI,gJ,gK,gL,gM,gN,gO,gP,gQ,gR,\n gS,e1,e8,e9,eA,eB,eC,eD ,eE,eF,eG,eH,d12,d82,d92,dA2,dB2,dC2,dD2,dE2,dF2,dH2,dI2,dJ2,\n dK2, dL2,dM2,dN2,dO2,dP2,dQ2,dR2,dS2,d13,d83,d93,dA3,dB3,dC3,dD3,dE3,dF3,dH 3,dI3,dJ3,\n dK3,dL3,dM3,dN3,dO3,dP3,dQ3,dR3,dS3,d14,d84,d94,dA4,dB4 ,dC4,dD4,dE4,dF4,dH4,dI4,dJ4,\n dK4,dL4,dM4,dN4,dO4,dP4,dQ4,dR4,dS4, d15,d85,d95,dA5,dB5,dC5,dD5,dE5,dF5,dH5,dI5,dJ5,\n dK5,dL5,dM5,dN5,d O5,dP5,dQ5,dR5,dS5,d16,d86,d96,dA6,dB6,dC6,dD6,dE6,dF6,dH6,dI6,dJ6,\n \+ dK6,dL6,dM6,dN6,dO6,dP6,dQ6,dR6,dS6,d17,d87,d97,dA7,dB7,dC7,dD7,dE7, dF7,dH7,dI7,dJ7,\n dK7,dL7,dM7,dN7,dO7,dP7,dQ7,dR7,dS7,d18,d88,d98,d A8,dB8,dC8,dD8,dE8,dF8,dH8,dI8,dJ8,\n dK8,dL8,dM8,dN8,dO8,dP8,dQ8,dR 8,dS8,d19,d89,d99,dA9,dB9,dC9,dD9,dE9,dF9,dH9,dI9,dJ9,\n dK9,dL9,dM9 ,dN9,dO9,dP9,dQ9,dR9,dS9,uk,yout,uout,errst,errst2,hmx,hmn,hstrt,sgn,g n,\n maxstps,tiny,scale,scale2,err,htemp,hnext,eps,i,Options,prntflg ,t,tt,errcntl,\n maxval,maxval2,maxtemp,maxtemp2,x,y,u,errc,x0,y0,u0 ,xn,outpt,minstepsize,inc,\n rk89step,rk89interp1,rk89interp2,maxste psize,laststep,saveDigits,stdstep,drvstep,\n safety,pgrow,pshrink,er rcontrol,finished,soln2,eqns;\n\n## lower precision interpolation proc edure\nrk89interp1 := proc(x_rk89interp::realcons)\n local b1,b8,b9, bA,bB,bC,bD,bE,bF,bH,bI,bJ,bK,bL,bM,bN,bO,bP,bQ,xF,xS,yF,\n f1,f8,f9 ,fA,fB,fC,fD,fE,fF,fH,fI,fJ,fK,fL,fM,fN,fO,fP,fQ,\n d12,d82,d92,dA2, dB2,dC2,dD2,dE2,dF2,dH2,dI2,dJ2,dK2,dL2,dM2,dN2,dO2,dP2,dQ2,\n d13,d 83,d93,dA3,dB3,dC3,dD3,dE3,dF3,dH3,dI3,dJ3,dK3,dL3,dM3,dN3,dO3,dP3,dQ3 ,\n d14,d84,d94,dA4,dB4,dC4,dD4,dE4,dF4,dH4,dI4,dJ4,dK4,dL4,dM4,dN4, dO4,dP4,dQ4,\n d15,d85,d95,dA5,dB5,dC5,dD5,dE5,dF5,dH5,dI5,dJ5,dK5,d L5,dM5,dN5,dO5,dP5,dQ5,\n d16,d86,d96,dA6,dB6,dC6,dD6,dE6,dF6,dH6,dI 6,dJ6,dK6,dL6,dM6,dN6,dO6,dP6,dQ6,\n d17,d87,d97,dA7,dB7,dC7,dD7,dE7 ,dF7,dH7,dI7,dJ7,dK7,dL7,dM7,dN7,dO7,dP7,dQ7,\n d18,d88,d98,dA8,dB8, dC8,dD8,dE8,dF8,dH8,dI8,dJ8,dK8,dL8,dM8,dN8,dO8,dP8,dQ8,\n d19,d89,d 99,dA9,dB9,dC9,dD9,dE9,dF9,dH9,dI9,dJ9,dK9,dL9,dM9,dN9,dO9,dP9,dQ9,\n \+ s,t,jF,jM,jS,n,h,data,xx,ys,saveDigits;\n options `Copyright 2007 \+ by Peter Stone`;\n \n data := SOLN_;\n saveDigits := Digits;\n \+ Digits := max(trunc(evalhf(Digits)),Digits+5); \n xx := evalf(x_rk8 9interp);\n n := nops(data);\n if (data[1,1]dat a[n,1] or xxdata[1,1])) then\n error \"independent variable is outs ide the interpolation interval: %1\",evalf(data[1,1])..evalf(data[n,1] );\n end if;\n\n d12 := d12_; d82 := d82_; d92 := d92_; dA2 := dA2 _; dB2 := dB2_;\n dC2 := dC2_; dD2 := dD2_; dE2 := dE2_; dF2 := dF2_ ; dH2 := dH2_;\n dI2 := dI2_; dJ2 := dJ2_; dK2 := dK2_; dL2 := dL2_; dM2 := dM2_;\n dN2 := dN2_; dO2 := dO2_; dP2 := dP2_; dQ2 := dQ2_; \+ \n d13 := d13_; d83 := d83_; d93 := d93_; dA3 := dA3_; dB3 := dB3_; \n dC3 := dC3_; dD3 := dD3_; dE3 := dE3_; dF3 := dF3_; dH3 := dH3_; \n dI3 := dI3_; dJ3 := dJ3_; dK3 := dK3_; dL3 := dL3_; dM3 := dM3_; \n dN3 := dN3_; dO3 := dO3_; dP3 := dP3_; dQ3 := dQ3_;\n d14 := d1 4_; d84 := d84_; d94 := d94_; dA4 := dA4_; dB4 := dB4_;\n dC4 := dC4 _; dD4 := dD4_; dE4 := dE4_; dF4 := dF4_; dH4 := dH4_;\n dI4 := dI4_ ; dJ4 := dJ4_; dK4 := dK4_; dL4 := dL4_; dM4 := dM4_;\n dN4 := dN4_; dO4 := dO4_; dP4 := dP4_; dQ4 := dQ4_;\n d15 := d15_; d85 := d85_; \+ d95 := d95_; dA5 := dA5_; dB5 := dB5_;\n dC5 := dC5_; dD5 := dD5_; d E5 := dE5_; dF5 := dF5_; dH5 := dH5_;\n dI5 := dI5_; dJ5 := dJ5_; dK 5 := dK5_; dL5 := dL5_; dM5 := dM5_;\n dN5 := dN5_; dO5 := dO5_; dP5 := dP5_; dQ5 := dQ5_;\n d16 := d16_; d86 := d86_; d96 := d96_; dA6 \+ := dA6_; dB6 := dB6_;\n dC6 := dC6_; dD6 := dD6_; dE6 := dE6_; dF6 : = dF6_; dH6 := dH6_;\n dI6 := dI6_; dJ6 := dJ6_; dK6 := dK6_; dL6 := dL6_; dM6 := dM6_;\n dN6 := dN6_; dO6 := dO6_; dP6 := dP6_; dQ6 := \+ dQ6_;\n d17 := d17_; d87 := d87_; d97 := d97_; dA7 := dA7_; dB7 := d B7_;\n dC7 := dC7_; dD7 := dD7_; dE7 := dE7_; dF7 := dF7_; dH7 := dH 7_;\n dI7 := dI7_; dJ7 := dJ7_; dK7 := dK7_; dL7 := dL7_; dM7 := dM7 _;\n dN7 := dN7_; dO7 := dO7_; dP7 := dP7_; dQ7 := dQ7_;\n d18 := \+ d18_; d88 := d88_; d98 := d98_; dA8 := dA8_; dB8 := dB8_;\n dC8 := d C8_; dD8 := dD8_; dE8 := dE8_; dF8 := dF8_; dH8 := dH8_;\n dI8 := dI 8_; dJ8 := dJ8_; dK8 := dK8_; dL8 := dL8_; dM8 := dM8_;\n dN8 := dN8 _; dO8 := dO8_; dP8 := dP8_; dQ8 := dQ8_;\n d19 := d19_; d89 := d89_ ; d99 := d99_; dA9 := dA9_; dB9 := dB9_;\n dC9 := dC9_; dD9 := dD9_; dE9 := dE9_; dF9 := dF9_; dH9 := dH9_;\n dI9 := dI9_; dJ9 := dJ9_; \+ dK9 := dK9_; dL9 := dL9_; dM9 := dM9_;\n dN9 := dN9_; dO9 := dO9_; d P9 := dP9_; dQ9 := dQ9_;\n\n # Perform a binary search for the inter val containing x.\n n := nops(data);\n jF := 0;\n jS := n+1;\n\n if data[1,1]1 do\n jM := \+ trunc((jF+jS)/2);\n if xx>=data[jM,1] then jF := jM else jS := \+ jM end if;\n end do;\n if jM = n then jF := n-1; jS := n end if;\n else\n while jS-jF>1 do\n jM := trunc((jF+jS)/2); \n if xx<=data[jM,1] then jF := jM else jS := jM end if;\n \+ end do;\n if jM = n then jF := n-1; jS := n end if;\n end if; \n \n # Get the data needed from the list.\n xF := data[jF,1];\n \+ xS := data[jS,1];\n yF := data[jF,2];\n f1 := data[jF,3];\n f8 := data[jF,4];\n f9 := data[jF,5];\n fA := data[jF,6];\n fB := \+ data[jF,7];\n fC := data[jF,8];\n fD := data[jF,9];\n fE := data [jF,10];\n fF := data[jF,11];\n fH := data[jF,12];\n fI := data[ jF,13];\n fJ := data[jF,14];\n fK := data[jF,15];\n fL := data[j F,16];\n fM := data[jF,17];\n fN := data[jF,18];\n fO := data[jF ,19];\n fP := data[jF,20];\n fQ := data[jF,21];\n\n # Calculate \+ the parameters.\n h := xx-xF;\n s := h/(xS-xF);\n b1 := (((((((d 19*s+d18)*s+d17)*s+d16)*s+d15)*s+d14)*s+d13)*s+d12)*s+1;\n b8 := ((( ((((d89*s+d88)*s+d87)*s+d86)*s+d85)*s+d84)*s+d83)*s+d82)*s;\n b9 := \+ (((((((d99*s+d98)*s+d97)*s+d96)*s+d95)*s+d94)*s+d93)*s+d92)*s;\n bA \+ := (((((((dA9*s+dA8)*s+dA7)*s+dA6)*s+dA5)*s+dA4)*s+dA3)*s+dA2)*s;\n \+ bB := (((((((dB9*s+dB8)*s+dB7)*s+dB6)*s+dB5)*s+dB4)*s+dB3)*s+dB2)*s;\n bC := (((((((dC9*s+dC8)*s+dC7)*s+dC6)*s+dC5)*s+dC4)*s+dC3)*s+dC2)*s ;\n bD := (((((((dD9*s+dD8)*s+dD7)*s+dD6)*s+dD5)*s+dD4)*s+dD3)*s+dD2 )*s;\n bE := (((((((dE9*s+dE8)*s+dE7)*s+dE6)*s+dE5)*s+dE4)*s+dE3)*s+ dE2)*s;\n bF := (((((((dF9*s+dF8)*s+dF7)*s+dF6)*s+dF5)*s+dF4)*s+dF3) *s+dF2)*s;\n bH := (((((((dH9*s+dH8)*s+dH7)*s+dH6)*s+dH5)*s+dH4)*s+d H3)*s+dH2)*s;\n bI := (((((((dI9*s+dI8)*s+dI7)*s+dI6)*s+dI5)*s+dI4)* s+dI3)*s+dI2)*s;\n bJ := (((((((dJ9*s+dJ8)*s+dJ7)*s+dJ6)*s+dJ5)*s+dJ 4)*s+dJ3)*s+dJ2)*s;\n bK := (((((((dK9*s+dK8)*s+dK7)*s+dK6)*s+dK5)*s +dK4)*s+dK3)*s+dK2)*s;\n bL := (((((((dL9*s+dL8)*s+dL7)*s+dL6)*s+dL5 )*s+dL4)*s+dL3)*s+dL2)*s;\n bM := (((((((dM9*s+dM8)*s+dM7)*s+dM6)*s+ dM5)*s+dM4)*s+dM3)*s+dM2)*s;\n bN := (((((((dN9*s+dN8)*s+dN7)*s+dN6) *s+dN5)*s+dN4)*s+dN3)*s+dN2)*s;\n bO := (((((((dO9*s+dO8)*s+dO7)*s+d O6)*s+dO5)*s+dO4)*s+dO3)*s+dO2)*s;\n bP := (((((((dP9*s+dP8)*s+dP7)* s+dP6)*s+dP5)*s+dP4)*s+dP3)*s+dP2)*s;\n bQ := (((((((dQ9*s+dQ8)*s+dQ 7)*s+dQ6)*s+dQ5)*s+dQ4)*s+dQ3)*s+dQ2)*s;\n \n # Calculate the inte rpolated y value.\n t := b1*f1 + b8*f8 + b9*f9 + bA*fA + bB*fB + bC* fC + bD*fD + bE*fE + bF*fF\n + bH*fH + bI*fI + bJ*fJ + bK*fK + bL *fL + bM*fM + bN*fN + bO*fO + bP*fP\n \+ + bQ*fQ;\n ys := yF + t*h;\n \+ Digits := saveDigits;\n evalf(ys);\nend proc: # of rk89interp1\n\n## higher precision interpolation procedure\nrk89interp2 := proc(x_rk89i nterp::realcons)\n local b1,b8,b9,bA,bB,bC,bD,bE,bF,bH,bM,bN,bO,bP,b Q,bR,bS,xF,xS,yF,\n f1,f8,f9,fA,fB,fC,fD,fE,fF,fH,fM,fN,fO,fP,fQ,fR, fS,\n d12,d82,d92,dA2,dB2,dC2,dD2,dE2,dF2,dH2,dM2,dN2,dO2,dP2,dQ2,dR 2,dS2,\n d13,d83,d93,dA3,dB3,dC3,dD3,dE3,dF3,dH3,dM3,dN3,dO3,dP3,dQ3 ,dR3,dS3,\n d14,d84,d94,dA4,dB4,dC4,dD4,dE4,dF4,dH4,dM4,dN4,dO4,dP4, dQ4,dR4,dS4,\n d15,d85,d95,dA5,dB5,dC5,dD5,dE5,dF5,dH5,dM5,dN5,dO5,d P5,dQ5,dR5,dS5,\n d16,d86,d96,dA6,dB6,dC6,dD6,dE6,dF6,dH6,dM6,dN6,dO 6,dP6,dQ6,dR6,dS6,\n d17,d87,d97,dA7,dB7,dC7,dD7,dE7,dF7,dH7,dM7,dN7 ,dO7,dP7,dQ7,dR7,dS7,\n d18,d88,d98,dA8,dB8,dC8,dD8,dE8,dF8,dH8,dM8, dN8,dO8,dP8,dQ8,dR8,dS8,\n d19,d89,d99,dA9,dB9,dC9,dD9,dE9,dF9,dH9,d M9,dN9,dO9,dP9,dQ9,dR9,dS9,\n\n s,t,jF,jM,jS,n,h,data,xx,ys,saveDigi ts;\n options `Copyright 2007 by Peter Stone`;\n \n data := SOLN _;\n saveDigits := Digits;\n Digits := max(trunc(evalhf(Digits)),D igits+5);\n xx := evalf(x_rk89interp);\n n := nops(data);\n if ( data[1,1]data[n,1] or xxdata[1,1])) then\n error \"independent variable is outside the interpolation interval: %1\",ev alf(data[1,1])..evalf(data[n,1]);\n end if;\n\n d12 := d12_; d82 : = d82_; d92 := d92_; dA2 := dA2_; dB2 := dB2_; dC2 := dC2_;\n dD2 := dD2_; dE2 := dE2_; dF2 := dF2_; dH2 := dH2_; dM2 := dM2_; dN2 := dN2_ ;\n dO2 := dO2_; dP2 := dP2_; dQ2 := dQ2_; dR2 := dR2_; dS2 := dS2_; \n d13 := d13_; d83 := d83_; d93 := d93_; dA3 := dA3_; dB3 := dB3_; \+ dC3 := dC3_;\n dD3 := dD3_; dE3 := dE3_; dF3 := dF3_; dH3 := dH3_; d M3 := dM3_; dN3 := dN3_;\n dO3 := dO3_; dP3 := dP3_; dQ3 := dQ3_; dR 3 := dR3_; dS3 := dS3_;\n d14 := d14_; d84 := d84_; d94 := d94_; dA4 := dA4_; dB4 := dB4_; dC4 := dC4_;\n dD4 := dD4_; dE4 := dE4_; dF4 \+ := dF4_; dH4 := dH4_; dM4 := dM4_; dN4 := dN4_;\n dO4 := dO4_; dP4 : = dP4_; dQ4 := dQ4_; dR4 := dR4_; dS4 := dS4_;\n d15 := d15_; d85 := d85_; d95 := d95_; dA5 := dA5_; dB5 := dB5_; dC5 := dC5_;\n dD5 := \+ dD5_; dE5 := dE5_; dF5 := dF5_; dH5 := dH5_; dM5 := dM5_; dN5 := dN5_; \n dO5 := dO5_; dP5 := dP5_; dQ5 := dQ5_; dR5 := dR5_; dS5 := dS5_; \n d16 := d16_; d86 := d86_; d96 := d96_; dA6 := dA6_; dB6 := dB6_; \+ dC6 := dC6_;\n dD6 := dD6_; dE6 := dE6_; dF6 := dF6_; dH6 := dH6_; d M6 := dM6_; dN6 := dN6_;\n dO6 := dO6_; dP6 := dP6_; dQ6 := dQ6_; dR 6 := dR6_; dS6 := dS6_;\n d17 := d17_; d87 := d87_; d97 := d97_; dA7 := dA7_; dB7 := dB7_; dC7 := dC7_;\n dD7 := dD7_; dE7 := dE7_; dF7 \+ := dF7_; dH7 := dH7_; dM7 := dM7_; dN7 := dN7_;\n dO7 := dO7_; dP7 : = dP7_; dQ7 := dQ7_; dR7 := dR7_; dS7 := dS7_;\n d18 := d18_; d88 := d88_; d98 := d98_; dA8 := dA8_; dB8 := dB8_; dC8 := dC8_;\n dD8 := \+ dD8_; dE8 := dE8_; dF8 := dF8_; dH8 := dH8_; dM8 := dM8_; dN8 := dN8_; \n dO8 := dO8_; dP8 := dP8_; dQ8 := dQ8_; dR8 := dR8_; dS8 := dS8_; \n d19 := d19_; d89 := d89_; d99 := d99_; dA9 := dA9_; dB9 := dB9_; \+ dC9 := dC9_;\n dD9 := dD9_; dE9 := dE9_; dF9 := dF9_; dH9 := dH9_; d M9 := dM9_; dN9 := dN9_;\n dO9 := dO9_; dP9 := dP9_; dQ9 := dQ9_; dR 9 := dR9_; dS9 := dS9_;\n\n # Perform a binary search for the interv al containing x.\n n := nops(data);\n jF := 0;\n jS := n+1;\n\n \+ if data[1,1]1 do\n jM := t runc((jF+jS)/2);\n if xx>=data[jM,1] then jF := jM else jS := j M end if;\n end do;\n if jM = n then jF := n-1; jS := n end \+ if;\n else\n while jS-jF>1 do\n jM := trunc((jF+jS)/2); \n if xx<=data[jM,1] then jF := jM else jS := jM end if;\n \+ end do;\n if jM = n then jF := n-1; jS := n end if;\n end if; \n \n # Get the data needed from the list.\n xF := data[jF,1];\n \+ xS := data[jS,1];\n yF := data[jF,2];\n f1 := data[jF,3];\n f8 := data[jF,4];\n f9 := data[jF,5];\n fA := data[jF,6];\n fB := \+ data[jF,7];\n fC := data[jF,8];\n fD := data[jF,9];\n fE := data [jF,10];\n fF := data[jF,11];\n fH := data[jF,12];\n fM := data[ jF,13];\n fN := data[jF,14];\n fO := data[jF,15];\n fP := data[j F,16];\n fQ := data[jF,17];\n fR := data[jF,18];\n fS := data[jF ,19];\n\n # Calculate the parameters.\n h := xx-xF;\n s := h/(xS -xF);\n b1 := (((((((d19*s+d18)*s+d17)*s+d16)*s+d15)*s+d14)*s+d13)*s +d12)*s+1;\n b8 := (((((((d89*s+d88)*s+d87)*s+d86)*s+d85)*s+d84)*s+d 83)*s+d82)*s;\n b9 := (((((((d99*s+d98)*s+d97)*s+d96)*s+d95)*s+d94)* s+d93)*s+d92)*s;\n bA := (((((((dA9*s+dA8)*s+dA7)*s+dA6)*s+dA5)*s+dA 4)*s+dA3)*s+dA2)*s;\n bB := (((((((dB9*s+dB8)*s+dB7)*s+dB6)*s+dB5)*s +dB4)*s+dB3)*s+dB2)*s;\n bC := (((((((dC9*s+dC8)*s+dC7)*s+dC6)*s+dC5 )*s+dC4)*s+dC3)*s+dC2)*s;\n bD := (((((((dD9*s+dD8)*s+dD7)*s+dD6)*s+ dD5)*s+dD4)*s+dD3)*s+dD2)*s;\n bE := (((((((dE9*s+dE8)*s+dE7)*s+dE6) *s+dE5)*s+dE4)*s+dE3)*s+dE2)*s;\n bF := (((((((dF9*s+dF8)*s+dF7)*s+d F6)*s+dF5)*s+dF4)*s+dF3)*s+dF2)*s;\n bH := (((((((dH9*s+dH8)*s+dH7)* s+dH6)*s+dH5)*s+dH4)*s+dH3)*s+dH2)*s;\n bM := (((((((dM9*s+dM8)*s+dM 7)*s+dM6)*s+dM5)*s+dM4)*s+dM3)*s+dM2)*s;\n bN := (((((((dN9*s+dN8)*s +dN7)*s+dN6)*s+dN5)*s+dN4)*s+dN3)*s+dN2)*s;\n bO := (((((((dO9*s+dO8 )*s+dO7)*s+dO6)*s+dO5)*s+dO4)*s+dO3)*s+dO2)*s;\n bP := (((((((dP9*s+ dP8)*s+dP7)*s+dP6)*s+dP5)*s+dP4)*s+dP3)*s+dP2)*s;\n bQ := (((((((dQ9 *s+dQ8)*s+dQ7)*s+dQ6)*s+dQ5)*s+dQ4)*s+dQ3)*s+dQ2)*s;\n bR := ((((((( dR9*s+dR8)*s+dR7)*s+dR6)*s+dR5)*s+dR4)*s+dR3)*s+dR2)*s;\n bS := (((( (((dS9*s+dS8)*s+dS7)*s+dS6)*s+dS5)*s+dS4)*s+dS3)*s+dS2)*s;\n \n # \+ Calculate the interpolated y value.\n t := b1*f1 + b8*f8 + b9*f9 + b A*fA + bB*fB + bC*fC + bD*fD + bE*fE + bF*fF\n + bH*fH + \+ bM*fM + bN*fN + bO*fO + bP*fP + bQ*fQ + bR*fR + bS*fS;\n ys := yF + \+ t*h;\n Digits := saveDigits;\n evalf(ys);\nend proc: # of rk89inte rp2\n \nrk89step := proc(x_rk89step::realcons)\n local c2,c3,c4,c5 ,c6,c7,c8,c9,cA,cB,cC,cD,cE,cG,a21,a31,a32,a41,a42,\n a43,a51,a53,a5 4,a61,a64,a65,a71,a74,a75,a76,a81,a86,a87,a91,a96,a97,\n a98,aA1,aA6 ,aA7,aA8,aA9,aB1,aB6,aB7,aB8,aB9,aBA,aC1,aC6,aC7,aC8,aC9,\n aCA,aCB, aD1,aD6,aD7,aD8,aD9,aDA,aDB,aDC,aE1,aE6,aE7,aE8,aE9,aEA,aEB,\n aEC,a ED,aF1,aF6,aF7,aF8,aF9,aFA,aFB,aFC,aFD,aFE,b1,b8,b9,bA,bB,bC,bD,\n b E,bF,f1,f2,f3,f4,f5,f6,f7,f8,f9,fA,fB,fC,fD,fE,fF,g1,g2,g3,g4,g5,g6,\n g7,g8,g9,gA,gB,gC,gD,gE,gFuk,xk,yk,jF,jM,jS,n,h,data,gn,xx,ys,us,\n saveDigits;\n options `Copyright 2007 by Peter Stone`;\n \n d ata := SOLN_;\n\n saveDigits := Digits;\n Digits := max(trunc(eval hf(Digits)),Digits+5);\n\n # procedure to evaluate the 2nd derivativ e as a function of x,y and u=dy/dx\n gn := proc(X_,Y_,U_)\n loc al val; \n val := traperror(evalf(GXYU_));\n if val=lasterro r or not type(val,numeric) then\n error \"evaluation of 2nd de rivative failed when x = %1, y = %2, and the derivative u = %3\",evalf (X_,saveDigits),evalf(Y_,saveDigits),evalf(U_,saveDigits);\n end \+ if;\n val;\n end proc;\n\n xx := evalf(x_rk89step);\n n := \+ nops(data);\n\n if (data[1,1]data[n,1] or xxdata[1,1]) ) then\n error \"independent variable is outside the interpolatio n interval: %1\",evalf(data[1,1])..evalf(data[n,1]);\n end if;\n\n \+ c2 := 0.04; c3 := c3_; c4 := c4_; c5 := 0.576; c6 := c6_; c7 := c7_; \+ c8 := 0.64;\n c9 := 0.48; cA := 0.6754e-1; cB := 0.25; cC := cC_; cD := 0.8115; cE := 0.906;\n a21 := c2; a31 := a31_; a32 := a32_; a41 \+ := a41_; a43 := a43_; a51 := a51_;\n a53 := a53_; a54 := a54_; a61 : = a61_; a64 := a64_; a65 := a65_; a71 := a71_;\n a74 := a74_; a75 := a75_; a76 := a76_; a81 := a81_; a86 := a86_; a87 := a87_;\n a91 := \+ 0.7125e-1; a96 := a96_; a97 := a97_; a98 := -0.3375e-1; aA1 := aA1_;\n aA6 := aA6_; aA7 := aA7_; aA8 := aA8_; aA9 := aA9_; aB1 := aB1_; aB 6 := aB6_;\n aB7 := aB7_;aB8 := aB8_; aB9 := aB9_; aBA := aBA_; aC1 \+ := aC1_; aC6 := aC6_;\n aC7 := aC7_; aC8 := aC8_; aC9 := aC9_; aCA : = aCA_; aCB := aCB_; aD1 := aD1_;\n aD6 := aD6_; aD7 := aD7_; aD8 := aD8_; aD9 := aD9_; aDA := aDA_; aDB := aDB_;\n aDC := aDC_; aE1 := \+ aE1_; aE6 := aE6_; aE7 := aE7_; aE8 := aE8_; aE9 := aE9_;\n aEA := a EA_; aEB := aEB_; aEC := aEC_; aED := aED_; aF1 := aF1_; aF6 := aF6_; \n aF7 := aF7_; aF8 := aF8_; aF9 := aF9_; aFA := aFA_; aFB := aFB_; \+ aFC := aFC_;\n aFD := aFD_; aFE := aFE_; b1 := b1_; b8 := b8_; b9 := b9_; bA := bA_; bB := bB_;\n bC := bC_; bD := bD_; bE := bE_; bF := bF_;\n\n # Peform a binary search for the interval containing x.\n \+ n := nops(data);\n jF := 0;\n jS := n+1;\n\n if data[1,1]1 do\n jM := trunc((jF+jS)/2);\n \+ if xx>=data[jM,1] then jF := jM else jS := jM end if;\n en d do;\n if jM = n then jF := n-1; jS := n end if;\n else\n \+ while jS-jF>1 do\n jM := trunc((jF+jS)/2);\n if xx<=dat a[jM,1] then jF := jM else jS := jM end if;\n end do;\n if j M = n then jF := n-1; jS := n end if;\n end if;\n \n # Get the da ta needed from the list.\n xk := data[jF,1];\n yk := data[jF,2];\n uk := data[jF,3];\n\n # Do one step with step-size ..\n h := xx -xk;\n\n f1 := uk;\n g1 := gn(xk,yk,uk);\n\n ff := a21*f1;\n g g := a21*g1;\n f2 := uk + gg*h;\n g2 := gn(xk + c2*h,yk + ff*h,f2) ;\n\n ff := a31*f1 + a32*f2;\n gg := a31*g1 + a32*g2;\n f3 := uk + gg*h;\n g3 := gn(xk + c3*h,yk + ff*h,f3); \n\n ff := a41*f1 + a 43*f3;\n gg := a41*g1 + a43*g3;\n f4 := uk + gg*h;\n g4 := gn(xk + c4*h,yk + ff*h,f4);\n\n ff := a51*f1 + a53*f3 + a54*f4;\n gg := a51*g1 + a53*g3 + a54*g4;\n f5 := uk + gg*h;\n g5 := gn(xk + c5*h ,yk + ff*h,f5);\n\n ff := a61*f1 + a64*f4 + a65*f5;\n gg := a61*g1 + a64*g4 + a65*g5;\n f6 := uk + gg*h;\n g6 := gn(xk + c6*h,yk + f f*h,f6);\n\n ff := a71*f1 + a74*f4 + a75*f5 + a76*f6;\n gg := a71* g1 + a74*g4 + a75*g5 + a76*g6;\n f7 := uk + gg*h;\n g7 := gn(xk + \+ c7*h,yk + ff*h,f7);\n\n ff := a81*f1 + a86*f6 + a87*f7;\n gg := a8 1*g1 + a86*g6 + a87*g7;\n f8 := uk + gg*h;\n g8 := gn(xk + c8*h,yk + ff*h,f8);\n\n ff := a91*f1 + a96*f6 + a97*f7 + a98*f8;\n gg := \+ a91*g1 + a96*g6 + a97*g7 + a98*g8;\n f9 := uk + gg*h;\n g9 := gn(x k + c9*h,yk + ff*h,f9);\n\n ff := aA1*f1 + aA6*f6 + aA7*f7 + aA8*f8 \+ + aA9*f9;\n gg := aA1*g1 + aA6*g6 + aA7*g7 + aA8*g8 + aA9*g9;\n fA := uk + gg*h;\n gA := gn(xk + cA*h,yk + ff*h,fA);\n\n ff := aB1*f 1 + aB6*f6 + aB7*f7 + aB8*f8 + aB9*f9 + aBA*fA;\n gg := aB1*g1 + aB6 *g6 + aB7*g7 + aB8*g8 + aB9*g9 + aBA*gA;\n fB := uk + gg*h;\n gB : = gn(xk + cB*h,yk + ff*h,fB);\n\n ff := aC1*f1 + aC6*f6 + aC7*f7 + a C8*f8 + aC9*f9 + aCA*fA + aCB*fB;\n gg := aC1*g1 + aC6*g6 + aC7*g7 + aC8*g8 + aC9*g9 + aCA*gA + aCB*gB;\n fC := uk + gg*h;\n gC := gn( xk + cC*h,yk + ff*h,fC);\n\n ff := aD1*f1 + aD6*f6 + aD7*f7 + aD8*f8 + aD9*f9 + aDA*fA + aDB*fB + aDC*fC;\n gg := aD1*g1 + aD6*g6 + aD7* g7 + aD8*g8 + aD9*g9 + aDA*gA + aDB*gB + aDC*gC;\n fD := uk + gg*h; \n gD := gn(xk + cD*h,yk + ff*h,fD);\n\n ff := aE1*f1 + aE6*f6 + a E7*f7 + aE8*f8 + aE9*f9 + aEA*fA + aEB*fB + aEC*fC\n \+ + aED*fD;\n gg : = aE1*g1 + aE6*g6 + aE7*g7 + aE8*g8 + aE9*g9 + aEA*gA + aEB*gB + aEC*g C\n \+ + aED*gD;\n fE := uk + gg*h;\n gE := gn(xk + cE*h,yk + ff*h,fE) ;\n\n ff := aF1*f1 + aF6*f6 + aF7*f7 + aF8*f8 + aF9*f9 + aFA*fA + aF B*fB + aFC*fC\n \+ + aFD*fD + aFE*fE;\n gg := aF1*g1 + aF6*g6 + aF7*g7 + aF8*g8 + aF9*g9 + aFA*gA + aFB*gB + aFC*gC\n \+ + aFD*gD + aFE*gE;\n fF := uk + gg*h;\n\n if DERIV_ then\n gF := gn(xk + h,yk + ff*h,fF);\n gg := b 1*g1 + b8*g8 + b9*g9 + bA*gA + bB*gB + bC*gC + bD*gD + bE*gE + bF*gF; \n us := uk + gg*h;\n Digits := saveDigits;\n return ev alf(us);\n else \n ff := b1*f1 + b8*f8 + b9*f9 + bA*fA + bB*fB \+ + bC*fC + bD*fD + bE*fE + bF*fF;\n ys := yk + ff*h;\n Digits := saveDigits;\n return evalf(ys);\n end if;\nend proc: # of r k89step\n\n # start of main procedure\n x := op(1,xrng);\n y := \+ op(1,iy);\n u := op(1,iu);\n if not type(indets(gxyu,name) minus \+ \{x,y,u\},set(realcons)) then\n error \"the 1st argument, %1, mus t depend only on the variables %2, %3 and %4\",gxyu,x,y,u;\n end if; \n xrg := op(2,xrng);\n x0 := op(1,xrg);\n xn := op(2,xrg);\n \+ y0 := op(2,iy);\n u0 := op(2,iu);\n\n # Get the options.\n # Set the default values to start with.\n maxstps := 2000;\n t := Float (1,-Digits);\n hmx := 0.5;\n hstrt := evalf(0.1*10^(-ceil(Digits/1 0)));\n hmn := min(0.000005,hstrt/20);\n errcntl := 0;\n maxtemp := 0;\n maxtemp2 := 0;\n outpt := 'rkinterp';\n prntflg := fals e;\n if nargs>4 then\n Options:=[args[5..nargs]];\n if not type(Options,list(equation)) then\n error \"each optional arg ument must be an equation\"\n end if;\n if hasoption(Options ,'maxsteps','maxstps','Options') then\n if not type(maxstps,po sint) then\n error \"\\\"maxsteps\\\" must be a positive in teger\"\n end if;\n end if;\n if hasoption(Options,' tolerance','t','Options') then \n tt := evalf(t); \n i f not type(tt,float) or \n tt>Float(1,-iquo(Digits,2)) or t thmx) or evalf(hstrttrue then prntflg := false end if; \n end if;\n if n ops(Options)>0 then\n error \"%1 is not a valid option for %2 \",op(1,Options), procname;\n end if;\n end if;\n\n stdstep : = evalb(member(outpt,\{'points','rkstep','rkinterp','endpt'\}));\n d rvstep := evalb(member(outpt,\{'derivpts','derivstep','derivinterp'\}) );\n\n if prntflg then\n print(`method: Verner's \"most robust \" 16 stage, order 8-9`);\n print(`an embedded order 8 scheme pro vides error control`);\n if member(outpt,\{'rkinterp','derivinter p','interp_pair'\}) then\n print(`12 extra stages are used to \+ construct the interpolation procedure`);\n end if;\n print(` `);\n end if;\n\n saveDigits := Digits;\n Digits := max(trunc(ev alhf(Digits)),Digits+5);\n\n # procedure to evaluate the 2nd derivat ive as a function of x,y and u=dy/dx\n gn := subs(\{GXYU_=evalf(gxyu ),X_=x,Y_=y,U_=u\},\n proc(X_,Y_,U_)\n local val; \n va l := traperror(evalf(GXYU_));\n if val=lasterror or not type(val, numeric) then\n error \"evaluation of 2nd derivative failed wh en x = %1, y = %2, and the derivative u = %3\",evalf(X_,saveDigits),ev alf(Y_,saveDigits),evalf(U_,saveDigits);\n end if;\n val;\n \+ end proc);\n\n SQRT6 := evalf[Digits+3](sqrt(6)); \n\n # node s\n c2 := 0.04;\n c3 := evalf(48/335-32/1675*SQRT6);\n c4 := eva lf(72/335-48/1675*SQRT6);\n c5 := 0.576;\n c6 := evalf(48/125-8/12 5*SQRT6);\n c7 := evalf(48/125+8/125*SQRT6);\n c8 := 0.64;\n c9 \+ := 0.48;\n cA := 0.6754e-1;\n cB := 0.25;\n cC := evalf(57617028 499878/85094827871699);\n cD := 0.8115;\n cE := 0.906;\n\n # lin king coefficients\n a21 := c2;\n a31 := evalf(-15792/112225+5536/1 12225*SQRT6);\n a32 := evalf(31872/112225-1536/22445*SQRT6);\n a41 := evalf(18/335-12/1675*SQRT6);\n a43 := evalf(54/335-36/1675*SQRT6 );\n a51 := evalf(4014/3125+252/625*SQRT6);\n a53 := evalf(-14742/ 3125-972/625*SQRT6);\n a54 := evalf(12528/3125+144/125*SQRT6);\n a 61 := evalf(1232/16875-152/16875*SQRT6);\n a64 := evalf(29684/106875 -13372/320625*SQRT6);\n a65 := evalf(2132/64125-284/21375*SQRT6);\n \+ a71 := evalf(2032/16875+152/16875*SQRT6);\n a74 := evalf(-7348/983 25-33652/294975*SQRT6);\n a75 := evalf(10132/64125-716/21375*SQRT6); \n a76 := evalf(2592/14375+2912/14375*SQRT6);\n a81 := evalf(16/22 5);\n a86 := evalf(64/225+4/225*SQRT6);\n a87 := evalf(64/225-4/22 5*SQRT6);\n a91 := 0.7125e-1;\n a96 := evalf(177/800+69/1600*SQRT6 );\n a97 := evalf(177/800-69/1600*SQRT6);\n a98 := -0.3375e-1;\n \+ aA1 := evalf(2844530829046074022657/58982400000000000000000);\n aA6 := evalf(4287156859652598464203/58982400000000000000000-\n \+ 1598864762333658025459/117964800000000000000000*SQRT6);\n aA7 := eva lf(4287156859652598464203/58982400000000000000000+\n 1598864 762333658025459/117964800000000000000000*SQRT6);\n aA8 := evalf(-141 033886218604337343/6553600000000000000000);\n aA9 := evalf(-21409264 848554971927/204800000000000000000);\n aB1 := evalf(-72189389771/995 9178240000-459663572789/59755069440000*SQRT6);\n aB6 := evalf(1/30); \n aB7 := evalf(-14201240926266911/557169364500480000-\n 3 1790792357660029/557169364500480000*SQRT6);\n aB8 := evalf(224144369 41/1563197440000+459663572789/56275107840000*SQRT6);\n aB9 := evalf( 154180604903/2534154240000+459663572789/11403694080000*SQRT6);\n aBA := evalf(21871487332435000000/125536952879579583419+\n 1838 6542911560000000/1129832575916216250771*SQRT6);\n aC1 := evalf(-1781 4457135339308018349626715861482187798261191466639575293774540539140870 7734804982447062502773/12477180101129940547461455164104253535981349476 00568397156373491324203879120405304413829778240000+3525911945755693171 1565118099122309702656888038447848465094493141264804660882853103456253 8513357/81101670657344613558499458566677647983878771594036945815164276 93607325214282634478689893558560000*SQRT6);\n aC6 := evalf(-39115022 5456457796885858319889751408825022451618311227032014355910365202109457 51850583137867/3842542879826810236707110858948304316677703125568821833 1140907046999467997785653437677908480-49082670039628745454059833196112 9757400186839154291202145347161815801053957874498846640625/15370171519 3072409468284434357932172667108125022752873324563628187997871991142613 75071163392*SQRT6);\n aC7 := evalf(643210041535328932923955834959360 270277930780334485030265105750796567439186095378077346484617022694073/ 1814903407134118101527330524719997209072721513421672786517822272756721 738310655354625038802858212480000*SQRT6-622064296680932516193525865473 0602646524634866355956674478556999200235462116077974176356230048173164 59/9074517035670590507636652623599986045363607567108363932589111363783 60869155327677312519401429106240000);\n aC8 := evalf(120394354672838 5294644268186854769106596033156989737459970836017592684437096940490927 391123081521/654673243150492794078974012593317347953963670018788019816 8132038132534360122730704444373657280000-15111051196095827876385050613 9095613011386663021919350564690684891134877118069370443383945077153/32 7336621575246397039487006296658673976981835009394009908406601906626718 0061365352222186828640000*SQRT6);\n aC9 := evalf(6368146615670137844 9525903160928961790100434377497936201427140303316098275608362465676059 840449/119057634931893490852780569777780769114850167606078444507680127 107913165342297705956314829715000-352591194575569317115651180991223097 026568880384478484650944931412648046608828531034562538513357/154774925 4114615381086147407111149998493052178879019778599841652402871149449870 177432092786295000*SQRT6);\n aCA := evalf(10278934048763239705668635 9306562764382798025378120766919524062556606029760828355981796225798367 84640000000/2070660733355865000456385391607475107799460834755308758730 1432465002027701979512351053114927376343490460197-24757946279683404392 6692669258294252357855908695112663965189218125635382670244856534440255 61440747520000000/2691858953362624500593301009089717640139299085181901 38634918622045026360125733660563690494055892465375982561*SQRT6);\n a CB := evalf(1963500009650946638084395645582909493284711388363243988292 6745444809822658280742880787456/\n150099331243234774871371517927668137 37022277834253210285601916815234167186635020874092933);\n aD1 := eva lf(2525608241949563386308964624438617443527/\n 1241601789775 6354830807859200000000000000*SQRT6-\n 2548851195094876660216 3761842966272037005387677568247/\n 2534336434064494528100377 1622773961523200000000000000);\n aD6 := evalf(-552470350996365859393 640759989/2400793528263703412500070400000*SQRT6-\n 261754608 1675469247418718340204655213/431392587109884206933606400000000000);\n \+ aD7 := evalf(-45969294618407232267578352626581642155421231201/\n \+ 10187731154133781589406192186163200000000000000+\n 15 40493536582818303738906021531546510663696889/\n 885889665576 850572991842798796800000000000000*SQRT6);\n aD8 := evalf(-3968812951 635028178485515838403541696971/\n 18374628007211630439078297 600000000000000*SQRT6+\n 20301387341801440158880077748955015 3682185921397719/\n 6003783517480134311881093736968119910400 000000000000);\n aD9 := evalf(-6776022112547609085219173382640193141 17/\n 635714271434389910412902400000000000000*SQRT6+\n \+ 57340072791914637839492204156400815228449519011392389/\n \+ 19744238839693126186283635091213610188800000000000000);\n aDA := e valf(-8800028717594297513271653743688562521/\n 2044936274689 7197076153911415852248500*SQRT6+\n 2410078871503919222575819 7856261740786803059875758180717/\n 9662717001210818114953908 042643919942065136939286292000);\n aDB := evalf(12435891603352343922 5154730110040589545064737/\n 1993591244994566948500251017870 4400000000000);\n aDC := evalf(5947161392974866744750823561035920298 86330739685357945223223985387172161751824241784555387316314439/\n81801 9847119678359631725769101238313386585208743795596694052943582031156000 597320370585600000000000);\n aE1 := evalf(-2938809528732308039351664 16296767553377/\n 866938749696854853908947200000000000000*SQ RT6+\n 18459267936147075367459423920818945931746672238792936 9596771/\n 1278912170918306562333640142057316550645713216000 00000000000);\n aE6 := evalf(2897291244884828193281565089/1904926505 5803310768128000000*SQRT6+\n 5966995986367380181027852718263 477/684582962942931480729600000000000);\n aE7 := evalf(-374861943562 4523040662096435375495632409181/\n 1405830768127326348741938 035200000000000000*SQRT6+\n 99009240614446727611594225452277 068906413179/\n 16167053833464253010532287404800000000000000 );\n aE8 := evalf(41982993267604400562166630899538221911/\n \+ 116635822311401951029305600000000000000*SQRT6+\n 463264582 3113234486269357844283603936661991916850927460433/\n 5096189 922215990577140952099757378096638035200000000000000);\n aE9 := evalf (293880952873230803935166416296767553377/\n 1654471223996727 64770545400000000000000*SQRT6-\n 121354756771846880705598195 01757154968443992507349800863475059/\n 333753408855726885777 5113382843672473526974754800000000000000);\n aEA := evalf(2149529255 3013453087829315020563569618432/\n 2997365344626456661437259 5657785433238875*SQRT6-\n 8031428603597180964147750321204281 053557209400385686643427859804352/\n 25135864401783913069001 78164909088113749933981949109368563389778875);\n aEB := evalf(-44866 632128961269158599595825347949153517725172080973/\n 54296071 75821308141232283339099249860726338769531250);\n aEC := evalf(-35998 8533934752543813368225945058137961504440675167771570563740579175484411 998973149563531328527853237660249760109643/234128137445668240736067711 6624423798924834709317406966157166023457299333433080087587325901942949 58617150200000000000);\n aED := evalf(101113680735918918122257191691 4688/2927578889427871359661497484969729); \n aF1 := evalf(4220334940 168717525563719481764309232553/\n 55532688950306902357899960 03491120640000*SQRT6-\n 431179384946124492233842371061399556 97243762787772847383/\n 140301048622946906485795665217274884 45420965260989440000);\n aF6 := evalf(-65372649360291914372644744384 375/457582893592156886213077910962176*SQRT6-\n 4921705044310 44248358505817476691843/26311016381549020957251979880325120);\n aF7 \+ := evalf(312292306982904450161582808948983992497619279/\n 54 031196176535884913246084116864832317440000*SQRT6-\n 60242025 722206083647640080390153021797730167/\n 46718703460914486955 06240355969515576320000);\n aF8 := evalf(-42203349401687175255637194 81764309232553/\n 5229862652007483519857107084128791040000*S QRT6-\n 1012848601975442533636285582979463426076658292522730 4979/\n 2051440458733049774272501566471676463052668060718080 000);\n aF9 := evalf(-4220334940168717525563719481764309232553/\n \+ 1059789239915401287502749181781142480000*SQRT6+\n 90 164396775224825317874747969895939573106537263617688583/\n 99 32194582195572820411492715910530662743409752296080000);\n aFA := eva lf(-43216229787327667461772487493266526541342720000000/\n 26 879922067906624005297106621487120800647611685231*SQRT6+\n 82 2220421784353922416106346105112190310210366765138782108892460117760000 000/\n 11253996143693043613068245539207658293443583785731438 0718907401253008522853);\n aFB := evalf(2098142138719162166795696408 11090009729840605120/\n 116519746609607380969872306225548240 75229159217);\n aFC := evalf(394155089286395228118412271548581315021 4519858148244578543766661999079625453432169420046111603168071904019820 197053706993310801913/\n5763488069457478355617493981609669453909166107 6521018249385759399673275736397697647150553033702207473063063847554848 9174498085584);\n aFD := evalf(-475944389207705069529277276691227549 8897121280000000000/\n 4614026158486489304426198097242323507 384603506591241137);\n aFE := evalf(38733614144315448443538220691259 283298308750000000/\n 93806291160324220065540465392781147766 752569954001);\n\n#step for error estimate \n aG1 := evalf(-15631765 3995567850184921063401246768027/\n 2123592406830677012916618 98043594240000*SQRT6+\n 180924082138329654478403899452268147 27838921316097789/\n 456826090866320289268103474645955550170 6277524480000);\n aG6 := evalf(41984484090942118562371132909375/5249 4462812567108248894805557248*SQRT6+\n 6594683784650905775006 6287355594411/3018431611722608724311451319541760);\n aG7 := evalf(-3 8800907634871851557429961190168666395776983/\n 6198524154042 582121698476759940763269120000*SQRT6+\n 86929658981342392065 13518248119006769975359/\n 535962614823230784958890847664050 959360000);\n aG8 := evalf(26416302622224262844685000717365835661056 08571199325883/\n 235343729805469979809271071241826755571130 067491840000+\n 156317653995567850184921063401246768027/\n \+ 199992055607259790546219146109360640000*SQRT6);\n aG9 := ev alf(156317653995567850184921063401246768027/\n 4052676766181 9895652001992553977680000*SQRT6-\n 1934221034749233536945421 05476136625982637168991506421/\n 160483573437102114320728337 49116213173856151273040000);\n aGA := evalf(-19419587503350096681694 941672242361995243037384025897671049255680000000/\n 21557389 29233095407456284002740551925607350553898010429805538450410571+\n \+ 1600692776914614785893591689228766904596480000000/\n 1 027899053306897212338272667278244239283200723671*SQRT6);\n aGB := ev alf(-27285760059113968837908932750404506400064658240/\n 1336 728621411169422812695849204871581103756891);\n aGC := evalf(-1948530 1606187433333548455543655191732975032494415887278634251111026334129440 5932910123138589192221578993200454377/15840605894584140753571150900860 6665080004611349475377495883416420484790305489258084501428138744206891 13167632464);\n aGD := evalf(894887352566754892758772116806035181797 32480000000000/58814073298029244653337926984054935524805348324518339); \n\n # weights\n b1 := evalf(100976787617015984669475787/692150295 2403262310437464576);\n b8 := evalf(8877148253451235588984375/438551 4038208782482187638272);\n b9 := evalf(96191657294968151174775851562 5/4416417715504587515036809762176);\n bA := evalf(196733751670156400 1434375000000000000000000000000/\n 15431364863119854943071851 131903908575429289017877);\n bB := evalf(232371325207697480685545753 6/10352378514220126928031114081);\n bC := evalf(28308600293241456954 3119391171389373911412640543251581210888597980900569995046369938026341 22671806566061266984631226363619/1583915465406700809680657570071738908 8587763113250985823298798221316938089802975861235659646456168220355218 6100842929847264);\n bD := evalf(29613635234119765342208000000000000 0/3899432561650270968394778037550931439);\n bE := evalf(117048651891 177050452812500000000/903958175807874008864483503817601);\n bF := ev alf(145778296653275182685983/4945417885871057962703934);\n \n # er ror coefficients\n e1 := evalf(-177913950874589116688275/30899566751 800278171595824);\n e8 := evalf(-146310814863971313066015625/1370473 13694024452568363696);\n e9 := evalf(146310814863971313066015625/103 7692132402393683044363196);\n eA := evalf(22239243859323639586034375 0000000000000000000000/\n 15431364863119854943071851131903908 575429289017877);\n eB := evalf(-45545971423894813872198400/14789112 16317160989718730583);\n eC := evalf(3025370389918671796877721979223 0849580089055151782698388603441025752163092571411495771931144749354623 7081175474332041275/26051241207347052790800288981443074158861452488899 6477356888128640081218582285787191375981027239608887421358718491660933 );\n eD := evalf(-36436777139115851097758720000000000000/\n \+ 113083544287857858083448563088977011731);\n eE := evalf(11704865189 1177050452812500000000/903958175807874008864483503817601);\n eF := e valf(145778296653275182685983/4945417885871057962703934);\n eG := ev alf(-16723862451391031122709/339047561915509883967882);\n\n ## nodes and linking coefficients for 12 extra stages used for interpolation\n if member(outpt,\{'rkinterp','derivinterp','interp_pair'\}) then\n \+ cI := evalf(226653722310560373/305421660606510191);\n cJ := \+ 0.888;\n cK := 0.696;\n cL := 0.487;\n cM := 0.25e-1;\n cN := 0.15;\n cO := 0.32;\n cP := 0.78;\n cQ := 0 .96;\n cR := 0.42;\n cS := 0.25;\n aH1 := b1; aH8 := b8 ; aH9 := b9; aHA := bA; aHB := bB;\n aHC := bC; aHD := bD; aHE := bE; aHF := bF;\n aI1 := evalf(3087869512291919417337803948463966 1690038856015163826798964560158677379340068262361132541525526793677755 5906619425860405247304243350098196916984219632845530918276153550968630 41328551708358871485646120332024084108975995042341286612353842440693/2 0403328328115458494133410103092538326472371870850604130212953769287355 6667660937888053024876296028109843666686296038864614074267398811674942 2252854583423470769504064362172657759775020227135479838862766161624512 062675163952468167497075472344576+237041371792140016488292176699789957 9585818007296769261137280926500645849762612717599644271027754930360914 9314804030860352813229415562572410431201069297283740228146526641014393 7445459051963703569962871332731840781014225/12426302568909510326579728 6918195108175719520580444543463412989871404205233065643395132958732014 6803437551827609256142709084927740265171032272579749514163197940132746 513394263595335092515722480978556773742083196994120459986*SQRT6);\n \+ aI8 := evalf(133727921323555006019570849966463687303873497925022685 1939899808480335929866565136620212713369948589887091625387353301490756 8082702015234202520056507127612233667537598467333819967521261570671325 242954843184056029474183410504324658418633390890625/736878645460908712 3352457398969579942717124799744878613652798116958104906872894914045525 8812745718557854000413952212061689228479473308024119163225965015340569 7562894455269130785959470503210225011839593485731469643614088623525016 76930760850901504+8841894670628564938638219455811130726240203110772100 1948920458962640138626755282072267898040657304265783464784995141637589 2403285560606563718007334315631439249226287880342877750749805813856652 90519970241818077214403515625/2499855014213586015670970609045039762815 4065424765668547443655875961691216157773142345691726769887808701320678 2927247517729243106560360764277593123100503532351299237579911468789560 2121370622281856166575863117099558048424262*SQRT6);\n aI9 := eval f(19027838250299912052788416579684179951609584960616173000428881902679 8266321404493268572802739897123430394517339444358383789292458457429646 5219889788139277729751314444428212933448738125198221152312800906072259 3349691332125417162575872912510328125/95259467844256245233209584758601 8091941607394078226774898558096807703226398861971868080275027983782703 9149145139985005719723326957336805889948799892644873534053403586179073 3299366503262578665256865070593502377676407434449387200965408151977998 208-125080461194257747912443104496840385883397995225556539342375283410 5640985451660087851594655209298450589131940860906881702481936355183297 0901376689119586981335720762121234118758425241155415533138658922619574 2645815497656250/26776693962340140068807132003855981977872333681837698 6856113656979778290611658968192650592228874688829327135068264133065209 6582075033247674010155994114064791792472512878726931969092245172814641 4253290118500906575211496165331*SQRT6);\n aIA := evalf(1259048249 1688877403879750408595201934344022926666450484645373536529892988812193 7407009435025357650988964859374717985692362470222277459261827473554238 4434999603004026411108343010506046277552695340281804213162662295074075 36635736567933370633750000000000000000000000/9985357135562992906543688 7558660351574825195979887032071025368666945145476237025336343545686637 7367071115317383500029929708698317043902186209061528069683542508583153 5111800757873559555089616299610743556149426863301584827265535236214883 02531994773921078507510340723-5382772950704609289473413600415751778706 2309669480883137684259895304825856678337573751383782800154011559884903 2555789091274985024575432678790279586939467334723431418182764834845334 51592960639162228742859409248957841750000000000000000000000000/1127368 1740949200158247684268145698735742811097402300443591835959682002727747 5582671342889582071423041227873059682687949268918318661902881906935240 0731700220999067813569729578558627516429906319277190717304800626973428 89671473292164122768746705057*SQRT6);\n aIB := evalf(152553264273 9540438585464071223388279683247874854183173044990463480472098506588580 7994010294075234156120398464543812227174445677854315391003275403424676 7390678926011090834125274204953422728562502461369359331567188025243505 059909526401328050432/669883691973812610467335770453156370483999083890 5408282652319158792765233866591130386692836157657926708679975431388530 7276174293082872529583619794887431547787770142800380938974573945641870 0286433441117691950389837070309849019897303678878771719+24591819314480 6273015696138889147945877631130453062200870257197207841862867679986552 3263219713897497734280526287811801977615685429198776742977868094423757 2264533875991315976208564698130839371393254534583892570108493363200/24 1022828500152839880642205984289048073770218148565515773281251625009956 3656327794255889365871564646021400192680721350424271039869139199760851 1318564104719311144781806977489973000935496530247216299003016167059595 417422681099*SQRT6);\n aIC := evalf(-1286169054855917096277342379 8036227182768400822486062511152679333527894482477813636295898779693256 3150057009148306626630587252296717167130416631561655887317706843594367 0641337657955610449253549942918739603901411598518214731887233820991214 1629900298758444120123994508756162088857641720010405829526014031014558 51703911697343982521790319/3077847007399690652994790716760656217140198 7641096282821357524695767281042816881074495451326886117138069753267918 9918624817436214021311872388755756310373995232948217441261039523722434 9244185160307363678143371457542016247927492984132988765448850600056257 5903394144312011585873213895736912065412862905359227145137823607177284 246489228192-149435035485757625582968894536898996909445732860225802244 3661593597502090321796663723370603314834699697055639902776615578091291 0673731249822219140883145972506107825068648552192782645573645152085577 8283176410054821757608045276931599356445663362384577806549844881227542 8017787621870554561370630421818398005521746978200/38839862626189866686 5776477930247302618169204213866121749776511421565591875778010724621547 0251301547529951502490222907036352511570442429565232040956099733246456 0069567357384020195515380374464648829894067848180277531137913050117048 8515003038624216799751663058940028313968606732393228153544238100957720 42207684590076789*SQRT6);\n aID := evalf(560239638727388798677391 1766280268555866010542335241204051848993347270379535748298830428706661 5895322205574237442268993370668899290155940245925335083520767941840664 6810287491725358313940100248750495871323970271122904138697268786274167 67078400000000000/1149481599528462884538492214751747007614237551824746 5835900603610550248067892197347048018491126311533374461090906118513941 9592656382180721734388567109696596324476078437246159917724812281711316 0002805574494677363030270224366437829729628196949518539407689+10301553 9401655756767750106712184580137756080189788508155101354641343717778542 8296157893149509780816419979581893234062641964169630622220653507970287 3192750578246630044893537926448558093123006151963585368476070237018931 20000000000000/9650228182528661142482588330223020379830455715057788268 6036914184765380058705288227755096117696059956059156661010804769700933 3445772983105933370748140851008895123386328296949758702111206644993947 75191735116290462555352263327274001761*SQRT6);\n aIE := evalf(-58 8076437302196582984161244533620114374984526019262696171909025133647901 0727853802277214152023609529250674810622401784436242532686398471178136 4680440554593148417359262907036147631841618232301569779387727607836279 477698365365777291402137500000000/333746689850627323838088833576503846 2457091174435349318898710107557540450798720660005328332298530410370509 4730153155735994223895198608089547342288005069697073988870723967244927 6294808783278418671343854351208551202449907215412249411584544879301765 7-57814968729790247923973701634095111697215073348701689296031242109771 8499942100662829181529518964617161198763775708069764702761693062501766 1080780748609093595177596713814881559449889245169846428535679788603215 62880522500000000000/1347713572983128798080942723499096535415586930403 0822692632990703600819944388569085480658211721520233131765031481759359 7045411409395654740145970887778329546211769618737526836949225470794170 505270304450133814552105305767554050982833*SQRT6);\n aIF := evalf (-55867448836931479530687178180862025081886449063320593543352145502495 3761503787303038714739717587593329251119688513664290220096045352569348 0181641667332456360139612563880176916091504338212196205150767098482793 329143043883/349253823119279099665347901163806282663359962700679664974 8591658605360994283645200671428555727684608324877825342986495407499474 8877675417697079892308601070396084100520878433531175135255797047061079 0373486412643075809088442-39200946501734285094220225300045954123583127 9014464957921069979385626730728367123193760305414905977607585826582651 2244625092977870653660407545767958328314978859183988921353791001182244 2410322197863059503811317207511600/13432839350741503833282611583223318 5639753831807953717298022756100206192087832507718131867527987869550956 8394362687113618269028802987516065272303550330810399849388481572247443 5067359713768095023491937441785101656761888017*SQRT6);\n aIH := e valf(39232025182650223348705514342974632701372659084469723275868986428 5561292726062968338479777708318041698578704732566125565774470102410474 53809203074917818311689085695236821079162808291962058296896800766/2110 8120203624599039904358342948309669804450301472635254786055537091483716 0507379390370828341428589875192075274716930656265166151561850174242617 9424376628334268400782573489148452492234080426865002983107+75480094433 6806966504320672341445374683025099710891803616422753628143014299118632 7381680805016763616622545158788319590897849335742211353462315599050082 529876802005822088072459754534979821615887544400/211081202036245990399 0435834294830966980445030147263525478605553709148371605073793903708283 4142858987519207527471693065626516615156185017424261794243766283342684 00782573489148452492234080426865002983107*SQRT6); \n aJ1 := \+ evalf(6860400644785616741208965915106978554029126357689688712332022223 3201209618321727471353073299573169354110491204644252113503997229164047 1463208883989410524671228635143906551161406298561028469424429106643533 49601607693700074044306157987562421733697215037423454625363808531661/5 2929457106167154326180638398558662573947329502589301780280146172080516 1332834428333770391848107021187998702747628847415184402072554514026555 8698131688156311247788921741513624364515252273955466274124234548118470 306590427261358423180768325165814776275440537232421875000000000+932388 8804714432582281772674166380987021885172323245927388705704735888830449 0399656578029749975315704760995414541706489543788793798147545503021193 5595836461967119431580218739003544061826740336907211322312032216605773 959218828437861782074776969409452593048/151698742713677177196440446637 3167217177028817456170329550488661601559527600840225146316104123402191 9933617082755646885703910654071458149878744939927163669034509106436636 8333953103864699783459969238178312082637034023583370888928302328014197 68669157255517578125*SQRT6); \n aJ8 := evalf(-1425679017296707192 9017161600201273490523836842687749340853048423118780083284077773977090 7529290644322001569736669079071257202162403178023040681714111602622845 9701951892229742687549780159910881574872335003117180975264616740090359 96185280400449664808577597/8096564303547051681749371633221640839093041 6345299085606127418056891340466701020246079370981923701183202836713346 6495934055198124964712952032034132494788406474168709974975459898400105 9503197785863319255089460001986877426414256079827711622086543750000000 00+4484176714058709655179665043102368038239218192485135605653480056951 3118006016826953485500012995681100488834668910242228128871657736179178 8853232089386505917626771712894347902852030211444040766619059974426451 9031603062066957534862284043288/37005386155037097972908769786019937488 5339363297686712142675045064223821728433201176635198109919384810795802 5569097302875887768571157234049829591161647312710786740144547221660042 81733901772400901689266583041968312529100468812039681731234375*SQRT6); \n aJ9 := evalf(1076626769716159208771472829934494019886567247101 0751539099195493259845741564040931448561934275276630494047649646527315 4082185164273887153867312264326970960246596898146457057167155667776414 49002823005877843351540253070430486359658913836818008042991153575279/4 2913783536298693868036626220441398516177795657888600714158044323685496 0057515374021222896862581848672078899928551310614403216232627802067443 2159675751889128165416325781213181902176686680609776567507983886216332 0467645890419260524174245853939897031250000000-99611082050567766474718 2222939528700110089754473456898342046220094835699836433508545468543237 6772188302033298267860993556813503177350358942393725403630043001793684 7593260321097205355117071672938354627412001703876902739274631631200136 4576/64980688007942366158204582360115690714411518522393143014480143126 4177965592863730306819457114136467656180688339877364249237094282768768 4779903679052102164014545968017303762169732659233353309228900825907675 17467244139902745091735905344109375*SQRT6);\n aJA := evalf(142960 7818139480860934033702479003754063048529035758384276710120927175586014 5603424617375854403251903792989614872179684807226674369570697754567743 5451036237087439773759619403033959182635923937603049770471829206667888 652551430504293991457620737558785576435712000000/108703243556672625680 3501511996464116536774967389404738302712869724661197598715161231264724 2200060989022846956322670340654716546907312560075587234862639737140055 1134264679213526114126459370863278881290536169650887914830512658090570 4910116839119209336313424058961667-63052317756948728049646599249729415 6405896186508442551259952926147650657336661614871275994023460382289586 1903514581264333716296142735168497231132500213134559602441279630568681 09950843191629543406557886936480738501669253031371735040000000000000/4 0943882251966501142719841691721269745737583207870100150535603577489735 1614949080930618205107970341647258986105333896959250575109190929664620 9265288617698957081977046423181488875389787836532174875645509629274798 567906527888922432637970282212005943*SQRT6);\n aJB := evalf(33988 8279744145200053926668918218330653877695009038978811892662117884234855 4403881963131140336211761343662253616316936561786785679498248258491515 4732541534810032990939650587183522313481611240062217445074751252402215 4951031729901253818292006310591725683140352/15717621698146273954539031 7620898168370961099033497550973375423521848685515310361162133358857256 7421861800958961126585657655888433277321134042349891404927181898545345 2132089891185215172542969435314469760882677064417859950809500274700395 42084035167694091796875+8491680091808132933983019311365469801551736745 5006373799477512822380026540227411960045435232901974557088003391398280 1694102527688516429735480156872580830119036762685369026744658060366796 8281272042366181695071588940741866463327918369086373888/25698397438311 2796218554760897444813982713675729353637600111103357991371281114452386 3992475445384143804465316520079075713371551042784161516005642527774590 6362786364541732798723737563924361281028780953109462057337491848060127 336795470834228515625*SQRT6); aJC := evalf(208186015461349732097 3891971493159187333564497001390695733321306772767518822836818230436334 2495687776283259383468850137393026287823842664012727250772241565143045 2167273530422035138835169980886419398216538272162861573225029013530140 9808256505218128865246246669093552938780309142559168098177984850805024 10699016516968839611190189561829193442860116775977/6499455343969471581 9026561700767307137154356691519134885964696967702651498636848869310223 8285282192546407153860204132715038252649287539352104479177684257718757 1394397542590506390826169479312937565461361486225262987753917746887716 5093578956603100219134219289159870108092143705662858409313904786023495 8712551223936062372280104157661389241333007812500000-11013172510552271 9474682648683662012656705413969820252639074702022960153504083527758454 6394976037154360227860125701002314851364967914738820138184381326629492 5707843907806406723618691159970810035513731687518453981547831564205681 0795269415093126165821447643111236243874941704805317159526665707848773 7169033335139564927982963815088377984/80384918234465675566906277982549 4610245313327297708916116542904258150575358378924367401557836818024213 6295025459301186310961295317503138101120991745539300381653590848163577 4686370827777190908651698084567645697143167985447968820038784179431831 7408374361970688254392352005296658117078019509883750863093645978684090 42533849408321044921875*SQRT6);\n aJD := evalf(191607898049616610 4078448765060077220744248138931470721694055835079182187622768858644347 2620255716544532601054201603807876880792682775391875561522982818449135 5439036525997646332530424170294800279869504848424659605312971984176373 582228570174626022265458786304/121248969201499883828086525627751752788 2676371627314093298235599106511291652651069761878594688179958684730042 2840487642157496092205432254470454328197997949187644952397431300179287 2541684875827280063569849399308992691865121058306252769799517936146839 46678515625+6900615772902197344467137017617177748680749143371528799262 0775165405099222129679754536973234380943548123232065168730579664552016 4746680377373918378807417030523632740708672669275442838673756499128118 967899466950734053467770685823228459669690253312/227488329511907109070 6623349757811455263168645748353611659669826694537819985713507813681664 9016681355567200567019224073455895175686323299608754183128837432350501 4299766970000153727210087904845335176370045792845358869683191891602067 266970352915185055*SQRT6);\n aJE := evalf(71150989760142587244218 8404888085355392844630060280553471643650876033225365749408373301395790 2509053079540311670374572487958483806465265190286223165468589256500487 0237472659052835614875913169339429267278074344104909301059784325484432 2254156862155159296/12773161747965515663257378679929103504095935143717 7314254224726911124868014725672639386104139891133560862613896351099992 5128247880690484750935142462914261288858725382536500808164278192118022 6714940257306930622453702747916445923549919848463480843819140625-36847 3824615738036301206940472408999301430073526929067903694666826482331655 2154692761919152643173949740366361945870716208927742310532719511040306 7703110974345661320067631501090151555105043169874480392985505287619420 4990594533629690434551808/28234220075940118130314466853427873528815092 1355471205367670488182581852690034345163701816279382451655572527689873 5265606611606242069291155250071461388945056272074845444730802709553313 67066858687189281721315703433221935791217373628625879706295*SQRT6);\n \+ aJF := evalf(2221314725065122569207198530438886036644700558168552 4612182990111386604825048562717402625070789213456609329214962601238518 9758754696493471090956554801744421740703964948927939506595180878227078 2749625536820940384127886135783592516656619/49167694638860241597151726 0557953231533049954252928710576195425720452216346830687783026528220108 3258652222960953457160560299487962274325668053129688177829107491537014 6779936480111715335182884854994627452782452671271561320305633544921875 0-95946321023014796843691882151994649170915916787995293626103258152154 0178131028894851466470089504218037800930027166053218141569217798200939 7439326179530955284657245390839705577045636649902442545588031010462850 748042850045952/139570052953621521527981161433826136096209053850977062 2458030384509331712027338186460229922340067722085799500135373874078476 2073351942341745301819844999803196122504266380654286265572815685799328 124653072079965629943270947265625*SQRT6);\n aJH := evalf(-3388864 5341487890137299702915124815043135334697813581748763731684525607076654 6796564635138005688304031987746359115254664975571809645095063770496022 1919107162789431063507048527537981048743308139578379650582819186151745 9371384923651/31716214905835224231076720493971701366917276941082968289 6740033604098192739349851821764857950316538311441763257755842200838699 5018719542317273874236512603552685573534417079510863633572259676043467 924469406839177775987129211425781250+180863491806594503767247340835410 0526955943850596025181095707367483684248930017238419931149929042835906 4743689116704415553056284560365817009507428965392827270661480217400824 082647399380190174487324584978323513569536188764672/202983775397345435 0788910111614188887482705724229309970539136215066228433531839051659295 0908820258451932272848496373900853676768119805070830552795113680662737 187670620269308869527254862461926678194716604203770737766317626953125* SQRT6);\n aJI := evalf(533778013310333700623987816141481349887256 6133769231577040977887360741185975406942708599140904571624271773372300 0994293289208688151677406366889714485062698131562230866023895783536332 94233651736662751558158797043061380544633958234018254544715889539/7987 3312955658140244249709791713213174543159030618542895884585380730261286 6314320458998526916695092108735449274259457413012358450671464713010346 1483414984679700585731149811556385317045125323556694736816938867429479 5803206776494615352210998535156250+11795128106217938342154799091179267 0469521160132337815596228207889637835471175178850364250334867717273619 4942757891699423112254094226711756437756027766274271872307070617315960 9542953124406399773964899279046108831522303527909100101289344512/12468 0293394198072576389790894381601052945418974624066959429596691871627374 2539427057948920065085021828269969598844031083726608313243261991040540 3291184366329288719190087510722162446119220017259230808689855793060651 052207887062574103759765625*SQRT6);\n aK1 := evalf(18065596758808 7790642935383851091944153932397617932040759061578942971011488496692221 4946386141629657237728966174307137943638510220532889625296895331911566 2657444740081263297679926786351876458749827459294523079651670565299420 5993152581409182209578119630586303026057481153385346870875649261254639 09408630206386406633020779815703/1353796255210760012415768273641139814 5835364279966706565438982337482703019075362626189027336353625934518052 5102400507938953273878996688578830489892822522244351348819230587573651 1338925025558622795820390786804808614717639616854749845241527686337183 8892367199029417249122801527652862697749147101720658929215940206599531 25000000000+4242604887715171815942359378708231661138175031341176557197 4456649661054714337212298368024765824567397781419091717795955291729189 9913702974220986815828123738755257446544610695550038709288289851108244 8159252402313525295455541383973848351570180267942057427640140805416269 87846084030478078485896106903872099349489610832/1611662208584238110018 7717543346902554565909857103222101713074211288932165565907888320270638 5162213506167291788572033260658659379757962593845821300979193148037320 0228935566352989689196458998360471214750936672391207997190020065178387 1922948646871236776627617892163391812858961491503211606127502048403487 16183357928515625*SQRT6);\n aK8 := evalf(-27149876476166249070983 5530618709609419838960342984394677845551940836135802870831419747722334 9597756063228773361908027712753140598915161162915836426357353544055788 2348258563418303600503001479672722721469230855295968436422740739298212 2676988939316882909897807865667547171985510157052633088951024584943817 /203157711089482072251981255003250597814525268108079672480605465002733 9309115262311960819188737059593930605115229623412152107472998576619555 6775958432026463437444240650325260409123404469871214806360812736087752 3903985896715065562171188682994924171305069526106397589010037386347452 6198308028187519000000000+54263948408238908109892531875888695901103514 1470721913972410259627244806614610360246805586266403980305644661943954 4964030242146265285589821310527823915790335049140616283381133774070177 1795913632354448359009501726095624973991030104250860157090857977988229 433104072997652203830339748665778049776/130229301980437225802552086540 5452550093110693000510721029522211555986736612347635872319992780166406 3657725097625791103539150467939593715100497409251299015024002718365593 1156468739772242764197476671876513383028143580703022477924468710694227 5154944263266192989728134679726835560593716864120633025*SQRT6);\n \+ aK9 := evalf(14311427730454402425741631483851931644638581518225119525 1968065800722522688065394811683574810361695149893526758277154652186942 9312248540806363441154433507273165959411707525618040793408386703500601 1767797165661459032098454500663484045131596688809421755626915102307996 811079462207472459797145527183003496904229/593309014357620119289341495 8476710718085614491190149597628498741674569603421811400882131341693564 1599323810597417971230215584811344992022584407816478163536230809764233 6698095879660409247494030609263797670095458604573641229027664219942916 6905536182551249714601950924373909028145729973862317384842037675000000 0-28490197977932340708554491555419641505931728295700372734737983751301 8781823389673552839406083727752775616313065341600004836971879759696738 4372536865166701802618359696354392831852738319924518392250558905866899 0632354434880007290994113915230140852400942358233826525711369321171148 4574764906403392/49732107388674036201653087220364546131931957747128268 8127383571107917754538672048086950766690435466587235736476793750515214 3302348261290566249052101672537215179232716714009906703719241645032569 7962615373726578872312356244208151165534481411769693318172100104793345 607948877445668770369588833160175*SQRT6);\n aKA := evalf(-2619611 3968966332952439241356550473522607285147510511135590159319892434832343 4704977632687960054755382038484379592607689125954868515683663267688552 5980148885191332709024167113626316319789760623347239360701313673841012 0642759727361849827876250846252631049404065063024305779121094109029852 8736870400000000000000000/40118938322369531260674461997142938547089984 0936877671379896138517839436604615231709047606758914493726958397251984 5267675311188395002004120301896435292381293726129300014633388403384691 7973365625905420282381106884999485310164764742875950275191896208007881 8846432648193593764209417058678976803487729384707753800498251*SQRT6+68 2589336222094404769804816177099026173050133883858000764384279769662609 7218420517399793825739747824858209394541434999986335035402703747651483 5457362340300049834813456341317464007823882635008575195276401909060754 0157824723512451015801233723112688278865149413760761321894013868100084 19847105917002444533432320000000000/5228643918785389052730473097141928 9766443132126673357085697035309974988287770067984023447378022527518157 7351161407833957169485310394332622707345731131034207752335394343335720 0343439791895300208644787846230897687312147206923330696417961348008223 8443665129490514357849573655869750168947547219688836502524126256027793 4839);\n aKB := evalf(1852921118089170004852276774459735202404738 0194061935441376743956042203007461470426197386660243631785128189583360 6040292682564696920873939913192123189604395169222509000905307420626502 3974870198461224356978946629907340489720267488698889157893837254659143 601322801175773808185821419235733143552/137296243473878991735086631927 7185597172834719505490638123342735544789344470393665639111028434408663 5311171884840178813078764766836249409762204598116005774925788152016822 5355152325327768468063668782379174651700008088096384312307643623655284 2460992174613354732347432606589648175009724740788671875*SQRT6+44723275 6527839746980273224447738895196247764747028293529432242095071561501756 0487374357193259241378089295976833517026689639698801399997386480807863 9264937896643093453369922850658712005143165857081104741131416825863372 1845681368184587115198950719387417617078043373189524978297248573089957 285076506205526784/204812089526650820395868426020255816225744257880310 1652712284557808836867643743683947843870833443884911440762293717336683 0068440289374011210189078456686499450639952781870693611011028743984527 8529037604955098221253963879924716555878937939436098812694981500394704 4482711963830867905040114826570860015869140625);\n aKC := evalf(1 0506810707089318514673030779410529206637210175217606890065452488102554 7951507832059016714148887343541167451486305531430519166696731294410976 2154994988871414499950379675173715162720861660655245987362996508175318 7953302747715626587088846680192862890713117757804529799313435312986516 1407019784119704768840050130580988868094410816695854565082621057032454 71340823974240231869239886971711244392210264038648687/3324779352233413 0960180814989231339995464036777344280265533758844126335111671857111206 2645698784543703271642786217460011581544571438675879906450906259445051 3680138052015776922357900586747807870633805635569966942105502732576156 9985558382470399158261714762954483897217645142090817223422469673817691 8184613110158287714262236926944645292379346274432252929392269716644095 99721438772717758867338053710937500000-5018453579684846546151157737425 9859532993793222101074102330313653910808128240479422137879123727879379 3509309900203538323199562975064711759900558950142590210310848244841078 9651708681523410279141933419319788212215737930206783313118123439551694 8088788517220751882874244468736644840984600972736579154838774554907646 3744599637179162901240290327908787439335301518092189236527738107079400 782778818816/101442543165016417880032997678814157118120630899601160230 4615067707897333689454068991800597097740789331111038249328634665389914 7869982482987229623379388102253791420448560722875233869067117644151438 0034647443690071868885814680610177142280611439079364499658137250639870 7708378056970966360630780097385765409947088597144964872393423784263552 5439341945169470397245359087597169012592743786076991015625*SQRT6);\n \+ aKD := evalf(17060444770442586703255494732403691672227107077319860 4161378537875815782227913304038839500082192165254490215684390249628249 8179737233382314748632086747196271514794014679356351884329211767081020 0897146721153210799059524727055678894955662925822912266248877778387826 11619542625922276161295013332977321648601432064/1676340338249839226316 0567185062048706652483892082794060323481941798814195475686637062330756 6984850152573798851304100659237051296011437762753799354599895172232035 0600281393566089410645212640818429730286953905991798517071309697354525 2234691410025547963795534856869169451522030467683646703814982753104207 155324375-124578168103185562204077106812745641650182042132163533668672 2973054233609431801642040173033697793120269627938939155208549953324008 5793462415403179527486157967651827268730352397734794776266922381736630 0973602951776175385029981440400992626102028203721693461957598177433129 93307030286251525602938399490048000/6877293695383955800271001922076737 9309343523659826847426968131043277186442977175946922382591583528267722 5841441247592448152005316970001077964305044512390450182707938576981975 8315530852154423870480944766990383556096480292552604531385532181091292 53249796739891563863362113724326879329095541127497563249524321*SQRT6); \n aKE := evalf(8531524064222325552820312829939986418279640546856 7335107353637931104470098591600920056183594272964857457278705668605530 5670543161642420218769181601092745028306953059629894919773079057803074 4597425063625904519128260889057133733063344112415427448141781407445370 82085947057796714636599352575644020568234206464/3886056574231853148776 5160906711292476853633078098994332793273860801921842770235110369978517 0282290261016100799761445663503079159859637758730539894618483796134096 7285934727574491888863369427176915402665789467942328685497597062178053 4748667461287884271774296251897704820646476719889476465943289825929808 25625-1095373026466712216895979217525469341313840533077222936182258245 3251784415852075316717242495915012064588069761282701970969739673175104 6601383514296087852040513744137743744024820784923804556500070172313272 7150481542214116786613556859815681232313102799581090542849336050348586 88992352673380184393908224000/2072563506256988346014141915024602265432 1937641652796977489746059094358316144125392197321875748388813920858709 3206104353868308885258473471322954610463191357938184921916518803972900 7393797027827688214755087716235908632265385099828295186595597935353827 827962466767877590434478758394105411516975457382923107*SQRT6);\n \+ aKF := evalf(560018165117032485807638857754452618594558805046012328005 3536338074561364737780764790020963646304906391980941574589540116565963 5912008043135804405094749033491306584238194308163104829560293375548361 3412562272250534072746598730600316164072668409310828998726905765604879 19307621718504684397806867872133104411/1038087172845932305578071414317 6111527593372096033426622851672825805319162689387349227842766001784238 4497824121046633873663953047323290062477234489669591660338577663055134 0023576777028771624408524187917862358273091909269850672881229696343484 536151424181244069758256832418301390481297720123825757263183593750-265 3577349909117272127462186231979302290177624381335349098723128021111755 5199702900818266751418833572251274949932065258247030445108946374321195 7061339649262077539855093133370034999964838931215644185243794895671679 4299144436856264194616208427823181662525797300091115969468850684213358 108558623698944/170352766825999147582042488503402855837429695934907513 8108992463721898529261848180386107530831062028873810447114611427670382 8192381257856406520531638086836568381975475714297822798392267021528755 2687248059463921738159469924212985637693758930795676131147691334524431 890448131510232828343815191919140625*SQRT6);\n aKH := evalf(-2916 3093825537096491269353202009681684725240629411232196600191307627236182 7165136571622432400883269076649373154968775119258240639323209392014802 6472532916966310270515627641772934043467983283642385310008775372831930 7592701146872157684211224177959582075662942626192184346118212750650465 1278644030381722/46874146275846228153786211828432317865477465670088993 4443931341650438565155629925839002167981990317941735469385007899061836 0717479653658310615579835606366537422208821115986314547996868464307358 1946259492818935932558834351286326251271006454639521375699766276397770 90751102034867431661220109954833984375+1058758407478500923884833446549 7137399730029446782400276288215742402272214937903047066187818021935077 8047226753480281555868253232808750543588760988175460510503481311492581 9351452452457088183555999741694995914289514536291231779256235078180301 348383858787133122164191144323544689313256643886283776/599989072330831 7203684635114039336686781115605771391160882321173125613633992063050739 2277501694760696542140081281011079915017183739566826375879421895761491 6790042729102846248262143599163431341848912121508082379936753079696464 9760162688826193858736089570083378914676161410604630312526361740742187 5*SQRT6);\n aKI := evalf(-184621060990196855075156181661547245849 2444444267115651005516006235967530632770917618519362382897665387164158 8709599047829847272304867287364223987428200532802226192293323425316512 2760364639171250833979354940683780372320511267205241311147012576646675 0954467866701317448978721983543198057126952793629364437126524639431198 4280739383198933/14089937733026253360245421909932921501118170946238036 0218589279204198959629423593488515904510643045386219743019773005280970 6076649860306014953428045607282274161517150710279376074624631726551596 6554392216012320294781656574455294967106447830015472787070682053389426 4965087777957890090902366552281689562676393713186917878723824218750000 000+327653829470375072359419413625891662999198519274679571766077034751 2297621748888032221691503830934455620183030692615203283091562780398954 8045035804561671018928993569239056600301406811142533040239386356338165 6431397521855266176909743553794872846036239384384289269567498094476019 2174823837262855207971789322403546719478940631344/18786583644035004480 3272292132438953348242279283173813624785705605598612839231457984687872 6808573938482929906930306737079608102199813741353271237394143043032215 3562009470391680994995089687354622072522954683093726375542099273726622 8085971066872970494275760711859019953450370610520121203155403042252750 235191617582557171631765625*SQRT6);\n aKJ := evalf(67008584722151 6856512672645887761764829466525233611414637178836167899692855180102552 5305466258624193165366299501310020738762027115460241748875041122974018 8395625935876249089572706574409770918245941057289519452361146099267078 082557314952641494391829076002065266453443723953327354085439650000/104 6565622261363471747393953709342614474843680883623768763437261241788714 8409879703921321356449438959933385863781497970744006797046263474478712 5522944957654959124958218139063349982144890039706397239055948735025073 3024414517777784114471792507262948173417733694301650530982423157115702 374385113*SQRT6-136568976418497265725923281586994776481923934136060623 1866266558341083958803809181811518063426163891777246049921977228782512 8204836649124315208539045763492379764025177498081983618057963568050608 6273954651291790076787084630426603247193231175177807204691286691705882 88708161040856098487181993835187/5023514986854544664387490977804844549 4792496682413940900644988539605858312367422578822342510957307007680252 1461511902595712326258220646774978202510135796743803799799447067504079 9142954721905907067474685539281203518517189685333363749464604034862151 2324051217326479225487156311541553713970485424000);\n aL1 := eval f(25711452144848685434607859731637718106441723838038536210021326350921 3940495753541356893220184983172087654063000460915690172737865896429137 4252982720477399248822509977943873704120634174822852732142976844424692 7325561085574382784404751692281943540773897648907655002253676518421227 8927372534780020434537317299368202350937943/16551933034682069166315471 0299291374238822816329315938558527962435108629569913827071254410753895 6083859897037353215181651803796298355058839724691534749692076663710122 2966150715226889702486812638658232135741272065091233422343283690607924 2180521444399190803339657432598960665625077059358130550646322305829437 44000000000000000+1794301137423767612573631451668431951237934899906305 6544420842780347857457289614881050460022669649220378678877840540469694 9046068463995587805927877265848815561354102492833404791525004572405629 1668205898704440412721678869420952574529696832861911650227048676252476 31832962716489209562211123669821857049411173/7115686697535963320587452 8584748137664394460994052715673904036828103186484387679950174285932128 2402741393496616118913355488921840375741318491394063997476390981039124 3342499583427516698671537051086461890804712598584692849047072947669692 9665564854526281137550568900231738607475839034888122321804236800000000 0000*SQRT6);\n aL8 := evalf(1447573279370938110820815176333644575 7470029398694010540128092022755421415157995648181979454314866777272113 0368667605003845569515373978024774064071581259319514584747043023033394 8128155913065713355857904684221934064858241979335370186532285646077786 02914530457788069287489649622692229397227107/3660108194192557018804837 8032113830697767315391369763901845881988914481372743826284545448330303 4962869909920149951354039284479788756534857370370493862049831901076093 7587536997500292152730131535067052018210172065563131402192418001540549 832062282768474548539248265242881282183069512990720000000*SQRT6-299427 0442762627231467330396657531521628503270310679882989148633716643826828 4347503837816367634359548731038084732812580510370371606596140019921082 0230237597054998585932361539963674362154892137661201090245015972313779 1214690834423765518795921704342347506755730671335932302727424942096924 2177127539/18843145700220462374549904832731618041765868876135147085291 2713939287618529846726524883027563987853546576741898109024817179108292 6811022378534842015076170698722935859907135185162743510927194669242354 5264729797284514588546282974265365615775414936810587424733480503522413 14223815627013462425600000000);\n aL9 := evalf(776196474941913376 9147394990621040868131996995983046669356628889816158825422501203482182 8181382510414044743407539080139544940450265672893895288015575745586617 2131765331535432578686549067741611466392662744362921815380093535162938 5091148564394984601228873262214256365203378406363248955571208179761230 551/550301937486912045101092580359562329721649440745113989093001684664 5966805847280373412918381174375865306927197009370500456245588580038978 6688979902196930342645917805693060735840443856555198923017966822019266 7254373189105116408679622599374508398962183162942453255170885382379624 62425479170437939200000000-8889857892595718364809163117341716059537373 8759749320299851361581742197260887371802599984924231837205509669576998 9831138234635971126658426791493916919284088182122064080614195973406466 4036837138886761974887579225172806613503412749348277767205370105151040 161579912690899209220415008157817671/163020792063389696719417680914761 2093714066945315510938971837902915938466001373179881758713721971787057 7545566984100833516259580801720820771202071912773275399875295574366084 9182334478374544592720403115717732243826346756950850513840260510168048 5289436964054379191147858014165473512284160000000*SQRT6);\n aLA : = evalf(-2234945872051433611127408739764937825216482364387345708492381 4588879356661712697696941560707204402182367091181229187298284073612126 0806431608363036445497232741130051731364598986110215624301866861620509 9219940231733519411633723525577593819465264459757994292167089602918008 1292045682053288375000000000/35753451532820308452048611286870339107865 5808142931656180810491216267548802946474695857107931162575859257056099 8070732572212306466496888562941779081977299215587888426372584527643875 2327760279189541736376684150890763106648615714233682488479488482184854 931472246034591491740099648000454376413862351945479*SQRT6+459915916660 8908507269963111893400551051018653394595593566233103088648435973696989 8626461348885451600432551068326390210825678645548334479677371049219569 2208606039739681461834422662511197801488707549842214815282087076500735 7423900826101101354266099015766006121882383292216099811783520708508798 4209619140625/36789561900688659735603840698093988521184554404511509631 3719220072065867699980827017732911845140128574847388166920103062923600 3789063922533572684983373634465959614682700981770300148086073440810784 8318281889852973818186470253529621337204455976831165136037831186571400 8258662506736618192680669040733446162604);\n aLB := evalf(5827787 2355754452702340119960049167965425170479150824534459515208793848115449 6558038433202879634327523396527294219712181296443344683055644252107433 8627926658493281093375020687056479500175869589573687550425917902356375 4795293546837217550833827570143160952315516869179191221620199688782609 9721/45200873936362057186687087814802073824944456277680804130667848660 5548796974067860668310531869139027829571307758078195826063624502296473 7868838138860500333209499851562473980161224460119494315761799096313248 6107222398440816354088890123330756797974746571207089345558200695751165 8446865507812500000*SQRT6+28396034400295483885846603472605555036456811 8476156127962427739302208044133333966524550618761811442034956348899751 2311241489391805687954775585015819878203677752397319061134955224126727 3943046039912231213330550578711878062393821640396602257583080193453011 7329511392196013546601332909863050002026587239/12301869850520297483928 7578196765324121968832205336076522025616914566160584462308959487394353 5048778140961271194385617760214760445450083058382987872273770686297479 6012429184406788490661215729777312420526137418941647959652578928832335 96569877013680702681972143628711990135563729628989166062500000000000); \n aLC := evalf(9256288885614387827205667130141552645643073053245 3703575467367171572686684133959966521766458827389791645151441015569847 9966304043051474402473851229052634922272833555709636264745123940914087 8014720907751116032700433241437735096756265627820605417995359993126524 8121816479825332366525731878223666220324797965875825364117081072588802 7324532604408324448072719582391440865186729077363553665187361794871/22 0269764872560155656079645275695882115020190273424691505553107554421830 3777106789590986615596182260770530287155551389916781992043335717233446 7827659321447060388514803339496498745455098663478824943885695536350466 9333198932970632733457273389853424448158948516738736003064710845410491 2078942990629903259447605978013330729221528037500774632215789707484561 6686140191169919598866579734528000000000000000-43566912704570424972966 6083647967393623316395104573288891473634068474512898220356640631956875 2743533774320960459467278581843706405216026004601240564139324960258595 4456537162994184347630893018846071499398537194159105124099176098874774 5053894411356991190702835943951179505359786575620416695023275890998910 5805675537083166339400799875801557987968056797834377327834102999223866 33179034744129/9882780670962494923604019073954800238549535852004378430 7581464165554536994219754034625888958145635518512262881264904270182342 5859225146495856230699719040335219476197409137439022405730229651123186 9693925731028332056890638554839720803670754415179368004847448665627707 5232518281896172888171181273482743698388163574179107723024850971396562 02973611983058489890156369613984041708640000000000000*SQRT6);\n a LD := evalf(1065023161614411396345428434921547655073430818302319903414 0929497336417998280655943128329836575695939582300342610379994096488546 0052404589413440921077575318822465362848500088107725806664591391439632 7517846889673372171902041842943234368399780853437759324970412910472207 24263773541005636500585281801/3706998294037268192386635071622967719626 2333725738946443952928584796104631319795496767871758760694223356629988 4285109846410040174574172108175309004926175489423405162646695606171752 5523126893692880290401477276069569066546134045001553810342357590939044 623710836739837660441196249000877084911662391500-332049001651316336314 5969505844233330259189039269114121137100187032838424983947984942757681 5208590949482266667325676035625198201210044312087045792127756995827193 2090165224081672460168331856013498781827230090086301665070816128763035 761490920056548530795228137594016884774117791608678284932608/149560166 7892063339137672505294508076989523671658958542885214580198341992710392 7820853655998854471969400722177208307506108692010593648515620725772812 3204829106513823386869848370754680994387706482703558520022434824863493 3484243121743649779051719091037127293971088452215138060295731815171835 5775*SQRT6);\n aLE := evalf(3839008026269537195706470921673516523 1001767316189283452534335314468346955252806509340390546392349013878901 4190223848860185908489052614425621742350368831447759791386421770471132 4278560995514015575956772294201147452301798328287702091353170474774154 50804169725989066466681745600582858984709519337/3591725860710669399162 4562149965504940855550811627528782084125391554552001453333448748074462 2680554846372715953391375832690522211767650329775994785645114526057037 9037520897594897451222218583816570714184763725251293328706562264573844 4041768679649084165528186989695903647032472058772709860918272000-20342 3546411650983754092150770747157531760458505559416432755672526906928638 1397945329670092891617939361592072160001957174493574513740881828059799 3981243950776063300973742275640842095870768103452015338092965339213460 0391255051678059853388861412172090466299240788041089177023413678906321 581/364813768378108144583974170335709866199989534034226248879432073597 9303658613015951702173363550660264375487348555362823426060991692398204 3144174342288068604220882272297468210090043607761501317808528588322278 8317310411017312835979223496051653192767311468142392721354949942811838 1078695543200*SQRT6);\n aLF := evalf(-194922387757999088899350835 9749362929609500293259075545470707603793198854802859239154684416602373 3194659288040914333775456423423111832438829320076889300546288520098072 2748008767149279528417809892806448033028174134912132227404634299693983 26680697312912833020523713609420200289594044675649483617479031/4814197 7340082743549081622811379309872183945603758758903172970534022063301559 3811160494044654632901400916052003001210596358083479743959248402583703 1236057660172434490735024464314950545622174933327991548249874716941067 9537509776841196601901354667221122386152429448487243987692427124725760 00000000000000-4372473861777308879797843409761900944919483505919644307 8859822999247177996198509281382061733972588535933234389142753273392507 3064470722722709015988638200740633821403802808948644641599202469490002 2459048325365709081065039385447200709394007345884653819289639177003309 414257470876588947206553/274428098801474209772349311366416293360503367 3564525172423888978614302378246451456156320027335842995501456860369383 1230365463672077019537315363403530434944743671850435504318526880710341 8215288114182456080189608514301822583249519577859828644845268704592885 777555282890139256520946000000000000*SQRT6);\n aLH := evalf(47849 4701539040219114559776797149173296754112712345510745142708154882211613 2218926926890074425178802920029389928026757326018097363625088303189401 2980062316409904647685627792918207629809103583782273173831553093672698 3036320553404701734459502360476225409590513731944630001707157178612050 61494117/8587928694096255832126000351346984946588937534612838603943814 2282771132826332869688078086520940913255426018273221886716163415281788 0314953569774348819093308738579609508136354853212461452908735522569896 5343182082126246426989254643834266785262575328399327308399859747610556 196634624000000000000000+151192151745239876252371990136272260948543884 9486330964239651140279180388913663523531867129613388809973708067721230 7668268465471453212751575929411862974468047607209950632646160741221536 3777428823598442935726170420542707468558421049059175235487559456585735 6348489634644906655243429712840667/83866491153283748360605472181122899 8690325931114535019916388108230186844007156930547637563681063606010019 7096994324874625333523612112450718454827625186458093150191499102894090 3634029438760618703375966458429512520764125263566939881194011574829837 191399680746092380347759337857760000000000000*SQRT6);\n aLI := ev alf(382147340238992387520778217670681519823718601009147042358215793965 8890525856471971902177955492212902466244347430734747118666238757259374 3888313672036505348512845019874744494883490685733667390863584600794096 4883403510842935831240334730149545773086698233729875307766720352304447 352280995959571383716398303546796596299038877091292271712637930232919/ 8413770171468077535364116227384419885418721053938487458818046195361664 4974129865776064000610601782174207953731789808422493317738760499428836 8790872332005141452615995125118186018280703881839729790859690934671095 1966496659017364414600349174814745087011859187027615513368547807005319 362272524087204445796951159352514058170018155200512000000000000000+183 2445187395156688986517693170312762770931033697792416988015660820959377 9219167010284424062984891070926381230117652982647576942478983283394719 3165124938131263967053912629752923352055583118151483325592450253566549 3073684183599217024563416058846262256419701850863597383650542775327242 826149668089765688707356110761846565860149650750279615673/821657243307 4294468129019753305097544354219779236804159001998237657875485754869704 6937500596290802904499954816200984787591130604258300223473514733626172 3770949820307739373228533477249884609111123886416928389741402978189357 1644936133153491030024499035018737331655774773972467778632189719261803 9105915985851165551895099316583546880000000000000*SQRT6);\n aLJ : = evalf(16440832367227341708798532690981884445673065125135318370990586 8588890431893343512512920521320143106478222875282094041917488402298049 5355802120777312946737470293144612592207079027995971667234466330945620 7155404846575380603055923100193145956040162196525512671089011086023225 838766125799/239679856908252765217406736121894062952579254371954856072 5557559930111547476564347297094540164247976816412561839407125470830458 2498785671688853484115960631349800159640337075363044819107795174487181 1224985681197920995151530955253747508068844667003966171938942483419320 744088541073506304*SQRT6-148028942198789717926933157804430264364951341 4835716032320589107908874158995244061163406866494487113252867029683644 0553412802845111393303681535535933183326791630151480918553445455718755 1581582354189040477452071305755076391077607020567676175924732639581508 129428989744597790144806131627723/490864346948101663165248995577639040 9268823129537635452365941882736868449232003783264449618256379856520012 9266471057929642607784957513055618771935469487373004390726943410330343 5157895327645173497469388770675093342198070335396359674896524993878024 1227201309542060427688838933321185409105920);\n aLK := evalf(-467 8527139361743330805198938527208176797870233225135922547603190201283606 3506041403666962257019512454646952525108946676581999679387365026025695 8741812324264109447443406447297041821515115208817240788634449732668546 3240899027918043236388255220089355500263294471722501030167102184185374 59369/4341680549290783344438945374255841888912227105828172519439018606 1131358521722352310779622092464775142953671700095936461355188474225903 5364275642322993671074434766656588801811650366894336535447796755058653 5864249815353515983194485471875384897905965212710088874693429585766371 107645947904000-174227445323495365644419859821998205953915779031574991 5631380711817201974006848079967122534814630679890591614630445321797101 1945854000287204350678699570623547699791841759703608586978643457338594 4344404194924898064002555835720811793024996046429702656683336996973041 1041685588555159/29240844216667452481404535117563590307867908848519480 8690666662588438567630134377093073963446018151555453069100861641038221 9051335257511882244358317575909714673805607413805304757320139658778608 5449559445958137458346939089326471480818126245271457201055428939080640 0160679308398952448*SQRT6);\n aM1 := evalf(6725673802230822651323 4738081007026882097212803631688575117434358317000998232193028042384616 0925260642411/37308282434364191258140352761576451495725380576434086056 140524583892308007884242471075848266443023974400000);\n aM8 := ev alf(-22553598487711760273401856889983081401977354192153706316067385102 98855378897125/6322938924136902453910485088419682107862042747535148791 137444962250826995715801088);\n aM9 := evalf(-1502706955974881248 92440515191492126097781888158838335016480974104265948574834647675/6367 4951750963501702425903867324901861212307316357900481504197900530106341 74265032704);\n aMA := evalf(204693608956500139128131057786128511 5575792177893835004030610956608209186299835205078125000000/24111278296 9703416106540926494246574487431451260714001209386037189705775851562480 899911609473391);\n aMB := evalf(-4416562324658900236647478447460 03218158385096720438569512292184954756550655098657/1822001291013703373 66005188012855962466596007240017916114507235048378836249907200000);\n \+ aMC := evalf(-244821733157410479301167568020718125633909596111053 7914164459476993806099915118110794726663041517832337344963013238639424 9876247559390639192239494098944002883800666785495379326493/71364216525 6083117788076090644678999481087071684448407792547489746348188956674434 5155058163202462972757265927272882156872828779606813419681685418419807 01790225283611393576140800000);\n aMD := evalf(-12671356151586851 324805938427289130740588314571393874209217862186435551883536562500/670 2085977554280325068268539139373035193944755898922987664282182119136118 66851243007);\n aME := evalf(-19053705984758385635919096498869956 6718064077084051358076851720809750537016084296875/50910440296037809807 24581845742777286877744109966803181609499632016071764657521065984);\n \+ aMF := evalf(-216030383240087048889185535017990927204152335314416 660949022715478078589399524401/222818629229242204357707354917731887145 31075024815023580940580795542849244364800000);\n aMH := evalf(474 5621998266889341000299942193646867639301459975535073165275632864689052 19401/4304715563216235077360026430649407035848047170287034263524341215 4148821401600000);\n aMI := evalf(4481303055313480430731067907870 6310865652516886883903737655831497987195453976513831494750556620233965 363871988553749001354912440161174796784712541/910230707806505705586027 7243261335218496726640961113554115573637352669581557982756264539281030 672778686440752552343004829819746897059467650662400000);\n aMJ := evalf(846576866316095537738451728499686531956386189617851012875616445 803607630859375/177935857133170838349652786504271688283833164264957382 04950702206332616801517568);\n aMK := evalf(192917535741805855763 01967480572947742916873551648262555079215781656345703125/5667384423379 34787379602359435774908270415136782864704954551190557274358677504);\n \+ aML := evalf(5008625330425422069075699699200835325104755984954432 191699846241005638671875/181260158259689799377328794325354594481857066 886774698800745165271666219690176);\n aN1 := evalf(11044272451245 7475011689518308920056730278055846309407306640307947520493029846911480 828229981071807737/659707926276372980709143326223863436299156356643478 2449484724961786512797176033101559836852669644800000);\n aN8 := e valf(-3225597817492455405547718704460101729976248444353378332895594376 48764077125/1016418937136204741176454007269110421145518702985974278410 72610632890094452736);\n aN9 := evalf(-15022491706321206022337551 63283297105805145308077461866629990783957472207033575/7873703079366925 562681265811387714399979758640535709045770046630229367771365376);\n \+ aNA := evalf(126260982509616902626345124317614534462423369401255182 5536867071136085995378295898437500000000/10914570422496862457497737413 319803783381670633201045322235581930398203845132457983123570799207);\n aNB := evalf(778861998724960641175870439680056238323010571863410 08185208456780514632903621/2928885820173777285333159529527648573601401 865355226274988863732130575428400000);\n aNC := evalf(-3543258921 5507465315880864045937967261399517520050772164757320374167639283891935 0088827087706686928792604752864456954192009559010894844864216338290365 7317635963563584517337421/11471871226467385509710585304859166015320972 7315529900944018050692249901774156769951695250823084860030177242915266 23837565632683267125481741392455021551919210154379041177600000);\n \+ aND := evalf(-372074705908231612088603439904041890828195234125304548 34765889438139925740000000/2121584671590465440034273041829494471413087 92526081765991271990570406334873963673);\n aNE := evalf(-28801162 7696787270131694454364094842136371692637735759213282972929624776947656 25/8183905654584267265825266598737746410232999147966183098009097916692 5021937010048);\n aNF := evalf(-253750400590603029813425284205766 8970942507567352978955462460416688276889469/27552556835287349185574370 216758157143443181961280052504922172754855731200000);\n aNH := ev alf(568156922174197380183056102105775966155343133887334620836957603873 3020633857/56050983896044727569792010815747487445938114196445758639639 859575714611200000);\n aNI := evalf(-1021000702312224905689967726 9901011050200232079096536684949506464555680001138165261002824327628102 37570902132714324198032604717509409357918455163/1185196234123054304148 4735993829863565750946147084783273587986506969621850986956713886118855 508688513914636396552529954205494462105546181836800000);\n aNJ := evalf(324424008822063321596721713904694021904791499888280927798129616 74335658203125/6950619419264485873033311972823112823587232979099897736 3088680493486784380928);\n aNK := evalf(1088970878553275163098687 9344519278906642790214230186235782833297756423828125/24352042444208135 395217288882005953089744400408638717791015871469257882599424);\n \+ aNL := evalf(191142703970987920825375799727983372386625054966925031890 1937848300148437500/10384696566961394755992795508223440308856394457054 800452126025093689210503083);\n aO1 := evalf(10203156967062494130 8191879151681504510667796509185032406856359475388996019087846143176477 013121569543/955516255409471001102458407118313402060836521770746788516 5144000733629523001766465181352825157187500000);\n aO8 := evalf(2 2455166560798450102851630177816190335300625809490384410541913411111420 93/5888695757963603785178144544753881271800066109313768140168343635509 560812000);\n aO9 := evalf(11343079727161954117598893397002041492 8672443767560197149229862703216848562247/11860384000644740034346637105 07096757389834286949744457034472337002495421874200);\n aOA := eva lf(3670161835945529534014508525033042393592891238928768222396501046428 36351657789440000000000000000/2652240612666737577171950191436712319361 745963867854013303246409086763534367187289899027704207301);\n aOB := evalf(311827150827255922057933345835609284508248766380477564772627 9426582442363327668224/17375958356987985359764593888555141684207535480 500976191950534348333247780791015625);\n aOC := evalf(38683257384 8977092054262891370872246047736814238302856675240105425504237984235868 6083271015578797673914731672234479363956081628729904093605185625186233 15092215538010090162981/1661577646751150297438902991462217176987526639 5612815576431981514821485359144267498410907953983319394190949218517360 642721943509780833077807178298057538964558050120514667968750);\n \+ aOD := evalf(-40898392440781722328352148369666990327713643477774474671 10402053805894862792294400/6702085977554280325068268539139373035193944 75589892298766428218211913611866851243007);\n aOE := evalf(-45955 2573667314871220447673319039061526192846896539564588904802763541051863 0400/15536633391124819887465154558541190450676709319967050725126646826 2209221333542513);\n aOF := evalf(-459671564933021673417707834443 14802417855786218791001521918580597619367743064/4150320388921391300069 305206047964974219179716858085911896187960271322958984375);\n aOH := evalf(906558569895601286607641808694052130213817873906972859136519 94362268351747/9020427257974193360712434601933849817754799624109479685 248590758706894531250);\n aOI := evalf(-5258585680165066858486586 5304917779691237295787382826773606986778868589006898002075778700169220 4377111790112335378217935909517824063009863648219/57220992424468635699 7647056281697123542920731254737046456710640826546770292486842766270415 3634332237405094791178434647861987658921177630000000000);\n aOJ : = evalf(17502775622870021733819566153995887408044542332875240614995004 7868972875/35794587005642150606517681744808968779917772376193473602359 66440819059712);\n aOK := evalf(107059523602143095695613263396651 34800074748155274645534724248618944875/1393435045864570735657727559013 70733774629976703483874078841427627131744);\n aOL := evalf(-35031 7157914581912452504531162465548756110991909970161562903875248859381760 00/2803868073079576584118054787220328883391226503404796122074026775296 08683583241);\n aP1 := evalf(226754171021148681688130390405675916 1703834487542614922422809751399628129553915447742796974373121407879/16 1061505438567622243443194878872909252723719883661680895623168012366035 087305495643550704410880000000000);\n aP8 := evalf(14667815824384 764604720731977556493579653694501640465538480423897282357953/763535860 2285191865808698972874928043460927756805696202003651640090902528000); \n aP9 := evalf(4977635525247032866212634385755744119729567049171 201219997360100580197645187/236589635798285022917105342890255841345545 63222763548815414803576410359889920);\n aPA := evalf(140484304488 0607882637732112806657258074128319106170572463258665936110798551557500 000000000000/109145704224968624574977374133198037833816706332010453222 35581930398203845132457983123570799207);\n aPB := evalf(122265795 6790103213431252472696539777172663249999529533116463694558147400072664 /550046165146818150040031462125835444261080578679992915224771584309377 8974609375);\n aPC := evalf(4730907654590941123878534886499854759 5889181878018596957350689318059450914233945405078126004626998626915516 007688042888491860577798576868969784183008361647856043251491372696693/ 2800749811149264040456685865444132327959221858289304222266065690728757 3675331242663988098345479702155804990946109921478431720418132630570657 6964233924607402591659644560000000000);\n aPD := evalf(1153740045 748269159478796480967395212179751854806602513177292442252497320755200/ 1631988208915742646180210032176534208779298404046782815317476850541587 1913381821);\n aPE := evalf(7623956445453559631109402846102213430 9167759815278768007650265780350846830800/63936762926439588014259895302 6386438299453058434858054531960774741601733882891);\n aPF := eval f(13894574309133430688354891646743497141234547141255257157294322614999 72115829/5174383420088519603661052099000555352960333150781259860449626 7944065000000000);\n aPH := evalf(-421142478049871693473884211579 82253968628636767026653878664393051311769046581/1368432224024529481684 375264056335142723098491124164029288082509172720000000000);\n aPI := evalf(239714805499988003758280844908209154470678284682564307391939 1446167548003463445393877597738118390702600421694255228628200952383747 860161187031279/289354549346448804723748437349361903460716458669062091 6403317018303130334713612478976103236208175906717440526502082508350950 79641248686080000000000);\n aPJ := evalf(-83380447351344787545521 767124148918942563153960911840766655937288341980125/543017142130037958 830727497876805689342752576492179510649130316355365502976);\n aPK := evalf(-37188604359440314722233083387157545823708645525560940622604 6222491463375/17295484690488732525012279035515591683057102562953634794 755590532143382528);\n aPL := evalf(13642777828763738182781161173 561838093435874808627613343934647836906752000/944063324269217705090254 137111221846259672223368618222920547735789928227553);\n aQ1 := ev alf(466546532723241178503333942513305323245827985724807536181361864458 447933925932870653921126053707/327953766482175132604488104668263814516 49918202437105973651376149306965417003080293870930937500000);\n a Q8 := evalf(4723491269910257197408253207852997193458084742530955434102 2327772536183/24233315876393431214724874669769058731687514853143078766 124870928022884000);\n aQ9 := evalf(10367164276990912692184594376 34102746967174686856076182315999827058358706693/4880816461170674911253 760125543608055102198711727343444586305913590516139400);\n aQA := evalf(126107176528519559643266532933651605948968657536009282253251770 1973500323840000000000000000/98240957898261588276307267446622896340069 04260306971487160739811339517412360448229634177137);\n aQB := eva lf(1593585599185410121376197356584779060871239468221379968652311452262 0899139559424/71506001469086359505204090076358607753940475228399078979 220305960219126669921875);\n aQC := evalf(10657723851600378741841 9600981060033971317382474418007429340663573433616773277359424055465412 3695611605944223229904518029927614330580356951033977912552385182206284 514559/621107102700166492076592399507853909647260785717514909291648827 3463307559114285281145171516601762566202268932421307610541597095747262 930706219153299391393782210410156250);\n aQD := evalf(19893647189 6683904802218217623982545469417973212849595160688218787298733037977600 /275806007306760507204455495437834281283701430283906295788653587741528 2353361527749);\n aQE := evalf(7802974809496486749416392541153380 9400547896738615365523971243063975724441600/63936762926439588014259895 3026386438299453058434858054531960774741601733882891);\n aQF := e valf(47089048172413134997528432836773327900280211171315979008137365046 2846095736/17079507773339058848021832123654176848638599657852205398749 744692474580078125);\n aQH := evalf(-8017167945338692474386475317 007433013318192540440906434781184327080792127/334089898443488642989349 429701253696953881467559610358712910768840996093750);\n aQI := ev alf(379440546633543696948683315777242581367120938370727641143789276793 2878706597258190100164705439305095301720467892671832287937845207567497 514493/706432005240353527157588958372465584620889791672514872168778568 9216626793734405466250252041523866959759376285405474873903688467803923 0000000000);\n aQJ := evalf(-233588086623589610967302059384622582 0564112415275796854849718353742375/13257254446534129854265808053632951 3999695453245161013342072831141446656);\n aQK := evalf(-152960233 160113384609842819678797535294565646547801727288480414604125/422253044 2013850714114325936405173750746362930408602244813376594761568);\n \+ aQL := evalf(10373426455351662576622889624826508120400531851220415524 405102038745088000/944063324269217705090254137111221846259672223368618 222920547735789928227553);\n aR1 := evalf(64250875282710999263292 9585199870482143280706874928077245198394371913249038165677118360380512 78775223279472574793320679/3419591173062699310255866115599253791530194 6385082933308977514635102079195031329287723999854767036942379866035200 00000000);\n aR8 := evalf(222348235080065777289456859144064691738 8668944690361370691106216132811392499592441721202793/12472604243778136 6075433873943998883328379229876365972326898281264432363526172519186946 4576000);\n aR9 := evalf(1241307821368539744905540773139905143998 5697734732346757085870701455988697074352942605382553463367/61546429065 7408094587098411600275532965555190451700059880001606150278993422881289 38831260065792000);\n aRA := evalf(273497285700751964846476316265 3058717810972032092016948043929880669723752733216405366579286625000000 0000000000/20572271987618184593178936958872085377956018323554433050227 6475856876964169921820909017383269517865682906837457);\n aRB := e valf(29384223718432424813936072759758106384165271793214191366327380829 559952125029694605974522191858559/132082165119229462793488932841512959 794481500793005301870120878550487236504362054850146000566406250);\n \+ aRC := evalf(147930072861410678874559763587715639493268296275126547 7848899939674020272272430795006240725669690120898844713247377212533356 8710755531174588849827082196300693860215971616328390339253755605669/95 1167368070302556967244447666164744339010758665620815041118168791095440 2299641768304299822582318038425720818514026053472491635692846468054683 0137357279759429781449684222880875237920000000000);\n aRD := eval f(10950630983299038232297656995581558091938197315611766049380531473647 78610638106378476889915392000/1732838453094668456641896441272868125519 6156605742588455678952837710486932298180475780086042156833);\n aR E := evalf(22643686664198250931888753811048017750114343290720364765591 553524006236766954692145692037375/217136719151367883667281882064278858 619682539197025973487121443934414211393865389232784019462);\n aRF := evalf(865194495976831180299612546078734600556176564030906784364409 666041223394460306006987488382548603/376897956217255918165595209029446 51386750181809191520769371089115416275557505901418168070000000000);\n \+ aRH := evalf(-815851446446078225835079578775135286223813340179334 426018934783202022915053187926766080958082611/328600583770705457378572 4336239416712924921315711790909908897153498076298264835684832528000000 0000);\n aRI := evalf(2283261768824642109503807855489304349836877 5632741065851780405581732011329314047391687503657558982561919003969962 4473549925170585049834800992406072675877904145000964496039330011822341 9/32777075344216878077721966728442567149478736482438099214464000420337 0668847550879413781663578240365122060887801283078740424501477275391874 63608846309822169873912593294551531520000000000);\n aRJ := evalf( -126961466422949927922079550931908696947438487034244039280864970063025 266043269361725023193588625/865617486939533081827894424639575717584475 101332940162751438476547165779526334018474129934516224);\n aRK := evalf(-14537494230026498493249257398574811122781042572001577452138355 467562423750388023689292255442875/569180051412472342869836345281024159 57487167003291680791272800068628581684629417909392434266112);\n a RL := evalf(-101612202727188278351596381542424836532107508186863979877 043290571591433212732952554674846224000/738509738649613913688624208590 810739737759432541424875041852805939342283743895483742216401172409);\n aRM := evalf(-11069967147037708058951931197098322757226586427213 9133271958560164457877727876019027397503452032/12595280657650768284021 4512692347692727211447597814324199099975141370284333864572439438899856 09375);\n aS1 := evalf(-55857142711467061786411703861346764471553 8638426732772427573818795154103361/91810938973590519734861607217003019 049024250494194606074681612156503013195776);\n aS8 := evalf(13169 10833601519088693218702357900833196116789140625/\n 442043 9963472550565232420607397542739995601455914418176);\n aS9 := eval f(142698794677197642653418320637229646162284884395963359375/\n \+ 4451589755480155662936573014022421188335006960404360593408);\n \+ aSA := evalf(14250556328848031496382863781561058392986449154815673 8281250000000000000/\n 7594853109003067338050023476367198 583770760143535377363246317959607241167);\n aSB := evalf(13465592 48108390398828213036554868662602157290783629/\n 407610317 51487067180878484586742664098219374493043608);\n aSC := evalf(419 9535858350819722634616299226732711002654446947997562693858624122353784 3119621182250648663810293093189394413098325108660699412264907818890048 63621/1596529656739107451224393062057215709364668088284569354309579066 2768118979317824285244747452570003942128847988697383841623783304466617 7390009746522112);\n aSD := evalf(2145085799580162030574792125556 9329406610394890000000000000/\n 1919183285269672643438871 312728531675659960737496307019545469);\n aSE := evalf(67828052597 198445423908718515586964773592276112060546875/\n 35592079 49700514920649101368549673912791588501866176994968);\n aSF := eva lf(21625978600958682217468848064156580694685242478697/\n \+ 4984802845986379257213925850261011466012609267945472);\n aSH := e valf(-214265192783445276830405408385463656194344690061465/\n \+ 44694338815224270061176709946379818561173725526032384);\n aSI := evalf(200416671522329247230264763042929152445692539014815196410266 2690681300628243916915601168387937773922757512940859652389544027408955 020413100471639723616603/451660176696275450155433571971167355768373780 2547896687257470883395176871708411541729723678187401842120066927384845 93870567225762491431984825846552273616896);\n aSJ := evalf(-71691 2933396659551324066315399423700530347849090576171875/\n 2 7729700973178370024811788881106275420485659818842646380544);\n aS K := evalf(-189617065355963384637110846764300902215783937713623046875/ \n 558862635291651381182419477632177315530989304733814279 3728);\n aSL := evalf(-157349418783621049529989882790700369975091 7399108886718750/\n 4861400983361925835202735266243902681 1788089947060710129507);\n aSM := evalf(1264675919386056109072877 709034273986243620181732850/\n 17495269254381150072614134 320113792634146195935038149);\n aSN := evalf(41956998473885686826 0381599620842860505940333791825/\n 3196126989683661069213 878876717295545568748121591532);\n end if;\n \n xstart := evalf( x0);\n xend:= evalf(xn);\n \n sgn := sign(xend-xstart);\n h := sgn*hstrt;\n\n eps := evalf(t);\n safety := 0.9;\n pgrow := -0. 11111111111111111111;\n pshrink := -0.125;\n errcontrol := 0.00000 01983592905; #(5/safety)^(1/pgrow)\n tiny := Float(1,-3*saveDigits); \n \n xk := evalf(x0);\n yk := evalf(y0);\n uk := evalf(u0);\n \+ \n if errcntl=2 then\n if stdstep then\n if maxtemp<> 0 then\n maxval := abs(evalf(maxtemp))\n else \n \+ maxval := max(abs(yk),tiny)\n end if;\n elif d rvstep then\n if maxtemp2<>0 then\n maxval := abs(e valf(maxtemp2))\n else\n maxval := max(abs(uk),tiny )\n end if;\n else\n if maxtemp<>0 then\n \+ maxval := abs(evalf(maxtemp))\n else \n maxva l := max(abs(yk),tiny)\n end if;\n if maxtemp2<>0 then \n maxval2 := abs(evalf(maxtemp2))\n else\n \+ maxval2 := max(abs(uk),tiny)\n end if;\n end if;\n \+ end if;\n f1 := uk;\n g1 := gn(xk,yk,uk);\n\n finished := false; \n soln := NULL;\n soln2 := NULL;\n\n for k from 1 to maxstps do \n if stdstep then \n if errcntl=0 then scale := max(abs( yk),abs(uk*h),tiny)\n elif errcntl=1 then scale := max(abs(yk) ,tiny)\n elif errcntl=2 then scale := abs(maxval)\n el se scale := max(abs(uk*h),tiny) end if;\n elif drvstep then\n \+ if errcntl=0 then scale := max(abs(uk),abs(g1*h),tiny)\n \+ elif errcntl=1 then scale := max(abs(uk),tiny)\n elif errcntl= 2 then scale := abs(maxval)\n else scale := max(abs(g1*h),tiny ) end if;\n else\n if errcntl=0 then\n scale : = max(abs(yk),abs(uk*h),tiny);\n scale2 := max(abs(uk),abs( g1*h),tiny);\n elif errcntl=1 then\n scale := max(a bs(yk),tiny);\n scale2 := max(abs(uk),tiny);\n elif errcntl=2 then\n scale := abs(maxval);\n scale2 := abs(maxval2);\n else\n scale := max(abs(uk*h),t iny);\n scale2 := max(abs(g1*h),tiny);\n end if;\n \+ end if;\n \n if abs(h)>=hmx then\n h := sgn*hmx ;\n maxstepsize := true;\n else\n maxstepsize := \+ false;\n end if;\n if abs(h)<=hmn then\n h := sgn*hm n;\n minstepsize := true;\n else\n minstepsize := false;\n end if;\n if (xk+h-xend)*(xk+h-xstart)>0 then \n \+ h := xend-xk;\n laststep := true;\n else\n \+ laststep := false;\n end if;\n\n # Do step.\n do\n \+ ff := a21*f1;\n gg := a21*g1;\n f2 := uk + gg*h; \n g2 := gn(xk + c2*h,yk + ff*h,f2);\n\n ff := a31*f1 \+ + a32*f2;\n gg := a31*g1 + a32*g2;\n f3 := uk + gg*h; \n g3 := gn(xk + c3*h,yk + ff*h,f3); \n\n ff := a41*f1 + a43*f3;\n gg := a41*g1 + a43*g3;\n f4 := uk + gg*h; \n g4 := gn(xk + c4*h,yk + ff*h,f4);\n\n ff := a51*f1 \+ + a53*f3 + a54*f4;\n gg := a51*g1 + a53*g3 + a54*g4;\n \+ f5 := uk + gg*h;\n g5 := gn(xk + c5*h,yk + ff*h,f5);\n\n \+ ff := a61*f1 + a64*f4 + a65*f5;\n gg := a61*g1 + a64*g4 + \+ a65*g5;\n f6 := uk + gg*h;\n g6 := gn(xk + c6*h,yk + f f*h,f6);\n\n ff := a71*f1 + a74*f4 + a75*f5 + a76*f6;\n \+ gg := a71*g1 + a74*g4 + a75*g5 + a76*g6;\n f7 := uk + gg*h; \n g7 := gn(xk + c7*h,yk + ff*h,f7);\n\n ff := a81*f1 \+ + a86*f6 + a87*f7;\n gg := a81*g1 + a86*g6 + a87*g7;\n \+ f8 := uk + gg*h;\n g8 := gn(xk + c8*h,yk + ff*h,f8);\n\n \+ ff := a91*f1 + a96*f6 + a97*f7 + a98*f8;\n gg := a91*g1 + \+ a96*g6 + a97*g7 + a98*g8;\n f9 := uk + gg*h;\n g9 := g n(xk + c9*h,yk + ff*h,f9);\n\n ff := aA1*f1 + aA6*f6 + aA7*f7 \+ + aA8*f8 + aA9*f9;\n gg := aA1*g1 + aA6*g6 + aA7*g7 + aA8*g8 + aA9*g9;\n fA := uk + gg*h;\n gA := gn(xk + cA*h,yk + \+ ff*h,fA);\n\n ff := aB1*f1 + aB6*f6 + aB7*f7 + aB8*f8 + aB9*f9 + aBA*fA;\n gg := aB1*g1 + aB6*g6 + aB7*g7 + aB8*g8 + aB9*g9 \+ + aBA*gA;\n fB := uk + gg*h;\n gB := gn(xk + cB*h,yk + ff*h,fB);\n\n ff := aC1*f1 + aC6*f6 + aC7*f7 + aC8*f8 + aC9*f 9 + aCA*fA + aCB*fB;\n gg := aC1*g1 + aC6*g6 + aC7*g7 + aC8*g8 + aC9*g9 + aCA*gA + aCB*gB;\n fC := uk + gg*h;\n gC : = gn(xk + cC*h,yk + ff*h,fC);\n\n ff := aD1*f1 + aD6*f6 + aD7* f7 + aD8*f8 + aD9*f9 + aDA*fA + aDB*fB + aDC*fC;\n gg := aD1*g 1 + aD6*g6 + aD7*g7 + aD8*g8 + aD9*g9 + aDA*gA + aDB*gB + aDC*gC;\n \+ fD := uk + gg*h;\n gD := gn(xk + cD*h,yk + ff*h,fD);\n\n ff := aE1*f1 + aE6*f6 + aE7*f7 + aE8*f8 + aE9*f9 + aEA*fA + a EB*fB + aEC*fC\n \+ + aED*fD;\n gg := aE1*g1 + aE6*g6 + aE7* g7 + aE8*g8 + aE9*g9 + aEA*gA + aEB*gB + aEC*gC\n \+ + aED*gD;\n \+ fE := uk + gg*h;\n gE := gn(xk + cE*h,yk + ff*h,fE);\n\n \+ ff := aF1*f1 + aF6*f6 + aF7*f7 + aF8*f8 + aF9*f9 + aFA*fA + aF B*fB + aFC*fC\n \+ + aFD*fD + aFE*fE;\n gg := aF1*g1 + aF6*g6 + aF7*g 7 + aF8*g8 + aF9*g9 + aFA*gA + aFB*gB + aFC*gC\n \+ + aFD*gD + aFE*gE;\n \+ fF := uk + gg*h;\n gF := gn(xk + h,yk + ff*h,fF);\n\n \+ ff := b1*f1 + b8*f8 + b9*f9 + bA*fA + bB*fB + bC*fC + bD*fD + bE*f E + bF*fF;\n yout := yk + ff*h;\n gg := b1*g1 + b8*g8 \+ + b9*g9 + bA*gA + bB*gB + bC*gC + bD*gD + bE*gE + bF*gF;\n uou t := uk + gg*h;\n \n # error estimate\n ff := aG1*f1 + aG6*f6 + aG7*f7 + aG8*f8 + aG9*f9 + aGA*fA + aGB*fB + aGC*fC \n \+ \+ + aGD*fD;\n gg := aG1*g1 + aG6*g6 + aG7*g7 + aG8*g8 + aG9*g9 + aGA*gA + aGB*gB + aGC*gC \n \+ + aGD*gD;\n fG := uk + gg*h; \n gG := gn(xk + h,yk + ff*h,fG);\n\n if stdstep then \n ff := e1*f1 + e8*f8 + e9*f9 + eA*fA + eB*fB + eC*fC + eD *fD + eE*fE\n \+ + eF*fF + eG*fG;\n errst := ff*h; \n elif dr vstep then\n gg := e1*g1 + e8*g8 + e9*g9 + eA*gA + eB*gB + \+ eC*gC + eD*gD + eE*gE\n \+ + eF*gF + eG*gG;\n errst := gg*h;\n \+ else\n ff := e1*f1 + e8*f8 + e9*f9 + eA*fA + eB*fB + eC*f C + eD*fD + eE*fE\n \+ + eF*fF + eG*fG;\n errst := ff*h;\n \+ gg := e1*g1 + e8*g8 + e9*g9 + eA*gA + eB*gB + eC*gC + eD*gD + eE*gE\n + eF*g F + eG*gG;\n errst2 := gg*h;\n end if;\n \n if stdstep or drvstep then \n err := abs(errst/sca le)/eps;\n else \n err := max(abs(errst/scale),abs( errst2/scale2))/eps;\n end if; \n if err<=1.0 or mins tepsize then break end if;\n \n # Shrink, but not too \+ much.\n if prntflg then\n print(`reducing step-size and repeating step`);\n end if;\n htemp := safety*h*e rr^pshrink;\n if h>=0 then\n h := max(htemp,0.1*h) \n else\n h := min(htemp,0.1*h)\n end if;\n if maxstepsize then maxstepsize := false end if;\n if abs(h)<=hmn then\n h := sgn*hmn;\n minstepsize \+ := true;\n end if;\n end do;\n\n if member(outpt,\{' points','derivpts','rkstep','derivstep','step_pair','endpt'\}) then\n \+ soln := soln,[xk,yk,uk];\n else # 10 or 12 extra stages n eeded for interpolation\n ff := aH1*f1 + aH8*f8 + aH9*f9 + aHA *fA + aHB*fB + aHC*fC + aHD*fD + aHE*fE\n \+ + aHF*fF;\n gg \+ := aH1*g1 + aH8*g8 + aH9*g9 + aHA*gA + aHB*gB + aHC*gC + aHD*gD + aHE* gE\n \+ + aHF*gF;\n fH := uk + gg*h;\n gH := gn(xk + h,yk + ff*h,fH);\n\n ff := aI1*f1 + aI8*f8 + aI9*f9 + aIA*fA \+ + aIB*fB + aIC*fC + aID*fD + aIE*fE\n \+ + aIF*fF + aIH*fH;\n gg := a I1*g1 + aI8*g8 + aI9*g9 + aIA*gA + aIB*gB + aIC*gC + aID*gD + aIE*gE\n + a IF*gF + aIH*gH;\n fI := uk + gg*h;\n gI := gn(xk + cI* h,yk + ff*h,fI);\n\n ff := aJ1*f1 + aJ8*f8 + aJ9*f9 + aJA*fA + aJB*fB + aJC*fC + aJD*fD + aJE*fE\n \+ + aJF*fF + aJH*fH + aJI*fI;\n gg := aJ 1*g1 + aJ8*g8 + aJ9*g9 + aJA*gA + aJB*gB + aJC*gC + aJD*gD + aJE*gE\n \+ + aJF*gF + aJ H*gH + aJI*gI;\n fJ := uk + gg*h;\n gJ := gn(xk + cJ*h ,yk + ff*h,fJ);\n\n ff := aK1*f1 + aK8*f8 + aK9*f9 + aKA*fA + \+ aKB*fB + aKC*fC + aKD*fD + aKE*fE\n \+ + aKF*fF + aKH*fH + aKI*fI + aKJ*fJ;\n gg := aK1 *g1 + aK8*g8 + aK9*g9 + aKA*gA + aKB*gB + aKC*gC + aKD*gD + aKE*gE\n \+ + aKF*gF + aKH*gH + aKI *gI + aKJ*gJ;\n fK := uk + gg*h;\n gK := gn(xk + cK*h, yk + ff*h,fK);\n\n ff := aL1*f1 + aL8*f8 + aL9*f9 + aLA*fA + a LB*fB + aLC*fC + aLD*fD + aLE*fE\n \+ + aLF*fF + aLH*fH + aLI*fI + aLJ*fJ + aLK*fK;\n gg := aL1* g1 + aL8*g8 + aL9*g9 + aLA*gA + aLB*gB + aLC*gC + aLD*gD + aLE*gE\n \+ + aLF*gF + aLH*gH + aLI*gI + aLJ* gJ + aLK*gK;\n fL := uk + gg*h;\n gL := gn(xk + cL*h,y k + ff*h,fL);\n\n ff := aM1*f1 + aM8*f8 + aM9*f9 + aMA*fA + aM B*fB + aMC*fC + aMD*fD + aME*fE\n + aMF* fF + aMH*fH + aMI*fI + aMJ*fJ + aMK*fK + aML*fL;\n gg := aM1*g 1 + aM8*g8 + aM9*g9 + aMA*gA + aMB*gB + aMC*gC + aMD*gD + aME*gE\n \+ + aMF*gF + aMH*gH + aMI*gI + aMJ*gJ + aMK*g K + aML*gL;\n fM := uk + gg*h;\n gM := gn(xk + cM*h,yk + ff*h,fM);\n\n ff := aN1*f1 + aN8*f8 + aN9*f9 + aNA*fA + aNB *fB + aNC*fC + aND*fD + aNE*fE\n + aNF*f F + aNH*fH + aNI*fI + aNJ*fJ + aNK*fK + aNL*fL;\n gg := aN1*g1 + aN8*g8 + aN9*g9 + aNA*gA + aNB*gB + aNC*gC + aND*gD + aNE*gE\n \+ + aNF*gF + aNH*gH + aNI*gI + aNJ*gJ + aNK*gK + aNL*gL;\n fN := uk + gg*h;\n gN := gn(xk + cN*h,yk \+ + ff*h,fN);\n\n ff := aO1*f1 + aO8*f8 + aO9*f9 + aOA*fA + aOB* fB + aOC*fC + aOD*fD + aOE*fE\n + aOF*fF + aOH*fH + aOI*fI + aOJ*fJ + aOK*fK + aOL*fL;\n gg := aO1*g1 \+ + aO8*g8 + aO9*g9 + aOA*gA + aOB*gB + aOC*gC + aOD*gD + aOE*gE\n \+ + aOF*gF + aOH*gH + aOI*gI + aOJ*gJ + aOK*gK \+ + aOL*gL;\n fO := uk + gg*h;\n gO := gn(xk + cO*h,yk + ff*h,fO);\n\n ff := aP1*f1 + aP8*f8 + aP9*f9 + aPA*fA + aPB*f B + aPC*fC + aPD*fD + aPE*fE\n + aPF*fF \+ + aPH*fH + aPI*fI + aPJ*fJ + aPK*fK + aPL*fL;\n gg := aP1*g1 + aP8*g8 + aP9*g9 + aPA*gA + aPB*gB + aPC*gC + aPD*gD + aPE*gE\n \+ + aPF*gF + aPH*gH + aPI*gI + aPJ*gJ + aPK*gK + aPL*gL;\n fP := uk + gg*h;\n gP := gn(xk + cP*h,yk + \+ ff*h,fP);\n\n ff := aQ1*f1 + aQ8*f8 + aQ9*f9 + aQA*fA + aQB*fB + aQC*fC + aQD*fD + aQE*fE\n + aQF*fF + aQH*fH + aQI*fI + aQJ*fJ + aQK*fK + aQL*fL;\n gg := aQ1*g1 + \+ aQ8*g8 + aQ9*g9 + aQA*gA + aQB*gB + aQC*gC + aQD*gD + aQE*gE\n \+ + aQF*gF + aQH*gH + aQI*gI + aQJ*gJ + aQK*gK + \+ aQL*gL;\n fQ := uk + gg*h;\n gQ := gn(xk + cQ*h,yk + f f*h,fQ);\n\n if saveDigits<=27 then ## use the first interpola tion procedure\n if outpt='rkinterp' then\n s oln := soln,[xk,yk,f1,f8,f9,fA,fB,fC,fD,fE,fF,\n \+ fH,fI,fJ,fK,fL,fM,fN,fO,fP,fQ];\n elif outpt='derivint erp' then\n soln := soln,[xk,uk,g1,g8,g9,gA,gB,gC,gD,gE, gF,\n gH,gI,gJ,gK,gL,gM,gN,gO,gP,gQ];\n \+ else\n soln := soln,[xk,yk,f1,f8,f9,fA,fB,fC,fD,f E,fF,\n fH,fI,fJ,fK,fL,fM,fN,fO,fP,fQ];\n \+ soln2 := soln2,[xk,uk,g1,g8,g9,gA,gB,gC,gD,gE,gF,\n \+ gH,gI,gJ,gK,gL,gM,gN,gO,gP,gQ];\n end i f;\n else ## 2 more stages are needed for the 2nd interpolatio n procedure\n ff := aR1*f1 + aR8*f8 + aR9*f9 + aRA*fA + aRB *fB + aRC*fC + aRD*fD + aRE*fE\n + aRF*fF + aR H*fH + aRI*fI + aRJ*fJ + aRK*fK + aRL*fL + aRM*fM;\n gg := \+ aR1*g1 + aR8*g8 + aR9*g9 + aRA*gA + aRB*gB + aRC*gC + aRD*gD + aRE*gE \n + aRF*gF + aRH*gH + aRI*gI + aRJ*gJ + aRK*g K + aRL*gL + aRM*gM;\n fR := uk + gg*h;\n gR := \+ gn(xk + cR*h,yk + ff*h,fR);\n\n ff := aS1*f1 + aS8*f8 + aS9 *f9 + aSA*fA + aSB*fB + aSC*fC + aSD*fD + aSE*fE\n + aS F*fF + aSH*fH + aSI*fI + aSJ*fJ + aSK*fK + aSL*fL + aSM*fM + aSN*fN;\n gg := aS1*g1 + aS8*g8 + aS9*g9 + aSA*gA + aSB*gB + aSC*gC \+ + aSD*gD + aSE*gE\n + aSF*gF + aSH*gH + aSI*gI + aSJ*gJ + aSK*gK + aSL*gL + aSM*gM + aSN*gN;\n fS := uk + gg*h;\n \+ gS := gn(xk + cS*h,yk + ff*h,fS);\n if outpt='rk interp' then\n soln := soln,[xk,yk,f1,f8,f9,fA,fB,fC,fD, fE,fF,fH,fM,fN,fO,fP,fQ,fR,fS];\n elif outpt='derivinterp' \+ then\n soln := soln,[xk,uk,g1,g8,g9,gA,gB,gC,gD,gE,gF,gH ,gM,gN,gO,gP,gQ,gR,gS];\n else\n soln := soln ,[xk,yk,f1,f8,f9,fA,fB,fC,fD,fE,fF,fH,fM,fN,fO,fP,fQ,fR,fS];\n \+ soln2 := soln2,[xk,uk,g1,g8,g9,gA,gB,gC,gD,gE,gF,gH,gM,gN,gO,gP ,gQ,gR,gS];\n end if;\n end if;\n end if;\n \+ \n if err>errcontrol then\n hnext := safety*h*err^pgro w;\n inc := false;\n else\n if abs(h) `,evalf(abs(errst),5),`abs err bound -> `,evalf(abs(scale)*eps,5) );\n if stdstep then\n print(`step`,k,` `,h,` ` ,[xk,yk]);\n elif drvstep then\n print(`step`,k,` \+ `,h,` `,[xk,uk]);\n else\n print(`step`,k,` `, h,` `,[xk,yk,uk]);\n end if;\n if laststep then\n \+ print(`last step`);\n elif inc then\n prin t(`increasing step-size by a factor of 5`)\n elif maxstepsize \+ then\n print(`used maximum step-size`)\n elif not m instepsize then\n print(`using error to adjust step-size`) \n else \n print(`used minimum step-size`)\n \+ end if;\n print(``);\n end if;\n \n if (xk-xe nd)*(xend-xstart) >= 0 then\n finished := true;\n brea k;\n end if;\n \n if errcntl=2 then\n if stdste p then \n if abs(yk)>maxval then maxval := abs(yk) end if ;\n elif drvstep then\n if abs(uk)>maxval then maxv al := abs(uk) end if;\n else\n if abs(yk)>maxval th en maxval := abs(yk) end if;\n if abs(uk)>maxval2 then maxv al2 := abs(uk) end if;\n end if;\n end if;\n h := hn ext;\n end do;\n\n if not finished and k>=maxstps then\n erro r \"reached maximum number of steps before reaching end of interval\" \n end if;\n \n if member(outpt,\{'rkstep','derivstep','step_pai r'\}) then\n soln := [soln,[xk,yk,uk]];\n eqns := \{SOLN_=so ln,GXYU_=gxyu,X_=x,Y_=y,U_=u,c3_=c3,c4_=c4,c6_=c6,\n c7_=c7,cC _=cC,a31_=a31,a32_=a32,a41_=a41,a43_=a43,a51_=a51,\n a53_=a53, a54_=a54,a61_=a61,a64_=a64,a65_=a65,a71_=a71,a74_=a74,\n a75_= a75,a76_=a76,a81_=a81,a86_=a86,a87_=a87,a96_=a96,a97_=a97,\n a A1_=aA1,aA6_=aA6,aA7_=aA7,aA8_=aA8,aA9_=aA9,aB1_=aB1,aB6_=aB6,\n \+ aB7_=aB7,aB8_=aB8,aB9_=aB9,aBA_=aBA,aC1_=aC1,aC6_=aC6,aC7_=aC7,\n \+ aC8_=aC8,aC9_=aC9,aCA_=aCA,aCB_=aCB,aD1_=aD1,aD6_=aD6,aD7_=aD7, \n aD8_=aD8,aD9_=aD9,aDA_=aDA,aDB_=aDB,aDC_=aDC,aE1_=aE1,aE6_= aE6,\n aE7_=aE7,aE8_=aE8,aE9_=aE9,aEA_=aEA,aEB_=aEB,aEC_=aEC,a ED_=aED,\n aF1_=aF1,aF6_=aF6,aF7_=aF7,aF8_=aF8,aF9_=aF9,aFA_=a FA,aFB_=aFB,\n aFC_=aFC,aFD_=aFD,aFE_=aFE,b1_=b1,b8_=b8,b9_=b9 ,bA_=bA,bB_=bB,\n bC_=bC,bD_=bD,bE_=bE,bF_=bF\};\n if out pt='rkstep' then\n return subs(`union`(eqns,\{DERIV_=false\}), eval(rk89step));\n elif outpt='derivstep' then\n return s ubs(`union`(eqns,\{DERIV_=true\}),eval(rk89step));\n else # outpt ='step_pair' then\n return subs(`union`(eqns,\{DERIV_=false\}) ,eval(rk89step)),\n subs(`union`(eqns,\{DERIV_=true\}), eval(rk89step));\n end if;\n elif member(outpt,\{'rkinterp','de rivinterp','interp_pair'\}) then\n Digits := Digits+3;\n if \+ saveDigits<=27 then # use the first interpolation procedure\n \+ d12 := evalf(-28.32690107549798096690906467156557560246);\n d8 2 := evalf(-.1352877251970476367599723128957768440819e-1);\n d 92 := evalf(-1.455702711708433893360889952963677129273);\n dA2 := evalf(-.8520791942350588325316811661249319358110);\n dB2 : = evalf(-1.500195363988222220268242336906764975318);\n dC2 := \+ evalf(-1.194515595127319561381305768593044511548);\n dD2 := ev alf(-.5075697553248201181074098453886273625940);\n dE2 := eval f(-.8654131818113355423508731936492858938138);\n dF2 := evalf( -.1970131900633844007334057633668811920145);\n dH2 := evalf(-. 4541849829711136730965001627668703429520);\n dI2 := evalf(-.16 42163800536330788290065204813343796028);\n dJ2 := evalf(-.6748 844193125564745929227754653506820255);\n dK2 := evalf(1.778873 344420799933681245486496441730823);\n dL2 := evalf(.4134694024 574781779455481610866056129998e-1);\n dM2 := evalf(31.31247017 428404500084714290987346601228);\n dN2 := evalf(-2.73095872962 0607116715051590434641454760);\n dO2 := evalf(3.15981330884341 3258842148106168068986690);\n dP2 := evalf(.912802095332092040 9453895709005641365133);\n dQ2 := evalf(1.73185748910807259044 1870089449361718970);\n d13 := evalf(257.522084478351382265599 1530565674934511);\n d83 := evalf(.491657339269641537427224467 9017599493338);\n d93 := evalf(52.9025764136205190092071742311 6225499945);\n dA3 := evalf(30.9659275351442879216271273849302 9801871);\n dB3 := evalf(54.5195109141503170557750879382091494 5821);\n dC3 := evalf(43.4106167696289060095796916957067310330 3);\n dD3 := evalf(18.44590076692263941141687424224329073812); \n dE3 := evalf(31.45050607647596882232093808213253876385);\n \+ dF3 := evalf(7.159776002331775566615895079547204997740);\n \+ dH3 := evalf(16.70127113669635686632210799083287987501);\n \+ dI3 := evalf(6.019579370077226689069574595580813231251);\n d J3 := evalf(24.73882523992791864853900738883021962605);\n dK3 \+ := evalf(-65.20707180707839471257988195976321618762);\n dL3 := evalf(-1.515629491027822593270509776882653001566);\n dM3 := e valf(-355.3157275297828193986043583116718624296);\n dN3 := eva lf(87.05655731583556409257744115400905155577);\n dO3 := evalf( -113.1719939045261456697649954642660064729);\n dP3 := evalf(-3 2.82005802633989134102763080315296130729);\n dQ3 := evalf(-63. 35430859967743018082992099191698629861);\n d14 := evalf(-1150. 934922587486676595644173070427468166);\n d84 := evalf(-4.43646 4950699828531781508575523348010080);\n d94 := evalf(-477.36585 48642740885503090276141520646170);\n dA4 := evalf(-279.4207290 379426863235594737603647308773);\n dB4 := evalf(-491.956246720 9968998612925445316059331330);\n dC4 := evalf(-391.71525451610 95434284638812068789918804);\n dD4 := evalf(-166.4463960979508 832639844199618192084686);\n dE4 := evalf(-283.793318528161236 2330622863936780662583);\n dF4 := evalf(-64.606165213342112614 63809724329632268974);\n dH4 := evalf(-156.7717275533304690372 380410971656210197);\n dI4 := evalf(-55.9104056745873237770136 6184031559718280);\n dJ4 := evalf(-229.77647939200528187529707 71400909901114);\n dK4 := evalf(605.64926773927173737354606951 65065607758);\n dL4 := evalf(14.077305819234795790796475545132 13783817);\n dM4 := evalf(1749.5147152304403918334471096268751 35263);\n dN4 := evalf(-458.0573888328072551306550581455948332 526);\n dO4 := evalf(972.1689485848533047356437130956188610315 );\n dP4 := evalf(285.2155813990437864609136220241493488672); \n dQ4 := evalf(584.5655351968502690285922607726311318915);\n \+ d15 := evalf(2904.420880778592699327677577124945314980);\n \+ d85 := evalf(17.31944616187202911483010888269379627330);\n \+ d95 := evalf(1863.581097723678565157175620323654474102);\n d A5 := evalf(1090.826215660802050077745313656207403448);\n dB5 \+ := evalf(1920.540300388688941881662910323116196240);\n dC5 := \+ evalf(1529.211058075771098268564306266884477941);\n dD5 := eva lf(649.7874835236435459733721670731086552039);\n dE5 := evalf( 1107.896299411122562578451965902514345412);\n dF5 := evalf(252 .2149983312684580977777634191985258330);\n dH5 := evalf(651.54 66733893466243333417542222885186689);\n dI5 := evalf(228.26886 56052759709055637645192351601670);\n dJ5 := evalf(938.12262065 96337368237001113946310937453);\n dK5 := evalf(-2472.721663050 785177698018480246106083819);\n dL5 := evalf(-57.4742857141502 0809167337188498904022101);\n dM5 := evalf(-4695.1476224134401 14700018050785654357371);\n dN5 := evalf(1030.5282204796892426 04149818460454461893);\n dO5 := evalf(-3550.940444875616705777 455788680906685775);\n dP5 := evalf(-1042.59133956344395176618 6011126489506480);\n dQ5 := evalf(-2365.3888045719493671106614 78844786750241);\n d16 := evalf(-4344.528637462060406744624584 680228201053);\n d86 := evalf(-34.6410268681887209841089545449 9673069594);\n d96 := evalf(-3727.3918735006936021192159813426 24059544);\n dA6 := evalf(-2181.786870784446576299842227492434 297046);\n dB6 := evalf(-3841.31729879824014602765920840944228 3399);\n dC6 := evalf(-3058.6105845897488644319334366811710416 96);\n dD6 := evalf(-1299.655050454701135142040066484500460116 );\n dE6 := evalf(-2215.929142096727917414601771920948508172); \n dF6 := evalf(-504.4610810354733798936380034445962688417);\n dH6 := evalf(-1412.320009571548049765391447883774876836);\n \+ dI6 := evalf(-482.2012255868892821374987074119699671610);\n \+ dJ6 := evalf(-1981.715185876861586680601839010188195151);\n \+ dK6 := evalf(5223.443036336624954800506019083865201996);\n \+ dL6 := evalf(121.4102104446333031674235730516112272387);\n dM6 := evalf(7343.556109316445935223022259185806343012);\n dN6 := evalf(-1166.915434857878624822018690873833960735);\n dO6 := e valf(6713.264174671284729472235882859087918016);\n dP6 := eval f(1892.181696336440909747003099385300652954);\n dQ6 := evalf(4 957.618194378028460052984086615037507229);\n d17 := evalf(3822 .157475253294982131000232331973581223);\n d87 := evalf(37.3828 1301815147188288272397739113810538);\n d97 := evalf(4022.40943 9034606738749309726708665413881);\n dA7 := evalf(2354.47208151 0133899345761960831165410270);\n dB7 := evalf(4145.35189360204 1132240186825905030942458);\n dC7 := evalf(3300.69509815994745 4006902079837487651010);\n dD7 := evalf(1402.52082953869624014 3275819971514339950);\n dE7 := evalf(2391.31666320624071206220 4317538870339080);\n dF7 := evalf(544.388431065862863584023255 2836960844226);\n dH7 := evalf(1667.13851561629096503162480989 1759454368);\n dI7 := evalf(550.037169861310936495296803049177 7978723);\n dJ7 := evalf(2260.50236803986982884201936214648504 3259);\n dK7 := evalf(-5958.2756579299893127610659695191720449 23);\n dL7 := evalf(-138.4901675933193250049116011300621399397 );\n dM7 := evalf(-6685.313457191056010094751616991673574687); \n dN7 := evalf(648.4882950191960598212061502167065649832);\n \+ dO7 := evalf(-6928.875337321575454509723879737483510177);\n \+ dP7 := evalf(-1796.360453156949035787162250294206098163);\n \+ dQ7 := evalf(-5639.545999732754146178078750017326392993);\n \+ d18 := evalf(-1828.450847963912086611128480846949392101);\n \+ d88 := evalf(-20.77503017271466649882774316118528416602);\n d9 8 := evalf(-2235.403671264127820837729037807288709372);\n dA8 \+ := evalf(-1308.468373164874203463640310982951825568);\n dB8 := evalf(-2303.727400725200622735225098094654082708);\n dC8 := e valf(-1834.319964682933276992160596708277754909);\n dD8 := eva lf(-779.4333866041422479301856382011190453387);\n dE8 := evalf (-1328.944288020880399801387165802578257268);\n dF8 := evalf(- 302.5370529387022446453538858257877493512);\n dH8 := evalf(-10 17.673390248052278400509234341149434655);\n dI8 := evalf(-321. 9620585702092198978986346679238877457);\n dJ8 := evalf(-1323.1 76024632043052129631852045198788472);\n dK8 := evalf(3487.6528 37788410553784668028541744220262);\n dL8 := evalf(81.064665977 61229475532476786812136393672);\n dM8 := evalf(3285.6825738930 41315538969260935086785998);\n dN8 := evalf(-131.2788560071460 746781394967167667482200);\n dO8 := evalf(3717.788457472750001 241039636185655260178);\n dP8 := evalf(850.9940020538469208530 391946403353379361);\n dQ8 := evalf(3312.967807809277108448776 287030887991565);\n d19 := evalf(367.1554574315021425912203561 515068047982);\n d89 := evalf(4.674158442717667575904712851691 441884529);\n d99 := evalf(502.9417938773550941496020410671302 902552);\n dA9 := evalf(294.3913170095037265437261593264381545 568);\n dB9 := evalf(518.3138984780918128529461223609665108621 );\n dC9 := evalf(412.7022718276975364384031516482215784580); \n dD9 := evalf(175.3641325304376264979817562401261871246);\n \+ dE9 := evalf(298.9981777216614016801117759308073585656);\n \+ dF9 := evalf(68.06758442573064372308655760592131398740);\n \+ dH9 := evalf(251.8328522135679646449465513799759499414);\n d I9 := evalf(75.91229137507532480130986827669701519861);\n dJ9 \+ := evalf(311.9787603807909928458652100409969677860);\n dK9 := \+ evalf(-822.3196224208751607207370309035710798363);\n dL9 := ev alf(-19.11344638322878584148388848903955641263);\n dM9 := eval f(-674.2890614799327434029117465686419357976);\n dN9 := evalf( -7.090434387268304770405112504539894769146);\n dO9 := evalf(-8 13.3936179360131427508167163638739057876);\n dP9 := evalf(-157 .5322311379308302075254133968373379435);\n dQ9 := evalf(-788.5 942819688829666512243546539758628716);\n eqns := \n \{ d12_=d12,d82_=d82,d92_=d92,dA2_=dA2,dB2_=dB2,dC2_=dC2,dD2_=dD2,\n \+ dE2_=dE2,dF2_=dF2,dH2_=dH2,dI2_=dI2,dJ2_=dJ2,dK2_=dK2,dL2_=dL2,\n \+ dM2_=dM2,dN2_=dN2,dO2_=dO2,dP2_=dP2,dQ2_=dQ2,\n d13_=d 13,d83_=d83,d93_=d93,dA3_=dA3,dB3_=dB3,dC3_=dC3,dD3_=dD3,\n dE 3_=dE3,dF3_=dF3,dH3_=dH3,dI3_=dI3,dJ3_=dJ3,dK3_=dK3,dL3_=dL3,\n \+ dM3_=dM3,dN3_=dN3,dO3_=dO3,dP3_=dP3,dQ3_=dQ3,\n d14_=d14,d84 _=d84,d94_=d94,dA4_=dA4,dB4_=dB4,dC4_=dC4,dD4_=dD4,\n dE4_=dE4 ,dF4_=dF4,dH4_=dH4,dI4_=dI4,dJ4_=dJ4,dK4_=dK4,dL4_=dL4,\n dM4_ =dM4,dN4_=dN4,dO4_=dO4,dP4_=dP4,dQ4_=dQ4,\n d15_=d15,d85_=d85, d95_=d95,dA5_=dA5,dB5_=dB5,dC5_=dC5,dD5_=dD5,\n dE5_=dE5,dF5_= dF5,dH5_=dH5,dI5_=dI5,dJ5_=dJ5,dK5_=dK5,dL5_=dL5,\n dM5_=dM5,d N5_=dN5,dO5_=dO5,dP5_=dP5,dQ5_=dQ5,\n d16_=d16,d86_=d86,d96_=d 96,dA6_=dA6,dB6_=dB6,dC6_=dC6,dD6_=dD6,\n dE6_=dE6,dF6_=dF6,dH 6_=dH6,dI6_=dI6,dJ6_=dJ6,dK6_=dK6,dL6_=dL6,\n dM6_=dM6,dN6_=dN 6,dO6_=dO6,dP6_=dP6,dQ6_=dQ6,\n d17_=d17,d87_=d87,d97_=d97,dA7 _=dA7,dB7_=dB7,dC7_=dC7,dD7_=dD7,\n dE7_=dE7,dF7_=dF7,dH7_=dH7 ,dI7_=dI7,dJ7_=dJ7,dK7_=dK7,dL7_=dL7,\n dM7_=dM7,dN7_=dN7,dO7_ =dO7,dP7_=dP7,dQ7_=dQ7,\n d18_=d18,d88_=d88,d98_=d98,dA8_=dA8, dB8_=dB8,dC8_=dC8,dD8_=dD8,\n dE8_=dE8,dF8_=dF8,dH8_=dH8,dI8_= dI8,dJ8_=dJ8,dK8_=dK8,dL8_=dL8,\n dM8_=dM8,dN8_=dN8,dO8_=dO8,d P8_=dP8,dQ8_=dQ8,\n d19_=d19,d89_=d89,d99_=d99,dA9_=dA9,dB9_=d B9,dC9_=dC9,dD9_=dD9,\n dE9_=dE9,dF9_=dF9,dH9_=dH9,dI9_=dI9,dJ 9_=dJ9,dK9_=dK9,dL9_=dL9,\n dM9_=dM9,dN9_=dN9,dO9_=dO9,dP9_=dP 9,dQ9_=dQ9\};\n if outpt='rkinterp' then\n soln := \+ [soln,[xk,yk]];\n return subs(`union`(eqns,\{SOLN_=soln\}), eval(rk89interp1));\n elif outpt='derivinterp' then\n \+ soln := [soln,[xk,uk]];\n return subs(`union`(eqns,\{SOL N_=soln\}),eval(rk89interp1));\n else # outpt='interp_pair'\n \+ soln := [soln,[xk,yk]];\n soln2 := [soln2,[xk,uk ]];\n return subs(`union`(eqns,\{SOLN_=soln\}),eval(rk89int erp1)),\n subs(`union`(eqns,\{SOLN_=soln2\}),eval(rk 89interp1));\n end if;\n else # use the 2nd interpolation procedure\n d12 := evalf(-23247272030551848660652158203294479 4394707787222506409930071654271832607410815502715416288891020310980616 1371422018344018284489971184160832578057443004570310907159489110861407 7591113/81448745081825304653040925355737215884470269479429423497142366 9519913767770131942462437963489507455520263207326661002120811587205348 517600062563867363630293524002932114371981759080); d82 : = evalf(21502683584899453427587070285284560592250230972913236384946162 4570070243975692461192255957449934495959898993812660122618440747369381 87307628300794672440627960877874430545765625/1732473122267937813783031 2192060186531063039128814615670219238400537318050520854627913510661167 9620892412025712972666728715428507932530408739841120312094841203241465 5458133122088);\n d92 := evalf(1631002544833756037930437630785 6634753972797176631452267288625564007296424040044102085420269249552669 7265195424911009485694537168326394859630795872496427225382885480330412 73731140625/1221277014623658319004167433947119813177826152325233440261 8742186855362882777919122089968880909842394337811137730913738310176254 319710990146658045169944034872707295611228002208548678);\n dA2 := evalf(396480097574440483155029056022934789307043058976637107062007 5595922276957585506187166172357808245962119383560212231340871153499366 1250484512347586735724139450716599772423054800000000000000000000000000 00/5071934850534744112617721567739881910293383876935119602866938076981 9762051407318250400312030131978301750110673940580945844519129444305795 17054136405989560468014509350258101500522748695949149211050732031);\n \+ dB2 := evalf(1260810289517604761288644720927328696269968749957 1446425869862695830864934973001270054537548725384326053244042733329323 795683329807688237702956770682061133604914226693450990306705408/916081 6020977381447949001637423265164424336911300590288511496652292961664072 2922007312827020820327646844443570737913716486406232594573109709587238 55932137093123525182377146328123885);\n dC2 := evalf(641307235 4330356780421665606238710688384326037787785907346790995854461098648136 8701116233992048113184116624059387474088286643884457827029507111315301 1096729629570008308920061857803651484185902990382685285609923092542091 51655963040560832961143659284061411253746747492673806/5852030102732719 9543274765362725590525734933140824896127902061866651231598807264970334 5719907019236253297981923673465778358560713766188173323172702506912214 4955440839002977062110406684295037064579423657638524309207357196633679 0629401910498717243477290786941061893349477395);\n dD2 := eval f(45908265857092151395316432364750719795430516837566731838457002003025 3433258774221762308048291829183786837988361931646130564336311961614200 43564308284974332361928107788699172864000000000000/9858875629242003518 4527621504258749776206995305740237701650019087174639816444443644776498 8533717135250464414769154286818052890528977150744154306134052821759222 53744929618136360602342731009);\n dE2 := evalf(235889675913756 2446585615268836485858531584292657502630716333850618244509444100692288 7246774551723209754033496440183196843572302454216219059341347925833920 3444701116173436828000000000000/29711026963423301878814667249197128083 7681640756162191442139268144797033721327429634780077385990764422607161 9335325256842609978502922968737115217027479011423624151067876387544520 79112003);\n dF2 := evalf(276839544145908832935620713244536166 1925440005842832925828056476113415204905973430073468365325559778542824 0506458571932272495477575085379603505046167261013507302885764164254987 84/1531669477500262699507893279153040467906926042233828236540783803251 4612585062364956839496707015246220325849097231173079942503441492341951 893581768205237902903076267644562936943365);\n dH2 := evalf(-5 4415591795629811492677746416739849649510634907662244968858819094047734 6245547695458661735888477636915732947174050598866214066220649758087642 397226905839164560/212232204142571091047596341871280871652770394481994 0416388159849351518556581870272675987534684714147249754559056584132933 5745959704670895404730923001592982526183);\n dM2 := evalf(2026 7899489210127389575847344542255351960548258345973188682327343893978939 9262174054256870677598150755094774512166419468563547310799839913296112 823989900087016816640/651991967829712362118288210252152167432597049806 9258334345557275128509938133752503196680326381420116499332195391416565 622488301896859069212439579069696271769853943);\n dN2 := evalf (-30519679122741543761947682271471992460158050049487752049381183155677 9355330007380739259807724406945564534993116400362575367887438506281720 10188641318227006300160/5388968192961836481145863226198667900901066442 9597233143398416237452352063677583726255482855630672704460852439994769 51962995055598991669366091550981595710296617);\n dO2 := evalf( 9731827534890381584526148949375549386228704536437741363202795862790693 9651962896144297211355864062899611122955574195821076195999122377075733 00713908550476991796875/2889019195199688732805900799190752529984295175 5442348790357195391297912790285622169492815895344522611339605634004109 52617791324621365608031520487775614964492843168);\n dP2 := eva lf(-848960477726039832565597341338175629306384880772309675132200911297 0799184791119236525364065927732323229702284479360583228949872260706414 3935532527609861614450000000/52477877929105362905094124839138827992854 9948463740005315769530230433307383387676553407779410540424730798692057 77573214626468655247600464358947878195072783647089613);\n dQ2 \+ := evalf(-113172517075834062454859869586705330686707909306841160891080 6326700744109112101280796982695630475188551519321016347490895541646758 758744082026346365137641248828125/189691680392256644136334385562193110 1117175387921822606647624251558322792641450947164192996518199679197022 005887815887090974259570845067616864225945521690024409184);\n \+ dR2 := evalf(-26434483098045822717111142796255066174269306017094398474 6710094150308945791265604373509372227936701891407388216421358153741119 853774946839999649436127699550000000/643506201865442826866241314657840 9316958332281887199016535222644825192628780323233194037070407662681767 9723795993754191087529193329135816548034402897878187659603);\n \+ dS2 := evalf(11083833718207427478760859203772866431406595116806196081 1004720487060990653527123507101116732067701226241710038447654910091063 2240429562847131385533654392832/19567785740602165871989336333328496372 1897837434993584398687059685738388030782802201363409061839770168703167 90121557559778486040664457768213840054399403450605);\n d13 := \+ evalf(1015004176276158830731638211397051094965865098094857243993712256 4569702621814400771414762385006116020371317006830828640393514848943339 03656283016515316421780248560729232658261881999933/3773791855457905782 2575628748158243359804558192135632887009296687756004573349446667426292 3083471787724388619394686264315976035405144813154695654591878482035999 4546918796590182150404);\n d83 := evalf(-177716341481335754603 4273085656009455221765815008728637730893678810306757083642630474460121 0046304732640521452983521885910436861484149979232379627069314840024092 8451182814545078125/42041347767035290947801557586066052648712974952590 1340263986851853038918025972738970701192044342546698919849063480337928 349439845916273791875347785290683481319865956391173637626688);\n \+ d93 := evalf(-19257118308058104453013403088153964441072720470328061 7721916142106439302917343602627721683463613198614747836339349530121989 19186346639510487675161506575788581700484049608504364397421875/4233760 3173620155058811137710166820190164639947274759262411639581098591326963 4529565785587871541203003710786108005009594752776816416647658417478899 224726542253852914522570743229687504);\n dA3 := evalf(-9452441 6881175970443874062482400184172760294436275710074365535675272658631737 8974559653776234032135046608358545706930424158694973624524890514968807 215414044563307224824764330275000000000000000000000000000/355035439537 4320878832405097417917337205368713854583722006856653887383343598512277 5280218421092384811225077471758406662091163390611014056619378954841926 923276101565451806710503659240871644044477355124217);\n dB3 := evalf(-11164715677251868384684662463037444182547631337322626026912624 9727409051694773293552376215538510100766916817848907886583234829832469 3314369620299715366584866988923056071472444116785152/23818121654541191 7646674042573004894275032759693815347501298912959617003265879597219013 3502541328518817955532839185756628646562047458900852449268202542355644 2121165474180580453122101);\n dC3 := evalf(-566724891027525549 1273353902310164144591783241280290808113911612844069243583549411151847 1175205146893438275284488518176440494267051648191975426352057772994860 9811352787102129575356213152045946356826621350407389373901628499253142 359720211934631135337906787074395848973803353617/151840674398904973748 2835911944853322174402398560603304865298831900043955883719168430281027 9187459116652238304312914192062476788653186695803825254387712682258777 7171635997244838224685435175228368954112503527577409566894728655192753 08815710733834107574382851640859261077734756);\n dD3 := evalf( -474280862413172002614089258246637524226188474524696017029133330372321 2843423197178598053238675985901810212463249957182386573749787947395030 2348895707808673588973139119219319275520000000000000/29905256075367410 6726400451896251540987827885760745387695005057897763074109881479055822 0465218941976926408724799768003348093767937897357257268061939960226002 975030262865083469604937729507273);\n dE3 := evalf(-1874607258 5943602025763804076550196129998459802433382032197845716087797933834137 3266188141523278175452899257620899011626018899439666427289704047369068 83099384145061094602800767500000000000/6932572958132103771723422358145 9965528792382843104511336499162567119307868309733581448684723397845031 9416711178242559929942328317348692705326883973078435998845635249171157 093721517928007);\n dF3 := evalf(-8171556615366945364751516190 8419857277267272696418179237218029339512702341391159686767813841008018 0554877985549817145405012031242677172856749317792738587619185684605387 20039051532/1327446880500227672906840841932635072186002569935984471668 6792961512664240387382962594230479413213390949069217600350002616836315 960029691641104199111206182515999431958621212017583);\n dH3 := evalf(460240330132521931116561578353506954356511461022767746889454678 1403856779912746088505561545953421874624661567428461710591909130920877 409487387364776579773259448038/469033171155082111215187915535530726352 6225718052068320217833267066856010045933302613932451653218265421957575 515050933783199857094732267884445533983352049138286443);\n dM3 := evalf(-90015552340618286736345080522884739205107132545805768684047 5871607447987532551776300843530885259632654301098652823888646610292911 04102212461032576476626176369714790400/2542768674535878212261324019983 3934529871284942470107503947673373001188758721634762467053272887538454 3473955620265246059277043773977503699285143583718154599024303777);\n \+ dN3 := evalf(35091695021081334455043300724934694104112696274192 7467856134235522484082888625584204104878587226219482115976158109445252 9384301119683644348842507445550363720555699200/17314754803986380613921 6585457763199655951264812295910089739111370934407180596076512458866415 1413513994327188897031944665710311363956023367325215330386701718303042 1);\n dO3 := evalf(-180024016958806190025760314193284297539296 4702958402128007129054665367304663323114615643654317103125456334529848 4177141537603075105932782519580857606520340845892578125/19645330527357 8833830801254344971172038932071937007971774428928660825806973942230752 5511480883427537571093183112279447780098100742528613461433931687418175 85513335424);\n dP3 := evalf(182896554965870973147942048001265 0182281115051917938701622665434505633817764346782640272659074695631389 01075924749199115781798283511237100238409067894450858579156250000/3306 1063095336378630209298648657461635498646753215620334893480404517298365 1534236228646901028640467580403175996398711252146752528059882925461371 6326289585369766645619);\n dQ3 := evalf(4124343552145458307440 7107323326623421384464037602939836517496553369043496010793627279488829 0328284017453765223475770905444074002631310707139343150530055403238867 1875/20486701482363717566724113640716855892065494189555684151794341916 8298861605276702293732843623965565353278376635884115805825220033651267 302621336402116342522636191872);\n dR3 := evalf(25994634414325 2906945363035624578892963124825080939362543111556023094917748738212405 0938275481017763073117138877014924278603461990239448418611915976547173 3218750000/19305186055963284805987239439735227950874996845661597049605 6679344755778863409696995821112112229880453039171387981262573262587579 987407449644103208693634562978809);\n dS3 := evalf(-3673277527 3540739744960835935622670842597764295608074661344501082692565471694829 5117297855846543083003188863794718384208322398396834836891172022683022 668426240/117406714443612995231936017999970978233138702460996150639212 2358114430328184696813208180454371038621012219007407293453586709162439 8674660928304032639642070363);\n d14 := evalf(-883336048111889 1690292223099780723042914053471614433014036853688901329177786213675318 1140266876078162724928062988975123169071040772446731003273157499307594 4074888866433538777450941379527/69006479642658848589852578282346502143 6426206941908715648169996576109797912675596204366487924062697553167761 1788548833206418933122648011971577683965777957229704314365799479190217 88160);\n d84 := evalf(593089610023011382708690769780853070156 8967702798266189921989092273439903152599574634654635167925275665482093 4267816139675130895068716422303976940126213491163511602512089311077031 25/1552295917552072281149595972408592713183248305941789564051643760688 1436973266685746610505552406494031960117503882350938892902394310754724 62308976437996369777181043531290487277390848);\n d94 := evalf( 6426644107285237229339620582992539256784826674834915381270573499557544 3744965262774820182413748207756799697456816407524339932652701022946213 1229550027865661971686863791261383698638796875/15632345787182826483253 3431545231336086761747497629880353519899991748644899557364762751601675 6459826475239825629556958503702560552923006738772229781752836463706533 838237184282694230784);\n dA4 := evalf(85435639319401040164878 3966623562063617203763043618629109423622346594664357887306733540976633 6456102039894446267384245628264970509854224605099825658371134575360266 129901323333165312500000000000000000000000/355035439537432087883240509 7417917337205368713854583722006856653887383343598512277528021842109238 4811225077471758406662091163390611014056619378954841926923276101565451 806710503659240871644044477355124217);\n dB4 := evalf(38812300 6153421781716445931935560686856244766387480032530594626231278337514047 0464990707120255095685505323109684509087047366215145700896681262056085 037955679010208348601102590632370816/916081602097738144794900163742326 5164424336911300590288511496652292961664072292200731282702082032764684 4443570737913716486406232594573109709587238559321370931235251823771463 28123885);\n dC4 := evalf(122935863508841554172101032658423621 2867442825459224596907348995212327538718601289223014672234157751145847 0435585326014409623959032888897925977632105911325017309431234134377791 1018052791585099313745507609991044695108955437315571452744922286839699 0393048813554735411845643661600089/36441761855737193699588061886676479 7321856575654544793167671719656010549412092600423267446700499018799653 7193035099406094994429276764806992918061053051043742106652119263933876 1173924504442054808548987000846618578296054734877246260741157705761201 85817851884393806222658656341440);\n dD4 := evalf(989255719906 4176899138067139064238308063420646483760661207070793816476428642523462 0188970976209654969767338911215756902675554350602449524558366445464628 151840317404165005714180096000000000000/690121294046940246291693350529 8112484334489671401816639115501336102224787151111055134354919736019946 7532509033840800077263702337028400552090801429383697523145577621450732 6954524216399117063);\n dE4 := evalf(5083076147789288480010516 0735828029215004852106299129283278146704494923118904889049527200466484 2006086857180411830936431474141732793040857669802664407634062243459363 510767441744343750000000/207977188743963113151702670744379896586377148 5293135340094974877013579236049292007443460541701935350958250133534727 6797898269849520460781159806519192353079965369057475134712811645537840 21);\n dF4 := evalf(340884895973250242571820471394168209239267 8022992811249241853996721011393211859234456219748229609549735285591806 542241097798412476209064739128141031246509345899659886395921975544647/ 6126677910001050798031573116612161871627704168935312946163135213005845 0340249459827357986828060984881303396388924692319770013765969367807574 327072820951611612305070578251747773460);\n dH4 := evalf(-4011 6046043720503927836748415417374074978760652652146644330919614162828869 9820567184013440994631989924139294898755625706949327367808305178910044 551566142862246495687/375226536924065688972150332428424581082098057444 1654656174266613653484808036746642091145961322574612337566060412040747 0265598856757858143075564271866816393106291544);\n dM4 := eval f(15107876256554417330793552766047794531442142052525056234131012783247 7577231219519534793984660029737052380737953981591950047807772777391686 956437757045513910858313072640/847589558178626070753774673327797817662 3761647490035834649224457667062919573878254155684424295846151449131854 0088415353092347924659167899761714527906051533008101259);\n dN 4 := evalf(-3918822079628415223750836469082414909755051518607775549565 5500684136801716189033392915841310993652828506589430289466615096662089 51180091043764846433823372240130626880/2473536400569482944845951220825 1885665135894973185130012819873052990629597228010930351266630734478771 34753126995759920951014730519937176239036021900552431026147203);\n \+ dO4 := evalf(9174584513648988421921890350345040323444198237323066 6550980420280082113163479467841877693176670184327789149491600272575905 6048991943678105523839420312619645138940234375/15716264421886306706464 1003475976937631145657549606377419543142928660645579153784602040918470 6742030056874546489823558224078480594022890769147145349934540684106683 392);\n dP4 := evalf(-2378626836103778338629505406137077434123 4208090170893492270154158898466522009232309444552224108084776449271812 5435585368243358876121297849918181511874329548310832421875/47230090136 1948266145847123552249451935694953617366004784192577207389976645048908 8980670014694863822577188228519981589316382178972284041792305309037556 55052823806517);\n dQ4 := evalf(-29305700463870082641972130716 5400107711262069850832402931121922339706927853375187215564969664821021 163661705238156822296083016739057731321338981240707686611441109765625/ 1638936118589097405337929091257348471365239535164454732143547353346390 8928422136183498627489917245228262270130870729264466017602692101384209 70691216930740181089534976);\n dR4 := evalf(-31655990496397627 5872457433593399598492304911551508975862511072113576022286246715101909 8572479934123487181191998826198796428115593036595036812414629015734133 1640625/27578837222804692579981770628193182786964281208087995785150954 1921079684090585281422601588731756972075770244839973232247517982257124 86778520586172670519223282687);\n dS4 := evalf(937559249930781 9204366030739014634986707821221131923155443146599595418442333474304699 2236574052940692034070852465986501035608263529463846370516682358031225 19104/1956778574060216587198933633332849637218978374349935843986870596 8573838803078280220136340906183977016870316790121557559778486040664457 768213840054399403450605);\n d15 := evalf(96901747031528596063 4203359774688754048366075454316908232373636049048543966514646060001414 6606181575185548129436932132494229486593675879000580996866419494358388 5945055749769399858528036829/27947624255276833678890294204350333368175 2613811473029837508848613324468154633616462768427609245392509032943277 4362277448599667914672444848488962006140072678030247318148789072038242 0480);\n d85 := evalf(-436605385408888719269156853630408555007 2138503190708741043238759280725668347540473629621844434363789158358858 2285829005655321088746498662338090981344739220698419389695462477032059 53125/2724279335303886853417540931577080211636600776927840684910634800 0076921888083033485301437244473397026090006219313525897757043702015374 5417135225364868362895895273139741480517182093824);\n d95 := e valf(-4731000813246699285880165394140538182788997348947908242683874264 6964589659387468250133769077257839500909002926243038686904205387380969 8683921257087448471857775440078994838565090982484546875/27434766856505 8604781096172361880994832266866858340440020427424485518871798723175158 6290609407586995464045893979872462173997993770379876826545263266976227 99380496688610625841612837502592);\n dA5 := evalf(-96759694688 5405340205181707679238028838523425632766379683622653979266742697114185 4795393585048266161697167368753721700447422615422446351986272877281711 61373289635878324630400538663125000000000000000000000000/9585956867510 6663728474937630283768104544955274073760494185129654959350277159831493 2565897369494389903077091737476979876461411546497379528723231780732026 928454742267198781183598799503534389200888588353859);\n dB5 := evalf(-57143673341738841216735103335998225165995007998361812110545840 3794583893433575744029287137159159260041087217924047014636013855847882 9812655863942806257030537218763843310837913113907647744/32154464233630 6088823009957473556607271294225586650719126753532495482954408937456245 6680228430793500404239969332900771448672858764069516150806512073432180 119686357339014378361171483635);\n dC5 := evalf(-6961519053493 1632281473861115789503325161898739031070906577833534264044924213347196 1973471099504421051942962962024281482849401254839813406891558021822050 8658805745396352038659347434833791108610201290289719091566747225465765 6605964912896531722298043340325399462693260379634846175501/49196378505 2452114944438835470132476384506377133635470776356821535614241706325010 5714110530456736753795325210597384198228242479523632489440439382421618 9090518439803610063107327584798080996773991541132451142935080699673892 084282452000562902777622508541000439316384005891860609440);\n \+ dD5 := evalf(-14564894328225754821195703066543095705094765344042544798 0481221931736253485417213600050049749070186335760428849102999313989987 772559756288015920933176271722532381358960021994612363264000000000000/ 2422325742104760264483843660359637482001405874662037640329540968971880 9002900399803521585768273430013103910670878120827119559520296968593783 8713017136778306240977451292071761037999956090089113);\n dE5 : = evalf(-5756811794899346626822160005588632548527306534926936652197481 1835642220372900812159275043297477498760983419006478028251103404656360 002390614873014230699567681146447819781787004754437500000000/561538409 6087004055095972110098257207832183010291465418256432167936663937333088 4200973434625952254475872753605437647354325328593705244109131477601819 353315906496455182863724591442952168567);\n dF5 := evalf(-2509 4383525062139557760323708810311223829670744121058788880134804318107701 8823031825147674504194970171315515350464186384573456957980360845929105 2424711886218328790953510215098177098999/10752319732051844150545410819 6543440847066208164814742205163022988252580347137801997013266883247028 4666874606625628350211963741592762405022929440128007700783795953988648 3181734242230);\n dH5 := evalf(9290772551508887290716415294744 2861348335034555311950380641857836619592155622741560563379811297755260 20027479477026011855533827492876976654734352480121484916341523571/1688 5194161582956003746764959279106148694412584987445952784199761440681636 1653598894101568259515857555190472718541833616195194855410361643840039 223400673768978311948);\n dM5 := evalf(-1121298951139393638856 9695409834713160221501813207386015571095560949726589972411560593611291 8895924061041219612400795051969730537226015655570210085541141282770801 94744320/2288491807082290391035191617985054107688415644822309675355290 6035701069882849471286220347945598784608912656005823872145334933939657 97533293566292253463391391218733993);\n dN5 := evalf(423730769 1491839242922440202871230484873011323474510998832792873279506318409082 4314099287062324466471175466960390741882224524329507192225631926685727 976709766479372160/742060920170844883453785366247556569954076849195553 9003845961915897188879168403279105379989220343631404259380987279762853 044191559811528717108065701657293078441609);\n dO5 := evalf(-1 3141488358107372740570348910330962543231331985583722928783861853225768 5345217158277357857527041920815122367584142933773183497165670841893520 5641216579813718488507421875/78581322109431533532320501737988468815572 8287748031887097715714643303227895768923010204592353371015028437273244 911779112039240297011445384573572674967270342053341696);\n dP5 := evalf(100680647057850169072115401012268778927603511571084984103641 9316582368910276167934515174751632563255949817859007472525818553504099 261244618131739976153704227162739843750/472300901361948266145847123552 2494519356949536173660047841925772073899766450489088980670014694863822 57718822851998158931638217897228404179230530903755655052823806517);\n \+ dQ5 := evalf(1800916386709928736623872762068108772223421670080 6704982024738579528789992090021199826712558566033408578292309912147581 02644165062400611993885456821340532556416652734375/2458404177883646108 0068936368860227070478593027466820982153210300195863392633204275247941 2348758678423934051963060938966990264040381520763145603682539611027163 4302464);\n dR5 := evalf(1123526588280651001188595677264972632 8681729666027672923649416363311196543782956697665156880388612107326458 75587142140893709475497048969103886856547078037817044531250/2482095350 0524223321983593565373864508267853087279196206635858772897171568152675 3280341429858581274868193220355975909022766184031412381006685275554034 673009544183);\n dS5 := evalf(-1188351828313185448639649237326 8044870519443220243827166143992278628209508220895962966139747118145520 71239798780062924876289958204519620407237812804050351519475072/5283302 1499625847854371208099986940204912416107448267787645506115149364768311 3565943681204466967379455498553333282054114019123097940359741773681468 783893166335);\n d16 := evalf(-1863702386750616080828147010739 1508859043690850973618953835559800959232658818092251639982811890322121 4279942799952475164109284715666157226569805188736967670455874767623619 356529916486605365/335371491063322004146683530452204000418103136573767 6358050106183359893617855603397553221131310944710108395319329234732938 3196014976069338181867544073680872136362967817785468864458904576);\n \+ d86 := evalf(58119437263982642468499671102878166334413188879346 2655117686172375644340661446218035542217466881420491125931727968879965 68427824881585057133004913358090610671097541696843778683006640625/1634 5676011823321120505245589462481269819604661567044109463808800046153132 8498200911808623466840382156540037315881155386542262212092247250281135 2189210177375371638838448883103092562944);\n d96 := evalf(6297 7488173636373262797794951173944320058901544643072383159843261783416462 1163513451715717052626168985158773640434390860825936207617325276475550 6385047676211116215322627584546800540705859375/16460860113903516286865 7703417128596899360120115004264012256454691311323079233905095177436564 4552197278427536387923477304398796262227926095927157960185736796282980 131663755049677025015552);\n dA6 := evalf(64401622071909703125 9722150889322279199317326500919794554724166962686591138831190869338516 4033853019390158386004505105717928415968139664363622249501645548248427 611276999379431481695312500000000000000000000000/287578706025319991185 4248128908513043136348658222212814825553889648780508314794944797697692 1084831697092312752124309396293842346394921385861696953421960807853642 26801596343550796398510603167602665765061577);\n dB6 := evalf( 7606773184229929268021459726711400198837965999733016351044051673422965 8231997577138154391494947191850542002092645370484611152763285881416790 37009209393009976470850313339671147480660424320/1929267854017836532938 0597448413396436277653535199043147605211949728977264536247374740081370 5847610024254398159974046286920371525844170969048390724405930807181181 4403408627016702890181);\n dC6 := evalf(1853387903186769088903 7913956265587984235338474022395799283492588014207040122030237491048141 6690535363884913724186674664532611006893789452845918122099354529306148 9952552532277211400770377536780063491988928492873248517822594343843080 65166268822352638000001136832224471390106316131685/5903565420629425379 3332660256415897166140765256036256493162818584273709004759001268569326 3654808410455439025271686103787389097542835898732852725890594269086221 2776433207572879310175769719612878984935894137152209683960867050113894 2400675483333147010249200527179660807070232731328);\n dD6 := e valf(96941481994443083061400036211931521725162008643400167491338695810 0485711991098515011195718001177179558293807845172438964391032111373487 278720547017921820911878962671348716457796249600000000000000/726697722 6314280793451530981078912446004217623986112920988622906915642700870119 9410564757304820290039311732012634362481358678560890905781351613905141 0334918722932353876215283113999868270267339);\n dE6 := evalf(3 8316369098478396650523048597838671795516863991668827495992995663848927 2465217482673769867577973608528955361414352192149595148943418083042339 600731559488334402986489933681196283927343750000000/168461522882610121 6528791633029477162349654903087439625476929650380999181199926526029203 0387785676342761826081631294206297598578111573232739443280545805994771 9489365548591173774328856505701);\n dF6 := evalf(6680959501208 5530195978280031657331172929180418850193013926291799121162377100979461 5053977451497767856323433103862886989516720518608807591190945610349894 8346831512046999057861757650815/12902783678462212980654492983585212901 6479449797777690646195627585903096416565362396415920259896434160024952 7950754020254356489911314886027515328153609240940555144786377981808109 0676);\n dH6 := evalf(-118560556728390809729963047984313900045 4514686572588719667760460282988740741834051117576097626170671174539513 1842262949924286367696497701084397710183025536317023131475/77931665361 1521046326773767351343360708972888537882120897732296681877613976862764 1266226227362270348701098740855776936132085916403555152792617194926184 9431836143976);\n dM6 := evalf(4131056178574323916285955498398 2978851143352864991255622614191129846831497087570300901889199200628378 71523097462159376031692783920280265055359708151690176939599220736000/5 2811349394206701331581345030424325562040361034360992508199013928540930 4988833952758931106436895029436445907826704741815421552453645584606207 605904645398013358169383);\n dN6 := evalf(-2472505541180997154 1386540025616889606549304552870624515716529903383309914033751021176689 5818473454218513175581240533503967790032803205216630617827612945075604 887384000/222618276051253465036135609874266970986223054758666170115378 8574769156663750520983731613996766103089421277814296183928855913257467 9434586151324197104971879235324827);\n dO6 := evalf(4008189996 7953552706188889118737884745219663921757593120493116373673554905421653 4756665750231299405031033978811998154184988425568361471866126250204676 4244232209080078125/15716264421886306706464100347597693763114565754960 6377419543142928660645579153784602040918470674203005687454648982355822 4078480594022890769147145349934540684106683392);\n dP6 := eval f(-6776333177795703804999428192880038213112448808980324864732067773477 4475625781879375089777100491686340997318355411049548209875913689257930 14917679098771068959761982421875/1416902704085844798437541370656748355 8070848608520980143525777316221699299351467266942010044084591467731564 68555994476794914653691685212537691592711266965158471419551);\n \+ dQ6 := evalf(-232188897035532798628382087774023494321918302596227172 6685240246002444720179956385421762062279916378591392794843192148951038 1344922882120825996303583972365082255654296875/14750425067301876648041 3618213161362422871558164800925892919261801175180355799225651487647409 2552070543604311778365633801941584242289124578873622095237666162980581 4784);\n dR6 := evalf(-704105147551833843285823269391324810119 9655822702744598858679626758180179731683450939240608420111399806284836 892762247087554947465238769854765348764136682571822265625/744628605015 7266996595078069612159352480355926183758861990757631869151470445802598 4102428957574382460457966106792772706829855209423714302005582666210401 9028632549);\n dS6 := evalf(1567895693130955229911636340053836 4751944845740385862788715576892273611058141561971757094050612159937440 35690033097074308654630574261554566129455024110188277556160/3169981289 9775508712622724859992164122947449664468960672587303669089618860986813 9566208722680180427673299131999969232468411473858764215845064208881270 335899801);\n d17 := evalf(33963862483023360501402695298901653 5514449214436075756798598531074046988424848999349422669745557498449061 0101076421683998700808209238269994420204668064831115248655036515146394 3202198163625/65211123262312611917410686476817444525742276556010373628 7520646764423759027478438413126331088239249187743534314017864738006589 1800902371313140911347660169582070577075680507834755898112);\n \+ d87 := evalf(-1355864369393950426860840259294932246067570905721612046 8226988792849205378431709932489416132031579958865478641232448480843476 972760934550808251614730416758058490505157119926499033203125/317832589 1187867995653797753506593580242700906415814132395740600008974220276353 9066185010118552296530438340589199113547383217652351270298665776292567 9756711877818663031727270045776128);\n d97 := evalf(-146919750 6175426510578903538300958976161368593185593015717317917135960337947976 6434043817255462539006720874446936452316676581606250754507501005466451 48332010382142882815019297605907529296875/3200722799925683722446122010 8886116063764467800139718002383199523310535043184370435173390443088514 9470805354297651787253633099273210985629763614047813893265943912803379 063481881643753024);\n dA7 := evalf(-6009684113207379872469956 5393912343279639045009833362483855469690330623467775806058756868713268 0217476569566154600513157161099486076634824261560450948676976901457647 4911531077953906250000000000000000000000000/22367232690858221536644152 1137328792243938228972838774486431969194905150646706273484265376052882 0243107179880720779619711743293608493885567020874155041396166394398623 463822761730532174913574802073372825671);\n dB7 := evalf(-7098 3156149381987393935351197465886271071121592607358974409111674366437697 8949808973265577292171502580753335887632225001020925182837016529164833 1982553704750655561290138882487159233856000/15005416642360950811740464 6820993083393270638607103668925818315164558712057504146247978410660103 6966855311985688687026676047334089899107537043038967601684055853633424 873376568546692363);\n dC7 := evalf(-4323755939312935073661164 9824857256045741832004356624853142612997779996937630307373104771104412 9050971413995442335216233872977555243105427151747237908087721177329088 1978329206866688646492488027731927468995035347035267042071899112279460 6841820683207228009828518422329841270954277625/11479154984557216015370 2394943030911156384821331181609847816591691643323064809169133329245710 6571909218909215806056312919923245222180914202769189231711078778763595 4175681391709769786218899247264692930905266684852163257241486332572133 464677314778585326233435840489601374767475536);\n dD7 := evalf (-90461647627799939605519743364020711300957097303126686836286917383741 7390079966089431055381845539863537911096526673049073268907227101509056 882933282328966291600906678875792972231680000000000000000/565209339824 4440617128968540839154124669947040878087827435595594267722100676759954 1550366792638003363909124898715615263278972214026260052162366370665248 2714562280719681500775755333230876874597);\n dE7 := evalf(-357 5519796532472885105724634193796775210033340217703585836045976065501124 4751598625189447840947564427988980328695615058245877247374740650849305 9474166354936016711365284260766030546875000000000/13102562890869676128 5572682568959334849417603573467526425983417251855491871105396468938014 1272219271103697584126878438267591000519789029213067810709118244037818 25062093348690713366888393323);\n dF7 := evalf(-22265663771726 8198521017549731406960954848541891969171106843362416094055612711527938 6968668907580355284226975211130811993246700709029367726699672639649907 67809561478111920044897862125/3584106577350614716848470273218114694902 2069388271580735054340996084193449045933999004422294415676155562486887 5209450070654580530920801674309813376002566927931984662882772724474741 );\n dH7 := evalf(19389322393902097460007346431045968828446865 2106525685940944360449962727405722611317997060793568194627976611197400 61804745161927719530880022171878524355728447213199375/8442597080791478 0018733824796395530743472062924937229763920998807203408180826799447050 7841297579287775952363592709168080975974277051808219200196117003368844 89155974);\n dM7 := evalf(-16562274879863103837621119021996210 9356547892793937528046493033153647583215560098173272088481429703627886 61843162447539273783922782341989158994968020059394518172057600000/2288 4918070822903910351916179850541076884156448223096753552906035701069882 8494712862203479455987846089126560058238721453349339396579753329356629 2253463391391218733993);\n dN7 := evalf(6229726540408146156220 0131476563270044120625687363331910167396974250987426355829178163818809 1146178063905143801648406032688977123991641106763472410383183531459741 600000/519442644119591418417649756373289598967853794436887730269217334 1128032215417882295373765992454240541982981566691095833997130934091868 0701019756459911601051549091263);\n dO7 := evalf(-847131331713 6159120601971321105248932626039024408065558122890211639074554446611565 6640343569869558461881696042604941643125962103998178959640471616929787 9475995849609375/39290661054715766766160250868994234407786414387401594 3548857857321651613947884461505102296176685507514218636622455889556019 620148505722692286786337483635171026670848);\n dP7 := evalf(19 2199536689203016498164669863697596313903985705566233907430060579117336 2576296424307507315668079507961528050896857580077151174447548705069343 1120192609459078333007812500/33061063095336378630209298648657461635498 6467532156203348934804045172983651534236228646901028640467580403175996 3987112521467525280598829254613716326289585369766645619);\n dQ 7 := evalf(22242656577209132137928034855897489762583074002299371185968 2394165403449004868350395991523900216356220374502752592770504662331446 9058321213812394587322423923121826171875/12292020889418230540034468184 4301135352392965137334104910766051500979316963166021376239706174379339 2119670259815304694834951320201907603815728018412698055135817151232); \n dR7 := evalf(1871736451411923969701559071023703939498679631 4607212569975747897472699052302634634524758967083861330828894032415208 276570869749417022470440098629019283318233398437500/173746674503669563 2538851549576170515578749716109543734464510114102802009770687272962390 0090100689240773525424918313631593632882198866670467969288782427110668 09281);\n dS7 := evalf(-59872065062863860638352370797924293013 0755669845497798132642764732928530595132258747219042997402452197343650 877840575170394219213920880906885704664131915202912000/105666042999251 6957087424161999738804098248322148965355752910122302987295366227131887 3624089339347589109971066665641082280382461958807194835473629375677863 3267);\n d18 := evalf(-103126451771286765302080471992047507582 9598161231838437473400760612259546155815044831245671980093381437233987 5996674674843496132094731283857582123235641116313108597714723000234113 8440434375/39126673957387567150446411886090466715445365933606224177251 2388058654255416487063047875798652943549512646120588410718842803953508 05414227878845468085961017492423462454083047008535388672);\n d 88 := evalf(7115780036212695343113919200641647119006724199962875622131 6493231780951007648429161389291035092798704861441899820575239054396123 91426166824225465922630083274655027504585236975830078125/2724279335303 8868534175409315770802116366007769278406849106348000076921888083033485 3014372444733970260900062193135258977570437020153745417135225364868362 895895273139741480517182093824);\n d98 := evalf(45356290442885 3725330484396453340437524946306963694983178546105469918817246175758131 4132694836812552895698143534834794737500991610853618845106253946916933 7704453141127104178603364013671875/16138098150885800281240951315404764 4018980509916670847070839661462069924587484220681546506435740411497885 0525870513213043528231629635221662673684274691898819885274638886034362 4284558976);\n dA8 := evalf(1576986282773265393767807714184426 0208438921080912760988828025242262579049288745618990252176083159553377 4669817505432866591327954847923083147837604244057703211404380317633585 4423828125000000000000000000000000/95859568675106663728474937630283768 1045449552740737604941851296549593502771598314932565897369494389903077 0917374769798764614115464973795287232317807320269284547422671987811835 98799503534389200888588353859);\n dB8 := evalf(186265137146760 6970545561570150178277362133600028535580304441413134481158938119262533 0215714945659143986319318951266621599951478012587289037557599494773168 70759096854544633027526749600000/6430892846726121776460199149471132145 4258845117330143825350706499096590881787491249133604568615870008084799 3866580154289734571752813903230161302414686436023937271467802875672234 296727);\n dC8 := evalf(22691721155097070385155661442485544724 3003656596507484151792774836360755063974437258495822000374838789244348 7195551316715874394275451475295706453438104427754417476061623565769465 0962635909194910376929811893948555819558415160966806790107628439109100 540016017033958122053031002540625/983927570104904229888877670940264952 7690127542672709415527136430712284834126500211428221060913473507590650 4211947683964564849590472649788808787648432378181036879607220126214655 1695961619935479830822649022858701613993477841685649040011258055552450 1708200087863276801178372121888);\n dD8 := evalf(1396342134567 4867269475983828473404090176043468794105027612159784324425571137987361 1559261254754698808214864630082218777303168890331951590659878020007877 81808568283866750656064000000000000000000/1424897495355741332049319800 2115514600008269850953162590173770405716946472294352825600932804866723 5371199474534577181335997408942923344669316890010080457827200574971348 27750649294115064122889);\n dE8 := evalf(938243269812506676272 1962011783188035974050560445249382837937259487701568217139995696121518 8017790554000785418684950410890929656197179627348227070540612410070990 323983501493381835937500000000/561538409608700405509597211009825720783 2183010291465418256432167936663937333088420097343462595225447587275360 5437647354325328593705244109131477601819353315906496455182863724591442 952168567);\n dF8 := evalf(81797485453126782440770702413652487 0166537465979144893511526543079909569175697426990881814794826148271533 6965121094826263715996477302558580979804793012797785569773628204282671 80271875/2150463946410368830109082163930868816941324163296294844103260 4597650516069427560399402653376649405693337492132512567004239274831855 24810045858880256015401567591907977296636346848446);\n dH8 := \+ evalf(-297625734716720540712885358881900309825380023095363322905966077 3191980599702866477889724654665642044155155827666071285064055213840506 8958899262535046785717791288796875/16885194161582956003746764959279106 1486944125849874459527841997614406816361653598894101568259515857555190 472718541833616195194855410361643840039223400673768978311948);\n \+ dM8 := evalf(824000207343077357503305774896925209134044980298554239 3800318072183813200694981779032464911305022315520569712238482403724434 766143485229893205877004653252974167040000000/228849180708229039103519 1617985054107688415644822309675355290603570106988284947128622034794559 8784608912656005823872145334933939657975332935662922534633913912187339 93);\n dN8 := evalf(-50181008748594324958316900089621931186323 2236211324894560094799151424976078638126581069542682388159449693190224 17123251499898711132684374120054289733126734015270000000/7420609201708 4488345378536624755656995407684919555390038459619158971888791684032791 0537998922034363140425938098727976285304419155981152871710806570165729 3078441609);\n dO8 := evalf(7527177875668363025850091036418130 6576188133167494881408039571268978584249656005204487974898416171995335 8454952814813992481430865789047055988453945857465388885498046875/78581 3221094315335323205017379884688155728287748031887097715714643303227895 7689230102045923533710150284372732449117791120392402970114453845735726 74967270342053341696);\n dP8 := evalf(-56813821503966701437607 0925228062638828901111643031424732713990985160932607703000736080421438 3536806980026931163020651118924773451409848646164636987244940851196289 06250/1574336337873160887152823745174164839785649845391220015947308590 6912999221501630296602233382316212741923960761733271964387940596574280 1393076843634585218350941268839);\n dQ8 := evalf(-258004151616 1825004089517083548801251030605627088253348494462691056056359844059395 8418204881036047541438975982470751912357719995839607718905790785915151 05000140380859375/2458404177883646108006893636886022707047859302746682 0982153210300195863392633204275247941234875867842393405196306093896699 02640403815207631456036825396110271634302464);\n dR8 := evalf( -109882252504213447998914427007962923963087452883649285391056796480621 4663214762948798802583441193382994526522684544266476336041419904524963 3003194810302693200683593750/17374667450366956325388515495761705155787 4971610954373446451011410280200977068727296239000901006892407735254249 1831363159363288219886667046796928878242711066809281);\n dS8 : = evalf(34687987505181639863565677117014381088736312609144039838422173 5139986294391024365812789221946686217330260138723496511914063027197196 744142879477163537290994800000/105666042999251695708742416199973880409 8248322148965355752910122302987295366227131887362408933934758910997106 66656410822803824619588071948354736293756778633267);\n d19 := \+ evalf(7647388829390407072050436441201063192701605491264269048124591173 5771745655593497324159977975063342019707168762488624377704384124856482 4465216259859042232889853458000575076625856711171875/13755471313144066 5763288166787036797046487614610334381873148886426870636669858733102768 8354639254666255396517693631433431732649051752843948865660987397067021 218012351901357121393822258);\n d89 := evalf(-6128248875820813 8189351075812740163826665468755334950443688109021147048123110960473585 3634364261060681869440861373221221047599744108511137234963008500590962 71587381946566656494140625/9577544538177727219046042337575672619034924 6063869399078889504687770428512791914596762865312601786419847678114774 11448430210676489780112321160266733653383058818196319036424432182986); \n d99 := evalf(-132809861647190694743481879402208262954806691 3588821718332722836264088737905199993438457740160120499418855286695455 1386317737767872860524802686549332570977325713152260347650492077636718 750/192900704459806831486708246191947574491437640759770621889363032841 3804567334772325334110584739709606185657269204597824966092339369798350 8936646382345926603081441173417934629488402636901);\n dA9 := e valf(-3476816424263507539648601277866430195683377611991420521124785172 8808843130940854832258557744703262493918341385350040564349638345755520 1966762189060999784094927618210734163506250000000000000000000000000000 0000/86273611807595997355627443867255391294090459746666384444766616689 4634152494438483439309307632544950912769382563729281888815270391847641 5758509086026588242356092680404789030652389195531809502807997295184731 );\n dB9 := evalf(-4106628543151784906781979989897271298955426 0483845989327524266885667335675037657665744936624425067382920536000260 4502075896655609142345881004379546302413609342712144348208199909888000 0000/57878035620535095988141792345240189308832960605597129442815635849 1869317936087421242202441117542830072763194479922138860761114577532512 9071451721732177924215435443210225881050108670543);\n dC9 := e valf(-4225417052195283099015649082430909194592099731222062410181998574 7435106508189023286349059607863576513992478220744441528760917061908068 2606217092293281206758041254491225391510179199773320460333368754049499 9481175216175419086611151820873223926810553183685936210961405422148312 5000/74791791646487652609796444581607977828725631658829716841000192463 1845975567048157963293830643760655137802819178656381487401728305957641 9757424736789623341463951997170448783208585526735286671721686996487504 8381034847477200803807781757612521114628813660304721933691900849112413 );\n dD9 := evalf(-5233528689920003954836897492689462655273196 8983349547798080752742313865237570499676150703884059405531284172056705 9489459414163998283032479461600377868775443629496794511404646400000000 000000000000/218009316789428423803545929432367373380126528719583387629 6586872074692810261035982316942719144608701179351960379030874440760356 826727173440548417154231004756168797061628645849341999604810802017);\n dE9 := evalf(-55907178964891756029115256168408759961338947104 4358901561525517269004818631639776379622495680730263116049986637383334 1297173275336010886262379707588489860559699397168074893750000000000000 000/136590423958873071610442564840227878028350397547630239903534836517 3783119891832318402056517928568352115823736348483314024129614441478910 7626575632874977833598877516125561446522242880257219);\n dF9 : = evalf(-9017035975314695096508707663852596844142303496473697579396238 3989137557922606470032494893173074518601113865286472611538603740693823 9560175629231502211989676044065478306027126990000000/96770877588466597 3549086973768890967623595873483332679846467206894273223124240217973119 4019492232562001871459630655151907673674334861645206364961152069307054 163585897834863560818007);\n dH9 := evalf(67688562108349667935 5185280995994051467680135846536960660207745291297618192550205304693092 7729215020477003943979869046096393321776284387941455501882702103924925 000000/126638956211872170028100737194593296115208094387405844645881498 2108051122712401991705761761946368931663928545389063752121463961415577 71232880029417550505326733733961);\n dM9 := evalf(-51183242042 2117789571784566951171205366522191261076592299186646443064360134183695 0092557981673914078034499595987133654481461613932698669586970292822890 575560704000000000/686547542124687117310557485395516232306524693446692 9026065871810710320964854841385866104383679635382673796801747161643600 480181897392599880698876760390174173656201979);\n dN9 := evalf (241988288270258019449724284803381394451125075552976152458037287624949 2163047428415014987965524833049182377323624810097152941646457359698658 42208629511133792064000000000/1558327932358774255252949269119868796903 5613833106631908076520023384096646253646886121297977362721625948944700 0732875019913928022756042103059269379734803154647273789);\n dO 9 := evalf(-5381561043553201898195543307762879248596447488459819487792 7891957635455396697904422543225520466666738762711378020971391711027225 6440018897453771437411597747802734375/30695828948996692786062695991401 7456310831362401574955897545201032540323396784735550861168888035552745 4833098612936637156403282410200958533490518261590899773645866);\n \+ dP9 := evalf(88867149471088518306084554664778503454087184123826396 5304156336468282633399607522044032837405914123660882393922968002818004 8249622001587184971466827380275859375000000000/99183189286009135890627 8959459723849064959402596468610046804412135518950954602708685940703085 9214027412095279891961337564402575841796487763841148978868756109299936 857);\n dQ9 := evalf(69371351338581058563607097156820860883141 2908891292846420021467707935099360792994577477127560700179732805287515 3678889554101030543680413705667265868112426910400390625/28809423959573 9778282057848072580785982171012040626808384607933205420274132420362600 5618113462015762780477171442120378519417156723220946443112543154761066 7245714482);\n dR9 := evalf(7808423189582799195312500930899926 4262370893200130767874363198554324968236101219077542526388665754408217 78878036571551602936875606341659621037369172874453125000000000/5212400 2351100868976165546487285115467362491483286312033935303423084060293120 6181888717002703020677223205762747549408947808986465966000114039078663 4728133200427843);\n dS9 := evalf(-241346974388131504896351852 0917855029339245356683966506549224061166795166775093117564200886049982 53547649020917590859892035494983822857823744800781320148480000000/3169 9812899775508712622724859992164122947449664468960672587303669089618860 9868139566208722680180427673299131999969232468411473858764215845064208 881270335899801);\n eqns := \n \{d12_=d12,d82_=d82,d92 _=d92,dA2_=dA2,dB2_=dB2,dC2_=dC2,dD2_=dD2,dE2_=dE2,dF2_=dF2,\n \+ dH2_=dH2,dM2_=dM2,dN2_=dN2,dO2_=dO2,dP2_=dP2,dQ2_=dQ2,dR2_=dR2,dS2_=d S2,\n d13_=d13,d83_=d83,d93_=d93,dA3_=dA3,dB3_=dB3,dC3_=dC3,dD 3_=dD3,dE3_=dE3,dF3_=dF3,\n dH3_=dH3,dM3_=dM3,dN3_=dN3,dO3_=dO 3,dP3_=dP3,dQ3_=dQ3,dR3_=dR3,dS3_=dS3,\n d14_=d14,d84_=d84,d94 _=d94,dA4_=dA4,dB4_=dB4,dC4_=dC4,dD4_=dD4,dE4_=dE4,dF4_=dF4,\n \+ dH4_=dH4,dM4_=dM4,dN4_=dN4,dO4_=dO4,dP4_=dP4,dQ4_=dQ4,dR4_=dR4,dS4_=d S4,\n d15_=d15,d85_=d85,d95_=d95,dA5_=dA5,dB5_=dB5,dC5_=dC5,dD 5_=dD5,dE5_=dE5,dF5_=dF5,\n dH5_=dH5,dM5_=dM5,dN5_=dN5,dO5_=dO 5,dP5_=dP5,dQ5_=dQ5,dR5_=dR5,dS5_=dS5,\n d16_=d16,d86_=d86,d96 _=d96,dA6_=dA6,dB6_=dB6,dC6_=dC6,dD6_=dD6,dE6_=dE6,dF6_=dF6,\n \+ dH6_=dH6,dM6_=dM6,dN6_=dN6,dO6_=dO6,dP6_=dP6,dQ6_=dQ6,dR6_=dR6,dS6_=d S6,\n d17_=d17,d87_=d87,d97_=d97,dA7_=dA7,dB7_=dB7,dC7_=dC7,dD 7_=dD7,dE7_=dE7,dF7_=dF7,\n dH7_=dH7,dM7_=dM7,dN7_=dN7,dO7_=dO 7,dP7_=dP7,dQ7_=dQ7,dR7_=dR7,dS7_=dS7,\n d18_=d18,d88_=d88,d98 _=d98,dA8_=dA8,dB8_=dB8,dC8_=dC8,dD8_=dD8,dE8_=dE8,dF8_=dF8,\n \+ dH8_=dH8,dM8_=dM8,dN8_=dN8,dO8_=dO8,dP8_=dP8,dQ8_=dQ8,dR8_=dR8,dS8_=d S8,\n d19_=d19,d89_=d89,d99_=d99,dA9_=dA9,dB9_=dB9,dC9_=dC9,dD 9_=dD9,dE9_=dE9,dF9_=dF9,\n dH9_=dH9,dM9_=dM9,dN9_=dN9,dO9_=dO 9,dP9_=dP9,dQ9_=dQ9,dR9_=dR9,dS9_=dS9\};\n if outpt='rkinterp' then\n soln := [soln,[xk,yk]];\n return subs(`u nion`(eqns,\{SOLN_=soln\}),eval(rk89interp2));\n elif outpt='d erivinterp' then\n soln := [soln,[xk,uk]];\n ret urn subs(`union`(eqns,\{SOLN_=soln\}),eval(rk89interp2));\n el se # outpt='interp_pair'\n soln := [soln,[xk,yk]];\n \+ soln2 := [soln2,[xk,uk]];\n return subs(`union`(eqns, \{SOLN_=soln\}),eval(rk89interp2)),\n subs(`union`(e qns,\{SOLN_=soln2\}),eval(rk89interp2));\n end if;\n end \+ if;\n else\n soln := [soln,[xk,yk,uk]];\n Digits := saveDi gits;\n if outpt='points' then\n return evalf([seq([soln[ i,1],soln[i,2]],i=1..nops(soln))]); \n elif outpt='derivpts' then\n return evalf([seq([soln[i,1],soln[i,3]],i=1..nops(soln ))]);\n elif outpt='points_pair' then\n return evalf([seq ([soln[i,1],soln[i,2]],i=1..nops(soln))]),\n evalf([seq([sol n[i,1],soln[i,3]],i=1..nops(soln))]); \n else # outpt='endpt'\n \+ return soln[nops(soln),2];\n end if;\n end if;\nend pro c: # of de2rk89" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 1 ";" }}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 1 ";" }}}}{SECT 1 {PARA 4 "" 0 "" {TEXT 0 9 "desolveSH" }{TEXT -1 17 ": \+ linear examples" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 1 ";" }}} {SECT 1 {PARA 4 "" 0 "" {TEXT -1 9 "Example 1" }}{PARA 256 "" 0 "" {TEXT -1 2 " " }{XPPEDIT 18 0 "d^2*y/(d*x^2) = y;" "6#/*(%\"dG\"\"#% \"yG\"\"\"*&F%F(*$%\"xGF&F(!\"\"F'" }{TEXT -1 3 ", " }{XPPEDIT 18 0 " y(0) = 1" "6#/-%\"yG6#\"\"!\"\"\"" }{TEXT -1 3 ", " }{XPPEDIT 18 0 "y (1) = 0" "6#/-%\"yG6#\"\"\"\"\"!" }{TEXT -1 1 " " }}{PARA 0 "" 0 "" {TEXT -1 59 "First we find an analytical solution and set up a functio n " }{TEXT 266 1 "g" }{TEXT -1 16 " to evaluate it." }}{PARA 0 "" 0 " " {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 315 "de := dif f(y(x),x$2)=y(x);\nbc := y(0)=1,y(1)=0;\ndsolve(\{de,bc\},y(x));\nsol \+ := rhs(%):\nDigits := 14:\n## code to perform numerical evaluation of \+ coefficients of exp(x) and exp(-x)\ny(x)=map(_z->map(_u->`if`(type(_u, \{`*`,anyfunc(polynom(anything,x))\}),\n _u,evalf(_u)),_z),sol); \ng := unapply(rhs(%),x):\nDigits := 10:" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#deG/-%%diffG6$-%\"yG6#%\"xG-%\"$G6$F,\"\"#F)" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#bcG6$/-%\"yG6#\"\"!\"\"\"/-F(6#F+F*" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/-%\"yG6#%\"xG,&*(-%$expG6#\"\"\"\"\"#,&F-! \"\"*$)F*F.F-F-F0-F+6#,$F'F0F-F-*&F/F0-F+F&F-F0" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/-%\"yG6#%\"xG,&*&$\"/(\\Fk " 0 "" {MPLTEXT 1 0 88 "de := diff(y(x),x$2)=y(x);\n bc := y(0)=1,y(1)=0;\ngn := desolveSH(\{de,bc\},y(x),info=true);" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#>%#deG/-%%diffG6$-%\"yG6#%\"xG-%\"$G6$ F,\"\"#F)" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#bcG6$/-%\"yG6#\"\"!\" \"\"/-F(6#F+F*" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%>Using~linear~shoot ing~method.G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6$%SShot,~with~initial~d erivative~0,~has~end~value~->~G$\"+N13V:!\"*" }}{PARA 11 "" 1 "" {XPPMATH 20 "6$%coHomogeneous~DE,~with~initial~value~0~and~derivative~ 1,~has~end~value~->~G$\"+%>,_<\"!\"*" }}{PARA 11 "" 1 "" {XPPMATH 20 " 6$%MInitial~derivative~for~required~solution~->~G$!+'GNIJ\"!\"*" }}} {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 14 "The proce dure " }{TEXT 266 2 "gn" }{TEXT -1 81 " now provides a continuous nume rical solution, ( restricted to the interval from " }{XPPEDIT 18 0 "x \+ = 0" "6#/%\"xG\"\"!" }{TEXT -1 4 " to " }{XPPEDIT 18 0 "x =1" "6#/%\"x G\"\"\"" }{TEXT -1 3 " )." }}{PARA 0 "" 0 "" {TEXT -1 49 "We compare s ome values of the numerical solution " }{TEXT 266 2 "gn" }{TEXT -1 25 " and analytical solution " }{TEXT 266 1 "g" }{TEXT -1 1 "." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 197 "x vals := [seq(i*0.1,i=0..10)]:\nnumvals := evalf(evalf[13](map(gn,xvals ))):\nvals := evalf(evalf[13](map(g,xvals))):\nlinalg[matrix]([[x,''gn '(x)','g(x)'],seq([xvals[i],numvals[i],vals[i]],i=1..11)]);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#K%'matrixG6#7.7%%\"xG-.%#gnG6#F(-%\"gGF,7%$ \"\"!F1$\"\"\"F1$\"+++++5!\"*7%$F3!\"\"$\"+3p\"[t)!#5F:7%$\"\"#F9$\"++ [0dvF " 0 "" {MPLTEXT 1 0 64 "plot([g(x),' gn'(x)],x=0..1,thickness=[1,3],labels=[`x`,`y(x)`]);" }}{PARA 13 "" 1 "" {GLPLOT2D 400 300 300 {PLOTDATA 2 "6&-%'CURVESG6%7S7$$\"\"!F)$\"3)* H++++++5!#<7$$\"3emmm;arz@!#>$\"3$39`Vo[hr*!#=7$$\"3[LL$e9ui2%F0$\"3][ ]+U<$HZ*F37$$\"3nmmm\"z_\"4iF0$\"3&f/2IMvM?*F37$$\"3[mmmT&phN)F0$\"3y \"4j?Chk$*)F37$$\"3CLLe*=)H\\5F3$\"3-;%*oim![n)F37$$\"3gmm\"z/3uC\"F3$ \"3kFO1?0wN%)F37$$\"3%)***\\7LRDX\"F3$\"3KZnhj*H<>)F37$$\"3]mm\"zR'ok; F3$\"34$*\\,hz(H%zF37$$\"3w***\\i5`h(=F3$\"3/m^oG;e)p(F37$$\"3WLLL3En$ 4#F3$\"3avQ$>!4y]uF37$$\"3qmm;/RE&G#F3$\"3Z1G'*pF37$$\"3$******\\PAvr#F3$\"3e'\\,k&4CfnF37$$\"3)** ****\\nHi#HF3$\"3!f])y(p#*Q`'F37$$\"3jmm\"z*ev:JF3$\"3T@'>9JB/cNk%F37$$\"3cmm ;/T1&*\\F3$\"3D2,+Q5$)QWF37$$\"3&em;zRQb@&F3$\"3$4$R`xbHGUF37$$\"3\\** *\\(=>Y2aF3$\"3m!e*o-3qYSF37$$\"39mm;zXu9cF3$\"3#)3FEBeC_QF37$$\"3l*** ***\\y))GeF3$\"3G]JLU@4`OF37$$\"3'*)***\\i_QQgF3$\"3CI2d04))fMF37$$\"3 @***\\7y%3TiF3$\"3_)yq>U&QuKF37$$\"35****\\P![hY'F3$\"3MWd*zG(**pIF37$ $\"3kKLL$Qx$omF3$\"3e*[wT*[n()GF37$$\"3!)*****\\P+V)oF3$\"3Y@T'3k3Vp#F 37$$\"3?mm\"zpe*zqF3$\"3H%eJeRx,_#F37$$\"3%)*****\\#\\'QH(F3$\"3+\"R)p ov!4L#F37$$\"3GKLe9S8&\\(F3$\"3aPF37$$\"3\"HLL$3s?6zF3$\"3#=`I6kW.z\"F37$$\"3a***\\7`Wl7)F3$\"3#4 aj@)*)\\.;F37$$\"3#pmmm'*RRL)F3$\"3MX_7`$[UU\"F37$$\"3Qmm;a<.Y&)F3$\"3 H*e2Ipr:C\"F37$$\"3=LLe9tOc()F3$\"3M7-_4&f41\"F37$$\"3u******\\Qk\\*)F 3$\"33[GWsS6a*)F07$$\"3CLL$3dg6<*F3$\"3iR\\nFG#31(F07$$\"3ImmmmxGp$*F3 $\"3//&3xj./P&F07$$\"3A++D\"oK0e*F3$\"3QE?Kq-PqNF07$$\"3A++v=5s#y*F3$ \"3gID=><,\\=F07$$\"\"\"F)$\"3y&4wB)F^\\l7$$\"+)R'ok;F^\\l$ \"+hz(H%zF^\\l7$$\"+1J:w=F^\\l$\"+H;e)p(F^\\l7$$\"+3En$4#F^\\l$\"+-4y] uF^\\l7$$\"+/RE&G#F^\\l$\"+f=WNsF^\\l7$$\"+D.&4]#F^\\l$\"+J_>'*pF^\\l7 $$\"+vB_Y 2aF^\\l$\"+.3qYSF^\\l7$$\"+yXu9cF^\\l$\"+CeC_QF^\\l7$$\"+\\y))GeF^\\l$ \"+V@4`OF^\\l7$$\"+i_QQgF^\\l$\"+14))fMF^\\l7$$\"+!y%3TiF^\\l$\"+BaQuK F^\\l7$$\"+O![hY'F^\\l$\"+*G(**pIF^\\l7$$\"+#Qx$omF^\\l$\"+&*[n()GF^\\ l7$$\"+u.I%)oF^\\l$\"+U'3Vp#F^\\l7$$\"+(pe*zqF^\\l$\"+(Rx,_#F^\\l7$$\" +C\\'QH(F^\\l$\"+qv!4L#F^\\l7$$\"+8S8&\\(F^\\l$\"+x[z`@F^\\l7$$\"+0#=b q(F^\\l$\"+3Efp>F^\\l7$$\"+2s?6zF^\\l$\"+UYM!z\"F^\\l7$$\"+IXaE\")F^\\ l$\"+$)*)\\.;F^\\l7$$\"+l*RRL)F^\\l$\"+b$[UU\"F^\\l7$$\"+`<.Y&)F^\\l$ \"+%pr:C\"F^\\l7$$\"+8tOc()F^\\l$\"+6&f41\"F^\\l7$$\"+\\Qk\\*)F^\\l$\" +\"39T&*)F[\\l7$$\"+p0;r\"*F^\\l$\"+VG#31(F[\\l7$$\"+lxGp$*F^\\l$\"+_O Sq`F[\\l7$$\"+!oK0e*F^\\l$\"+\"Gq.d$F[\\l7$$\"+<5s#y*F^\\l$\"+M<,\\=F[ \\l7$Fez$!%VK!#:-F[[l6&F][lF(F^[lF(-Fb[l6#\"\"$-%+AXESLABELSG6$%\"xG%% y(x)G-%%VIEWG6$;F(Fez%(DEFAULTG" 1 2 0 1 10 0 2 9 1 4 2 1.000000 45.000000 45.000000 0 0 "Curve 1" "Curve 2" }}}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 1 ";" }}}}{SECT 1 {PARA 4 "" 0 "" {TEXT -1 9 "Example 2" }}{PARA 256 "" 0 "" {TEXT -1 2 " " }{XPPEDIT 18 0 "d^2*y/(d*x^2)+2;" "6#,&*(%\"dG\"\"#%\"yG\"\"\"*&F %F(*$%\"xGF&F(!\"\"F(F&F(" }{TEXT -1 1 " " }{XPPEDIT 18 0 "dy/dx+2*y = exp(-x)+sin(2*x);" "6#/,&*&%#dyG\"\"\"%#dxG!\"\"F'*&\"\"#F'%\"yGF'F', &-%$expG6#,$%\"xGF)F'-%$sinG6#*&F+F'F2F'F'" }{TEXT -1 3 ", " } {XPPEDIT 18 0 "y(1) = 1" "6#/-%\"yG6#\"\"\"F'" }{TEXT -1 3 ", " } {XPPEDIT 18 0 "y(3) = -1" "6#/-%\"yG6#\"\"$,$\"\"\"!\"\"" }{TEXT -1 1 " " }}{PARA 0 "" 0 "" {TEXT -1 59 "First we find an analytical solutio n and set up a function " }{TEXT 266 1 "g" }{TEXT -1 17 " to evaluate \+ it. " }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 436 "de := diff(y(x),x$2)+2*diff(y(x),x)+2*y(x)=exp(-x)+s in(2*x);\nbc := y(1)=1,y(3)=-1;\ndsolve(\{de,bc\},y(x)):\ny(x)=map(sim plify@factor,collect(frontend(expand,[rhs(%)]),\{cos(x),sin(x)\}));\ns ol := rhs(%):\nDigits := 14:\n## code to perform partial numerical eva luation of constants in this special case\ny(x)=map(_z->map(_u->`if`(t ype(_u,\{`*`,anyfunc(polynom(anything,x)),rational\}),_u,evalf(_u)),_z ),sol); \ng := unapply(rhs(%),x):\nDigits := 10:\n" }}{PARA 11 "" 1 " " {XPPMATH 20 "6#>%#deG/,(-%%diffG6$-%\"yG6#%\"xG-%\"$G6$F-\"\"#\"\"\" *&F1F2-F(6$F*F-F2F2*&F1F2F*F2F2,&-%$expG6#,$F-!\"\"F2-%$sinG6#,$*&F1F2 F-F2F2F2" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#bcG6$/-%\"yG6#\"\"\"F*/ -F(6#\"\"$!\"\"" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#/-%\"yG6#%\"xG,,*&# \"\"\"\"#5F+**-%$expG6#,$F'!\"\"F+-%$cosG6#F+F2,>F,F2*&\"\"'F+-F/6#\" \"$F+F2*&\"\"%F+-F/F5F+F+*(\"#9F+)F3\"\"#F+F>F+F2*(\"\")F+)F3F=F+F>F+F 2*(\"#=F+FAF+F9F+F+*(\"#[F+FEF+F9F+F2*(\"#KF+)F3F8F+F9F+F+*&\"#?F+FAF+ F+*(-%$sinGF5F+F3F+F>F+F+**F=F+FPF+F>F+)F3F;F+F2**F;F+FPF+F3F+F9F+F+** \"#;F+FPF+F9F+FSF+F2**FVF+FPF+F9F+)F3\"\"&F+F+F+-F4F&F+F+F2*&#F+F,F+** F.F+,>FNF2**FVF+FPF+F9F+FXF+F+**FVF+FPF+F9F+FSF+F2**F=F+FPF+F>F+FSF+F2 *(FDF+FEF+F>F+F2*(F,F+FAF+F>F+F2*(FKF+FLF+F9F+F+*(FIF+FEF+F9F+F2*(FGF+ FAF+F9F+F+*&F8F+F9F+F2*&FNF+FAF+F+*&\"#7F+F>F+F+**F;F+FPF+F3F+F>F+F+** F;F+FPF+F3F+F9F+F+F+-FQF&F+FPF2F+F+*&#F+FYF+-F46#,$*&FBF+F'F+F+F+F2*&# F+F,F+-FQF[pF+F2F.F+" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/-%\"yG6#%\"xG ,,*($\"/6q'HgKn\"!#7\"\"\"-%$expG6#,$F'!\"\"F--%$cosGF&F-F-*($\"/a'y&y +x')!#8F-F.F--%$sinGF&F-F2*&#F-\"\"&F--F46#,$*&\"\"#F-F'F-F-F-F2*&#F- \"#5F--F:F?F-F2F.F-" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 " " {TEXT -1 131 "We can construct a numerical solution which extends be yond the points given by the boundary conditions to cover the interval from " }{XPPEDIT 18 0 "x = 0" "6#/%\"xG\"\"!" }{TEXT -1 6 " to " } {XPPEDIT 18 0 "x = 10" "6#/%\"xG\"#5" }{TEXT -1 1 "." }}{PARA 0 "" 0 " " {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 121 "de := dif f(y(x),x$2)+2*diff(y(x),x)+2*y(x)=exp(-x)+sin(2*x);\nbc := y(1)=1,y(3) =-1;\ngn := desolveSH(\{de,bc\},y(x),x=0..10);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#deG/,(-%%diffG6$-%\"yG6#%\"xG-%\"$G6$F-\"\"#\"\"\"*& F1F2-F(6$F*F-F2F2*&F1F2F*F2F2,&-%$expG6#,$F-!\"\"F2-%$sinG6#,$*&F1F2F- F2F2F2" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#bcG6$/-%\"yG6#\"\"\"F*/-F (6#\"\"$!\"\"" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 14 "The procedure " }{TEXT 266 2 "gn" }{TEXT -1 45 " provides the continuous numerical solution. " }}{PARA 0 "" 0 "" {TEXT -1 49 "W e compare some values of the numerical solution " }{TEXT 266 2 "gn" } {TEXT -1 25 " and analytical solution " }{TEXT 266 1 "g" }{TEXT -1 2 " . " }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 199 "xvals := [seq(1+i*0.2,i=0..10)]:\nnumvals := evalf(e valf[13](map(gn,xvals))):\nvals := evalf(evalf[13](map(g,xvals))):\nli nalg[matrix]([[x,''gn'(x)','g(x)'],seq([xvals[i],numvals[i],vals[i]],i =1..11)]);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#K%'matrixG6#7.7%%\"xG-.% #gnG6#F(-%\"gGF,7%$\"\"\"\"\"!F0$\"+++++5!\"*7%$\"#7!\"\"$!+U?F&G#!#5F :7%$\"#9F9$!+[ws05F5F@7%$\"#;F9$!+57OU9F5FE7%$\"#=F9$!+\"o+jj\"F5FJ7%$ \"#?F9$!+oyTo;F5FO7%$\"#AF9$!+xm)4g\"F5FT7%$\"#CF9$!+)=)=y9F5FY7%$\"#E F9$!+NPCG8F5Fhn7%$\"#GF9$!+%*Rlm6F5F]o7%$\"#IF9$!+++++5F5FboQ(pprint16 \"" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 102 "T he graph of the numerical solution can be plotted together with the gr aph of the analytical solution." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 65 "plot([g(x),'gn'(x)],x=0..10, thickness=[1,3],labels=[`x`,`y(x)`]);" }}{PARA 13 "" 1 "" {GLPLOT2D 455 348 348 {PLOTDATA 2 "6&-%'CURVESG6%7in7$$\"\"!F)$\"3=+6q'HgKv\"!#; 7$$\"3WmmmT&)G\\a!#>$\"3'y8#eF696;F,7$$\"3GLLL3x&)*3\"!#=$\"3EE;9hF$\\ Z\"F,7$$\"3$*****\\ilyM;F6$\"30\"3q*op![M\"F,7$$\"3emmm;arz@F6$\"37**e ^-O)3A\"F,7$$\"3;L$e*)4bQl#F6$\"3$>6]K0i\"=6F,7$$\"3v***\\7y%*z7$F6$\" 3$p-zP77--\"F,7$$\"3Lm;ajW8-OF6$\"3oPE!o9:.F*!#<7$$\"3[LL$e9ui2%F6$\"3 ])y\"pz!pfQ)FR7$$\"3z***\\(oMrU^F6$\"3Q4b(y+Lyc'FR7$$\"3nmmm\"z_\"4iF6 $\"3i_>WF!)[z\\FR7$$\"3Unmmm6m#G(F6$\"3xAT?!)y<,OFR7$$\"39ommT&phN)F6$ \"3&)3]5C+()HCFR7$$\"3A,+v=ddC%*F6$\"3km)RRu^NX\"FR7$$\"3KLLe*=)H\\5FR $\"3S(pEqX.&*['F67$$\"3smm\"z/3uC\"FR$!3o3#Q'f:y#\\%F67$$\"3!****\\7LR DX\"FR$!3YK$o'e5:\\6FR7$$\"3[LLekGhe:FR$!3)*))=lA*=\\P\"FR7$$\"3%om;zR 'ok;FR$!3Jk5QG*ot_\"FR7$$\"3OLL3_(>/x\"FR$!3$oYg;FR7$$\"33++D1J:w =FR$!3S'y.zX;Qm\"FR7$$\"3+n;HdG\"\\)>FR$!3gV(z,vK,n\"FR7$$\"3oLLL3En$4 #FR$!3c5`lsF8Y;FR7$$\"3#pmmT!RE&G#FR$!3o(4VB.KMb\"FR7$$\"3D+++D.&4]#FR $!39Km.[(pYS\"FR7$$\"3;+++vB_A@%p*=1\"FR7$$\"3&om;z*ev:JFR$!3$H9p[CE#>!*F67$$\"3_LLL347TLFR$!33 !G![\"**GS2(F67$$\"3nLLLLY.KNFR$!3'e0WJQ`9R&F67$$\"33++D\"o7Tv$FR$!3%4 0I&*)*HDU$F67$$\"3?LLL$Q*o]RFR$!3vwXW!y(\\DY2aFR$\"3U' \\^Gd`q;#F67$$\"3Znm;zXu9cFR$\"3/6_b'zd+A\"F67$$\"34+++]y))GeFR$\"3;:j mWS(eU\"F07$$\"3H++]i_QQgFR$!3`*fyr`&4N$)F07$$\"3b++D\"y%3TiFR$!3?CBIq Jgc:F67$$\"3+++]P![hY'FR$!39x\"[uD<&y>F67$$\"3iKLL$Qx$omFR$!3_A[Z5!4M' >F67$$\"3Y+++v.I%)oFR$!3w%Qot.L@b\"F67$$\"3?mm\"zpe*zqFR$!3i6&H<^*)f** )F07$$\"3;,++D\\'QH(FR$!3'>\"e?EJ@+7!#?7$$\"3%HL$e9S8&\\(FR$\"3n\"z7x* =h?%)F07$$\"3s++D1#=bq(FR$\"3!ejN%Q5!pf\"F67$$\"3\"HLL$3s?6zFR$\"31*=h 3U:&p?F67$$\"3a***\\7`Wl7)FR$\"3'o>MEy*e$>#F67$$\"3enmmm*RRL)FR$\"3?!o p=Mt;$>F67$$\"3%zmmTvJga)FR$\"3+G6nJM1A8F67$$\"3]MLe9tOc()FR$\"3d9A\") *))3\\\"[F07$$\"31,++]Qk\\*)FR$!3_i*3m,F_s$F07$$\"3![LL3dg6<*FR$!3S'y^ /$))[!G\"F67$$\"3%ymmmw(Gp$*FR$!3oUU_(Q_2*=F67$$\"3C++D\"oK0e*FR$!3%zC A=KN+A#F67$$\"35,+v=5s#y*FR$!3!z/x\"F^bl$!+A%e&>;F^bl7$$\"+1J:w=F^bl$!+ek\"Qm\"F^bl7$$\"+dG\"\\) >F^bl$!+]F8q;F^bl7$$\"+3En$4#F^bl$!+tF8Y;F^bl7$$\"+/RE&G#F^bl$!+K?V`:F ^bl7$$\"+D.&4]#F^bl$!+[(pYS\"F^bl7$$\"+vB_!*Fb`l7$$\"+347TLF^bl$!+%** GS2(Fb`l7$$\"+LY.KNF^bl$!+'Q`9R&Fb`l7$$\"+\"o7Tv$F^bl$!+#**HDU$Fb`l7$$ \"+$Q*o]RF^bl$!+$y(\\DY2aF^bl$\"+wN0n@Fb`l7$$\"+yXu9cF^bl$\"+-y0?7Fb`l7$$\"+\\y))GeF^ bl$\"+%4ueU\"F\\`l7$$\"+i_QQgF^bl$!+;b4N$)F\\`l7$$\"+!y%3TiF^bl$!+nJgc :Fb`l7$$\"+O![hY'F^bl$!+cs^y>Fb`l7$$\"+#Qx$omF^bl$!+7!4M'>Fb`l7$$\"+u. I%)oF^bl$!+SI8_:Fb`l7$$\"+(pe*zqF^bl$!+Z&*)f**)F\\`l7$$\"+C\\'QH(F^bl$ !+fN@+7!#77$$\"+8S8&\\(F^bl$\"+M=h?%)F\\`l7$$\"+0#=bq(F^bl$\"+N5!pf\"F b`l7$$\"+2s?6zF^bl$\"+>a^p?Fb`l7$$\"+IXaE\")F^bl$\"+$y*e$>#Fb`l7$$\"+l *RRL)F^bl$\"+XLnJ>Fb`l7$$\"+`<.Y&)F^bl$\"+OM1A8Fb`l7$$\"+8tOc()F^bl$\" +e*3\\\"[F\\`l7$$\"+\\Qk\\*)F^bl$!+tpADPF\\`l7$$\"+p0;r\"*F^bl$!+C))[! G\"Fb`l7$$\"+lxGp$*F^bl$!+%Q_2*=Fb`l7$$\"+!oK0e*F^bl$!+@`.?AFb`l7$$\"+ <5s#y*F^bl$!+bG(=<#Fb`l7$Fd^l$!+lj)Gt\"Fb`l-Fi^l6&F[_lF(F\\_lF(-F__l6# \"\"$-%+AXESLABELSG6$%\"xG%%y(x)G-%%VIEWG6$;F(Fd^l%(DEFAULTG" 1 2 0 1 10 0 2 9 1 4 2 1.000000 45.000000 45.000000 0 0 "Curve 1" "Curve 2" }} }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 1 ";" }}}}{SECT 1 {PARA 4 "" 0 "" {TEXT -1 9 "Example 3" }}{PARA 0 " " 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 138 "This example is t aken from \"Numerical Methods using Matlab\", 3rd edition, by John H. \+ Matthews and Kurtis D. Fink, Prentice Hall, page 499." }}{PARA 256 "" 0 "" {TEXT -1 1 "(" }{XPPEDIT 18 0 "1+x^2" "6#,&\"\"\"F$*$%\"xG\"\"#F$ " }{TEXT -1 3 ") " }{XPPEDIT 18 0 "d^2*y/(d*x^2)-2*x;" "6#,&*(%\"dG\" \"#%\"yG\"\"\"*&F%F(*$%\"xGF&F(!\"\"F(*&F&F(F+F(F," }{TEXT -1 1 " " } {XPPEDIT 18 0 "dy/dx+2*y = 1+x^2;" "6#/,&*&%#dyG\"\"\"%#dxG!\"\"F'*&\" \"#F'%\"yGF'F',&F'F'*$%\"xGF+F'" }{TEXT -1 3 ", " }{XPPEDIT 18 0 "y(0 ) = 5/4" "6#/-%\"yG6#\"\"!*&\"\"&\"\"\"\"\"%!\"\"" }{TEXT -1 3 ", " } {XPPEDIT 18 0 "y(4) = -19/20" "6#/-%\"yG6#\"\"%,$*&\"#>\"\"\"\"#?!\"\" F-" }{TEXT -1 1 " " }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 " > " 0 "" {MPLTEXT 1 0 134 "de := (1+x^2)*diff(y(x),x$2)-2*x*diff(y(x), x)+2*y(x)=1+x^2;\nbc := y(0)=5/4, y(4)=-19/20;\ndsolve(\{de,bc\},y(x)) :\ng := unapply(rhs(%),x);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#deG/, (*&,&\"\"\"F)*$)%\"xG\"\"#F)F)F)-%%diffG6$-%\"yG6#F,-%\"$G6$F,F-F)F)*( F-F)F,F)-F/6$F1F,F)!\"\"*&F-F)F1F)F)F(" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#bcG6$/-%\"yG6#\"\"!#\"\"&\"\"%/-F(6#F-#!#>\"#?" }}{PARA 11 " " 1 "" {XPPMATH 20 "6#>%\"gGf*6#%\"xG6\"6$%)operatorG%&arrowGF(,.*&,(# \"$p\"\"#?\"\"\"*&\"\"#F2-%'arctanG6#\"\"%F2!\"\"*&#\"#:\"\")F2-%#lnG6 #\"# " 0 "" {MPLTEXT 1 0 121 "de := (1+x^2)*diff(y(x),x$2)-2*x*diff(y(x),x)+2*y(x)=1+x^2;\nbc : = y(0)=5/4,y(4)=-19/20;\ngn := desolveSH(\{de,bc\},x=0..10);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#deG/,(*&,&\"\"\"F)*$)%\"xG\"\"#F)F)F)-%%d iffG6$-%\"yG6#F,-%\"$G6$F,F-F)F)*(F-F)F,F)-F/6$F1F,F)!\"\"*&F-F)F1F)F) F(" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#bcG6$/-%\"yG6#\"\"!#\"\"&\"\" %/-F(6#F-#!#>\"#?" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 14 "The procedure " }{TEXT 266 2 "gn" }{TEXT -1 83 " now prov ides the continuous numerical solution, ( restricted to the interval f rom " }{XPPEDIT 18 0 "x = 0" "6#/%\"xG\"\"!" }{TEXT -1 4 " to " } {XPPEDIT 18 0 "x =4" "6#/%\"xG\"\"%" }{TEXT -1 2 ")." }}{PARA 0 "" 0 " " {TEXT -1 49 "We compare some values of the numerical solution " } {TEXT 266 2 "gn" }{TEXT -1 25 " and analytical solution " }{TEXT 266 1 "g" }{TEXT -1 1 "." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 197 "xvals := [seq(i*0.4,i=0..10)]:\nnumvals \+ := evalf(evalf[13](map(gn,xvals))):\nvals := evalf(evalf[13](map(g,xva ls))):\nlinalg[matrix]([[x,''gn'(x)','g(x)'],seq([xvals[i],numvals[i], vals[i]],i=1..11)]);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#K%'matrixG6#7. 7%%\"xG-.%#gnG6#F(-%\"gGF,7%$\"\"!F1$\"++++]7!\"*F27%$\"\"%!\"\"$\"+hX ]E8F4F97%$\"\")F8$\"+1>T*=\"F4F>7%$\"#7F8$\"+JZ'3#*)!#5$\"+KZ'3#*)FE7% $\"#;F8$\"+d5(=(\\FEFK7%$\"#?F8$\"+#\\/J\\'!#6$\"+&\\/J\\'FR7%$\"#CF8$ !+:OD.NFEFX7%$\"#GF8$!+5\\i-qFEFgn7%$\"#KF8$!+l^()=%*FEF\\o7%$\"#OF8$! +e$3n.\"F4Fao7%$\"#SF8$!+++++&*FEFfoQ(pprint26\"" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 95 "We plot the graph of the \+ numerical solution together with the graph of the analytical solution. " }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 64 "plot([g(x),'gn'(x)],x=0..4,thickness=[1,3],labels=[`x`,`y(x)`] );" }}{PARA 13 "" 1 "" {GLPLOT2D 400 300 300 {PLOTDATA 2 "6&-%'CURVESG 6%7S7$$\"\"!F)$\"3+++++++]7!#<7$$\"3Hmmmm;')=()!#>$\"3O'o1;!\\o'G\"F,7 $$\"3RLLLe'40j\"!#=$\"3-jcejnP48F,7$$\"3mmmm;6m$[#F6$\"3%pyn'orxC8F,7$ $\"3fmmm;yYULF6$\"3F2dr*)4qH8F,7$$\"3%HLL$eF>(>%F6$\"3U3*yIL)RC8F,7$$ \"3Qmmm\">K'*)\\F6$\"308)oxBY2J\"F,7$$\"3P*****\\Kd,\"eF6$\"3'y=S)QP;) G\"F,7$$\"3-mmm\"fX(emF6$\"3')\\K@?YDc7F,7$$\"3.*****\\U7Y](F6$\"3_'GP b$*Hj@\"F,7$$\"3'QLLLV!pu$)F6$\"3%3,4p@2u;\"F,7$$\"3xmmm;c0T\"*F6$\"3z karf>A=6F,7$$\"3#*******H,Q+5F,$\"3O?IF,$\"3e7Dq%fp9f\"F67$$\"3immmTc-)*>F,$\"3[I\\:\\>]1nF07$$\"3Mmm;f`@ '3#F,$!3!R&y>1kMvFF07$$\"3y****\\nZ)H;#F,$!3)*e!)zD!))=4\"F67$$\"3Ymmm Jy*eC#F,$!3'*GBEB$[c&>F67$$\"3')******R^bJBF,$!356)4`Vlj#GF67$$\"3f*** **\\5a`T#F,$!3QHhq%pNDl$F67$$\"3o****\\7RV'\\#F,$!3N&GpX,[PU%F67$$\"3k *****\\@fke#F,$!3!Gfl.,UIC&F67$$\"3/LLL`4NnEF,$!3?V%f#*zT?%fF67$$\"3#* ******\\,s`FF,$!33$eju)>TXmF67$$\"3[mm;zM)>$GF,$!3a6wYpq-TsF67$$\"3$** *****pfa9xYlN5F,7$$\" 3_mmm1^rZPF,$!3j>Z+T\"pv-\"F,7$$\"34++]sI@KQF,$!3_%oi'QUc55F,7$$\"34++ ]2%)38RF,$!3!o\"=>h::f)*F67$$\"\"%F)$!33:++++++&*F6-%'COLOURG6&%$RGBG$ \"#5!\"\"F(F(-%*THICKNESSG6#\"\"\"-F$6%7S7$F($\"++++]7!\"*7$$\"+m;')=( )!#6$\"+-\\o'G\"Fj[l7$$\"+e'40j\"!#5$\"+knP48Fj[l7$$\"+<6m$[#Fd\\l$\"+ prxC8Fj[l7$$\"+(>%Fd\\l$\"+L$)RC8Fj[l 7$$\"+\">K'*)\\Fd\\l$\"+Qiu58Fj[l7$$\"+Dt:5eFd\\l$\"+RP;)G\"Fj[l7$$\"+ \"fX(emFd\\l$\"+?YDc7Fj[l7$$\"+DCh/vFd\\l$\"+O*Hj@\"Fj[l7$$\"+L/pu$)Fd \\l$\"+A=6Fj[l7$$\"+I,Q+5Fj[l$\"+O3gc 5Fj[l7$$\"+]*3q3\"Fj[l$\"+Qt(o))*Fd\\l7$$\"+q=\\q6Fj[l$\"+0+@\"=*Fd\\l 7$$\"+fBIY7Fj[l$\"+=?x,&)Fd\\l7$$\"+j$[kL\"Fj[l$\"+'o5@l(Fd\\l7$$\"+`Q \"GT\"Fj[l$\"+zc#=!pFd\\l7$$\"+s]k,:Fj[l$\"+Igz**fFd\\l7$$\"+`dF!e\"Fj [l$\"+yV2!=&Fd\\l7$$\"+sgam;Fj[l$\"+a?AjUFd\\l7$$\"+Fj[l$\"+$fp9f\"Fd\\l7$$ \"+Uc-)*>Fj[l$\"+6>]1nF^\\l7$$\"+f`@'3#Fj[l$!+\"RY`x#F^\\l7$$\"+nZ)H;# Fj[l$!+@!))=4\"Fd\\l7$$\"+Ky*eC#Fj[l$!+F$[c&>Fd\\l7$$\"+S^bJBFj[l$!+Na OEGFd\\l7$$\"+0TN:CFj[l$!+&pNDl$Fd\\l7$$\"+7RV'\\#Fj[l$!+5![PU%Fd\\l7$ $\"+:#fke#Fj[l$!+5?/V_Fd\\l7$$\"+`4NnEFj[l$!+(zT?%fFd\\l7$$\"+],s`FFj[ l$!+))>TXmFd\\l7$$\"+zM)>$GFj[l$!+oq-TsFd\\l7$$\"+qfa " 0 "" {MPLTEXT 1 0 1 ";" }}}}{SECT 1 {PARA 4 "" 0 "" {TEXT -1 9 "Example 4" }}{PARA 256 "" 0 "" {TEXT -1 2 " " }{XPPEDIT 18 0 "d^2*y/(d*x^2)+4;" "6#,&*(%\"dG\"\"#%\"yG\"\"\"*&F %F(*$%\"xGF&F(!\"\"F(\"\"%F(" }{TEXT -1 1 " " }{XPPEDIT 18 0 "dy/dx+4* y = sin(2*x);" "6#/,&*&%#dyG\"\"\"%#dxG!\"\"F'*&\"\"%F'%\"yGF'F'-%$sin G6#*&\"\"#F'%\"xGF'" }{TEXT -1 3 ", " }{XPPEDIT 18 0 "y(0) = 3" "6#/- %\"yG6#\"\"!\"\"$" }{TEXT -1 3 ", " }{XPPEDIT 18 0 "y(2) = 1" "6#/-% \"yG6#\"\"#\"\"\"" }{TEXT -1 1 " " }}{PARA 0 "" 0 "" {TEXT -1 59 "Firs t we find an analytical solution and set up a function " }{TEXT 266 1 "g" }{TEXT -1 16 " to evaluate it." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 320 "de := diff(y(x),x$2)+4*diff (y(x),x)+4*y(x)=sin(2*x);\nbc := y(0)=3,y(2)=1;\ndsolve(\{de,bc\},y(x) );\nex := rhs(%):\nDigits := 14:\n## code to perform partial numerical evaluation of constants\ny(x)=map(_z->map(_u->`if`(type(_u,\{anyfunc( polynom(anything,x)),rational\}),_u,evalf(_u)),_z),ex);\ng := unapply( rhs(%),x):\nDigits := 10:" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#deG/,( -%%diffG6$-%\"yG6#%\"xG-%\"$G6$F-\"\"#\"\"\"*&\"\"%F2-F(6$F*F-F2F2*&F4 F2F*F2F2-%$sinG6#,$*&F1F2F-F2F2" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%# bcG6$/-%\"yG6#\"\"!\"\"$/-F(6#\"\"#\"\"\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/-%\"yG6#%\"xG,(*&#\"#D\"\")\"\"\"-%$expG6#,$*&\"\"#F-F 'F-!\"\"F-F-*&#F-\"#;F-**F.F-F'F-,**&F+F--%%coshG6#\"\"%F-F-*&F+F--%%s inhGF=F-F4-%$cosGF=F4F,F4F-,&F;F-F@F4F4F-F4*&#F-F,F--FC6#,$*&F3F-F'F-F -F-F4" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/-%\"yG6#%\"xG,(*&#\"#D\"\") \"\"\"-%$expG6#,$*&\"\"#F-F'F-!\"\"F-F-*($\"/pvt\"41N#!#7F-F.F-F'F-F-* &#F-F,F--%$cosG6#,$*&F3F-F'F-F-F-F4" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 71 "A numerical solution can be constructed by the linear shooting method. " }}{PARA 0 "" 0 "" {TEXT -1 0 "" }} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 104 "de := diff(y(x),x$2)+4*diff (y(x),x)+4*y(x)=sin(2*x);\nbc := y(0)=3,y(2)=1;\ngn := desolveSH(\{de, bc\},y(x));" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#deG/,(-%%diffG6$-%\" yG6#%\"xG-%\"$G6$F-\"\"#\"\"\"*&\"\"%F2-F(6$F*F-F2F2*&F4F2F*F2F2-%$sin G6#,$*&F1F2F-F2F2" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#bcG6$/-%\"yG6# \"\"!\"\"$/-F(6#\"\"#\"\"\"" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 14 "The procedure " }{TEXT 266 2 "gn" }{TEXT -1 83 " now provides the continuous numerical solution, ( restricted to the \+ interval from " }{XPPEDIT 18 0 "x = 0" "6#/%\"xG\"\"!" }{TEXT -1 4 " t o " }{XPPEDIT 18 0 "x = 2;" "6#/%\"xG\"\"#" }{TEXT -1 2 ")." }}{PARA 0 "" 0 "" {TEXT -1 49 "We compare some values of the numerical solutio n " }{TEXT 266 2 "gn" }{TEXT -1 25 " and analytical solution " }{TEXT 266 1 "g" }{TEXT -1 1 "." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 197 "xvals := [seq(i*0.2,i=0..10)]:\nnu mvals := evalf(evalf[13](map(gn,xvals))):\nvals := evalf(evalf[13](map (g,xvals))):\nlinalg[matrix]([[x,''gn'(x)','g(x)'],seq([xvals[i],numva ls[i],vals[i]],i=1..11)]);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#K%'matri xG6#7.7%%\"xG-.%#gnG6#F(-%\"gGF,7%$\"\"!F1$\"\"$F1$\"+++++I!\"*7%$\"\" #!\"\"$\"+>%Q48&F6F;7%$\"\"%F:$\"+9=&=a&F6$\"+:=&=a&F67%$\"\"'F:$\"+ek (Q9&F6$\"+fk(Q9&F67%$\"\")F:$\"+=]@JWF6FN7%$\"#5F:$\"+)pWhl$F6FS7%$\"# 7F:$\"+dsdMHF6FX7%$\"#9F:$\"+8*y*3BF6Fgn7%$\"#;F:$\"+/\\A&y\"F6F\\o7%$ \"#=F:$\"+-Xd`8F6Fao7%$\"#?F:$\"+++++5F6FfoQ(pprint36\"" }}}{PARA 0 " " 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 180 "We can construct \+ a solution which extends beyond the points given by the boundary condi tions and simultaneously construct a numerical procedure for the deriv ative of the solution. " }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 142 "de := diff(y(x),x$2)+4*diff(y(x),x )+4*y(x)=sin(2*x);\nbc := y(0)=3,y(2)=1;\n(gn,dgn) := desolveSH(\{de,b c\},y(x),x=-0.2..3,output=procedure_pair);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#deG/,(-%%diffG6$-%\"yG6#%\"xG-%\"$G6$F-\"\"#\"\"\"*& \"\"%F2-F(6$F*F-F2F2*&F4F2F*F2F2-%$sinG6#,$*&F1F2F-F2F2" }}{PARA 11 " " 1 "" {XPPMATH 20 "6#>%#bcG6$/-%\"yG6#\"\"!\"\"$/-F(6#\"\"#\"\"\"" }} }{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 67 "plot([g(x),'gn'(x)],x=-0.2..3,thickness=[1,3],labels=[`x`,`y(x)` ]);" }}{PARA 13 "" 1 "" {GLPLOT2D 400 300 300 {PLOTDATA 2 "6&-%'CURVES G6%7jn7$$!35+++++++?!#=$!3Qfn%R3ulY#!#<7$$!3!pmmmwAc#=F*$!3cvi<'exqz\" F-7$$!3SLLLLbC^;F*$!3]$Ha))Q\"oq6F-7$$!3!********HooZ\"F*$!3?YK=Q(y?&e F*7$$!3qmmmm5\\-8F*$!3[!R!et[zdQ!#>7$$!3ILLLojw]6F*$\"313.atg')pSF*7$$ !3?++++nT!***FB$\"358H(p>'**e#)F*7$$!3_nmm;(pJZ)FB$\"30!f]H%GO>7F-7$$! 3WLLLLF#f&pFB$\"3w7g:V+`)e\"F-7$$!30++++pJVNFB$\"3)y-h)3auNBF-7$$!3`mm mm1628!#?$\"3?ov.m]PxHF-7$$\"3[KLLLd^/LFB$\"3WJ@aKL]FNF-7$$\"3iJLLLDuR nFB$\"3!4-t)zZ_\"*RF-7$$\"3\")******HU'e,\"F*$\"3!)=BrtM&oP%F-7$$\"3Ym mm1Uvd8F*$\"3Y9yq/E.%p%F-7$$\"3?LLL`dq\"*>F*$\"3(*R2dyoZE^F-7$$\"3Tmmm 1e\"*>BF*$\"3'z]k+Qv>G&F-7$$\"3g******fe7[EF*$\"3-aVwcPZ(R&F-7$$\"3Emm mm6c()HF*$\"3'*)R_]VW'zaF-7$$\"3$HLLLZ'*pK$F*$\"3xKs!Rq$QGbF-7$$\"3Omm m1KMlOF*$\"3wECcYcwZbF-7$$\"3y******R**o.SF*$\"3?%=?J))f;a&F-7$$\"3gLL LV6s^VF*$\"38pu]\")\\E7bF-7$$\"3UnmmYBv*p%F*$\"3q#o#[^JjiaF-7$$\"3(HLL L\\WGJ&F*$\"3.;u?wMlM`F-7$$\"3;,++S5/.gF*$\"3'y!Qs1R%H9&F-7$$\"3y***** **frgp'F*$\"3r:\\o&Rr[\"\\F-7$$\"3O+++g\\$RO(F*$\"3U>.7(*z:tYF-7$$\"3m LLLt)=/(zF*$\"3i:s>]fiUWF-7$$\"3Ammm1pe\"p)F*$\"3e)3zJ#*zA;%F-7$$\"3%y mmm#3^-$*F*$\"3K(QgKieU#RF-7$$\"3,+++egJ,5F-$\"3_5#RwKX6l$F-7$$\"3_mmm -1Ak5F-$\"3)QhJ$>j_:MF-7$$\"32+++eoBL6F-$\"3Un$Ra\\_e;$F-7$$\"31+++am& *)>\"F-$\"3S/wXz(3\"QHF-7$$\"3!ommmOGvE\"F-$\"3F)3co_A=r#F-7$$\"3qmmm/ ')\\I8F-$\"3(yZG]2[Y^#F-7$$\"3QLLL80U)R\"F-$\"3/+3UmS^8BF-7$$\"3ILLL(G s*o9F-$\"3PR.5^5;<@F-7$$\"3,+++9yQI:F-$\"3ql!p(>iSc>F-7$$\"3QLLLl#=nf \"F-$\"33m\"[C0RIz\"F-7$$\"3))*****>6W_m\"F-$\"3Znn^iY&\\j\"F-7$$\"3)* *****RG$GKPn\"p=F-$\"3***4#zE3F-$\"3G3\"o[6 )446F-7$$\"3.+++?h(H+#F-$\"3-bq0**\\f_**F*7$$\"3-LLL$y'el?F-$\"3)y:kLL -!))*)F*7$$\"3')*****fxOS8#F-$\"3I#H/h[gA+)F*7$$\"39mmm%)GW)>#F-$\"3\\ 4h(frdq8(F*7$$\"3)******f#ewlAF-$\"37X6@9n9%H'F*7$$\"3Wmmm1jeJBF-$\"3p H*fVJ'=GbF*7$$\"3]******\\U\\+CF-$\"31a]#H`pay%F*7$$\"3ULLL*ygoY#F-$\" 3bo=P>)*QDTF*7$$\"32LLLh,tMDF-$\"3ld;T@Rq/NF*7$$\"3qmmmSv.-EF-$\"3\"\\ !3[R_'>%HF*7$$\"3u*****>.')Qm#F-$\"3?LUtN*G,Z#F*7$$\"3kmmm#QrZt#F-$\"3 !**)H1g#p9)>F*7$$\"3%HLL`3s\")z#F-$\"3#=[6imf0f\"F*7$$\"33+++e/xlGF-$ \"3r-xP&)yp?7F*7$$\"3!)*****fsq/$HF-$\"3g;28C'H+6*FB7$$\"\"$\"\"!$\"3) *RT!**G9AD'FB-%'COLOURG6&%$RGBG$\"#5!\"\"$Fi^lFi^lFc_l-%*THICKNESSG6# \"\"\"-F$6%7jn7$$!\"#Fb_l$!+%3ulY#!\"*7$$!+nFiD=!#5$!+(exqz\"F``l7$$!+ MbC^;Fd`l$!+\"R\"oq6F``l7$$!++$ooZ\"Fd`l$!+O(y?&eFd`l7$$!+n5\\-8Fd`l$! +f\\zdQ!#67$$!+ojw]6Fd`l$\"+%3m)pSFd`l7$$!++nT!***Ffal$\"+)>'**e#)Fd`l 7$$!+:(pJZ)Ffal$\"+VGO>7F``l7$$!*tAf&pFd`l$\"+W+`)e\"F``l7$$!++pJVNFfa l$\"+4auNBF``l7$$!)2628Fd`l$\"+l]PxHF``l7$$\"+Id^/LFfal$\"+KL]FNF``l7$ $\"*`U(RnFd`l$\"+zZ_\"*RF``l7$$\"+IU'e,\"Fd`l$\"+uM&oP%F``l7$$\"+2Uvd8 Fd`l$\"+0E.%p%F``l7$$\"+adq\"*>Fd`l$\"+zoZE^F``l7$$\"+2e\"*>BFd`l$\"+! Qv>G&F``l7$$\"+ge7[EFd`l$\"+dPZ(R&F``l7$$\"+n6c()HFd`l$\"+NWkzaF``l7$$ \"+uk*pK$Fd`l$\"+/PQGbF``l7$$\"+2KMlOFd`l$\"+YcwZbF``l7$$\"+S**o.SFd`l $\"+$))f;a&F``l7$$\"+W6s^VFd`l$\"+\")\\E7bF``l7$$\"+ZBv*p%Fd`l$\"+^Jji aF``l7$$\"+%\\WGJ&Fd`l$\"+wMlM`F``l7$$\"+S5/.gFd`l$\"+2R%H9&F``l7$$\"+ +;2'p'Fd`l$\"+'Rr[\"\\F``l7$$\"+g\\$RO(Fd`l$\"+(*z:tYF``l7$$\"+u)=/(zF d`l$\"+]fiUWF``l7$$\"*\"pe\"p)F``l$\"+A*zA;%F``l7$$\"*$3^-$*F``l$\"+A' eU#RF``l7$$\"+egJ,5F``l$\"+G`9^OF``l7$$\"+.1Ak5F``l$\"+=j_:MF``l7$$\"+ eoBL6F``l$\"+&\\_e;$F``l7$$\"+am&*)>\"F``l$\"+z(3\"QHF``l7$$\"+n$GvE\" F``l$\"+ED#=r#F``l7$$\"+0')\\I8F``l$\"+u![Y^#F``l7$$\"+80U)R\"F``l$\"+ nS^8BF``l7$$\"+(Gs*o9F``l$\"+_5;<@F``l7$$\"+9yQI:F``l$\"+?iSc>F``l7$$ \"+l#=nf\"F``l$\"+`!RIz\"F``l7$$\"+7TCl;F``l$\"+iY&\\j\"F``l7$$\"+%G$G KF``l$\"+9\")446F``l7$$\"+?h(H+#F``l$\"+**\\f_ **Fd`l7$$\"+$y'el?F``l$\"+QB+))*)Fd`l7$$\"+wn.M@F``l$\"+'[gA+)Fd`l7$$ \"+&)GW)>#F``l$\"+6x0PrFd`l7$$\"+EewlAF``l$\"+9n9%H'Fd`l7$$\"+2jeJBF`` l$\"+5j=GbFd`l7$$\"+]U\\+CF``l$\"+L&pay%Fd`l7$$\"+*ygoY#F``l$\"+A)*QDT Fd`l7$$\"+h,tMDF``l$\"+CRq/NFd`l7$$\"+Tv.-EF``l$\"+P_'>%HFd`l7$$\"+Kg) Qm#F``l$\"+O*G,Z#Fd`l7$$\"+$QrZt#F``l$\"+e#p9)>Fd`l7$$\"+&3s\")z#F``l$ \"+o'f0f\"Fd`l7$$\"+e/xlGF``l$\"+&)yp?7Fd`l7$$\"+E2ZIHF``l$\"+B'H+6*Ff al7$Fg^l$\"+*G9AD'Ffal-F]_l6&F__lFc_lF`_lFc_l-Fe_l6#Fh^l-%+AXESLABELSG 6$%\"xG%%y(x)G-%%VIEWG6$;F\\`lFg^l%(DEFAULTG" 1 2 0 1 10 0 2 9 1 4 2 1.000000 45.000000 45.000000 0 0 "Curve 1" "Curve 2" }}}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 93 "plot([D(g )(x),'dgn'(x)],x=-0.2..3,color=[brown,yellow],thickness=[1,3],labels=[ `x`,`y'(x)`]);" }}{PARA 13 "" 1 "" {GLPLOT2D 413 357 357 {PLOTDATA 2 " 6&-%'CURVESG6%7Z7$$!35+++++++?!#=$\"3Ku>!Ql\\s'R!#;7$$!3!pmmmwAc#=F*$ \"3p\\MK6Tk8PF-7$$!3SLLLLbC^;F*$\"3sQsn+t\"GZ$F-7$$!3!********HooZ\"F* $\"3pfJ`s=>WKF-7$$!3qmmmm5\\-8F*$\"3P2/&\\(\\@FIF-7$$!3?++++nT!***!#>$ \"3q#G&[Bd%en#F-7$$!3WLLLLF#f&pFE$\"3shUf0/`bBF-7$$!30++++pJVNFE$\"31# )QA(3w$H?F-7$$!3`mmmm1628!#?$\"3D\"eDE%>AOF*$\"39 .x&>JcjR&Ffo7$$\"3g******fe7[EF*$\"3?[Xnq_fcHFfo7$$\"3$HLLLZ'*pK$F*$\" 3W=35\">Jk%)*F*7$$\"3y******R**o.SF*$!3BJe34T?P_F*7$$\"3UnmmYBv*p%F*$! 39%))[`a_#)o\"Ffo7$$\"3(HLLL\\WGJ&F*$!3aDI?]Rj\\CFfo7$$\"3;,++S5/.gF*$ !3%=@nslww1$Ffo7$$\"3y*******frgp'F*$!3o;Td;+*R[$Ffo7$$\"3O+++g\\$RO(F *$!37CPX%3rBt$Ffo7$$\"3mLLLt)=/(zF*$!3G$[Xh%)Rb&QFfo7$$\"3Ammm1pe\"p)F *$!3Eyl;!GGO!RFfo7$$\"3%ymmm#3^-$*F*$!3I\"*f.N'*4!)QFfo7$$\"3,+++egJ,5 Ffo$!3a1tEM\\w(z$Ffo7$$\"3_mmm-1Ak5Ffo$!3)4xg#)Hr))o$Ffo7$$\"32+++eoBL 6Ffo$!3\")z*[!3&HDa$Ffo7$$\"31+++am&*)>\"Ffo$!3qnZV0H4'Q$Ffo7$$\"3!omm mOGvE\"Ffo$!3H'RoTW/F@$Ffo7$$\"3qmmm/')\\I8Ffo$!3GIr)Q()o%\\IFfo7$$\"3 QLLL80U)R\"Ffo$!3S<=lO!=L(GFfo7$$\"3ILLL(Gs*o9Ffo$!3MM$=K$Rq$p#Ffo7$$ \"3,+++9yQI:Ffo$!3(eQX&3U:UDFfo7$$\"3QLLLl#=nf\"Ffo$!3m]&>J_**[Q#Ffo7$ $\"3))*****>6W_m\"Ffo$!3&RMte[a.B#Ffo7$$\"3)******RG$GKFfo7$$\"3%******>Pn\"p=F fo$!3LYh)f))R2#=Ffo7$$\"3Jmmmi2)Q$>Ffo$!3Y4!Q(e-(eq\"Ffo7$$\"3.+++?h(H +#Ffo$!3)G3K2*HV!f\"Ffo7$$\"3-LLL$y'el?Ffo$!3UW_U(=(o\"\\\"Ffo7$$\"3') *****fxOS8#Ffo$!3aIln#eF%*Q\"Ffo7$$\"39mmm%)GW)>#Ffo$!3y3&z%*[0!)H\"Ff o7$$\"3)******f#ewlAFfo$!3C[xEQ)fn?\"Ffo7$$\"3Wmmm1jeJBFfo$!3+2wrL2A@6 Ffo7$$\"3]******\\U\\+CFfo$!3Y&=cs;w\\.\"Ffo7$$\"3ULLL*ygoY#Ffo$!3cx\\ )\\Kgia*F*7$$\"32LLLh,tMDFfo$!3yqk1y***zu)F*7$$\"3qmmmSv.-EFfo$!3=\"yT b\"GgwzF*7$$\"3u*****>.')Qm#Ffo$!3+#of/+EOG(F*7$$\"3kmmm#QrZt#Ffo$!32] a_![8n]'F*7$$\"3%HLL`3s\")z#Ffo$!3j./Gm\"*3FeF*7$$\"33+++e/xlGFfo$!3O) o%e:2p=^F*7$$\"3!)*****fsq/$HFfo$!3!z:%oE0PdWF*7$$\"\"$\"\"!$!3An6\")f &\\nw$F*-%'COLOURG6&%$RGBG$\")#)eqk!\")$\"))eqk\"Fe]lFf]l-%*THICKNESSG 6#\"\"\"-F$6%7Z7$$!\"#!\"\"$\"+`'\\s'RFe]l7$$!+nFiD=!#5$\"+6Tk8PFe]l7$ $!+MbC^;Fh^l$\"+,t\"GZ$Fe]l7$$!++$ooZ\"Fh^l$\"+s=>WKFe]l7$$!+n5\\-8Fh^ l$\"+v\\@FIFe]l7$$!++nT!***!#6$\"+Bd%en#Fe]l7$$!*tAf&pFh^l$\"+0/`bBFe] l7$$!++pJVNF]`l$\"+(3w$H?Fe]l7$$!)2628Fh^l$\"+V>AOFh^l$\"+3jN'R&Fcbl7$$\"+ge7 [EFh^l$\"+q_fcHFcbl7$$\"+uk*pK$Fh^l$\"+o6VY)*Fh^l7$$\"+S**o.SFh^l$!+7T ?P_Fh^l7$$\"+ZBv*p%Fh^l$!+YDD)o\"Fcbl7$$\"+%\\WGJ&Fh^l$!+^Rj\\CFcbl7$$ \"+S5/.gFh^l$!+dmnnIFcbl7$$\"++;2'p'Fh^l$!+;+*R[$Fcbl7$$\"+g\\$RO(Fh^l $!+%3rBt$Fcbl7$$\"+u)=/(zFh^l$!+Y)Rb&QFcbl7$$\"*\"pe\"p)Fcbl$!+!GGO!RF cbl7$$\"*$3^-$*Fcbl$!+M'*4!)QFcbl7$$\"+egJ,5Fcbl$!+M\\w(z$Fcbl7$$\"+.1 Ak5Fcbl$!+(Hr))o$Fcbl7$$\"+eoBL6Fcbl$!+3&HDa$Fcbl7$$\"+am&*)>\"Fcbl$!+ 0H4'Q$Fcbl7$$\"+n$GvE\"Fcbl$!+VWq7KFcbl7$$\"+0')\\I8Fcbl$!+t)o%\\IFcbl 7$$\"+80U)R\"Fcbl$!+P!=L(GFcbl7$$\"+(Gs*o9Fcbl$!+MRq$p#Fcbl7$$\"+9yQI: Fcbl$!+3U:UDFcbl7$$\"+l#=nf\"Fcbl$!+C&**[Q#Fcbl7$$\"+7TCl;Fcbl$!+'[a.B #Fcbl7$$\"+%G$GKFcbl7$$ \"+st;p=Fcbl$!+'))R2#=Fcbl7$$\"+j2)Q$>Fcbl$!+e-(eq\"Fcbl7$$\"+?h(H+#Fc bl$!+\"*HV!f\"Fcbl7$$\"+$y'el?Fcbl$!+)=(o\"\\\"Fcbl7$$\"+wn.M@Fcbl$!+$ eF%*Q\"Fcbl7$$\"+&)GW)>#Fcbl$!+*[0!)H\"Fcbl7$$\"+EewlAFcbl$!+Q)fn?\"Fc bl7$$\"+2jeJBFcbl$!+L2A@6Fcbl7$$\"+]U\\+CFcbl$!+nh(\\.\"Fcbl7$$\"+*ygo Y#Fcbl$!+G.EY&*Fh^l7$$\"+h,tMDFcbl$!+\")***zu)Fh^l7$$\"+Tv.-EFcbl$!+6G gwzFh^l7$$\"+Kg)Qm#Fcbl$!++gi$G(Fh^l7$$\"+$QrZt#Fcbl$!+wMr1lFh^l7$$\"+ &3s\")z#Fcbl$!+p\"*3FeFh^l7$$\"+e/xlGFcbl$!+:2p=^Fh^l7$$\"+E2ZIHFcbl$! +E0PdWFh^l7$Fj\\l$!+f&\\nw$Fh^l-F`]l6&Fb]l$\"*++++\"Fe]lF[`m$F\\]lF\\] l-Fi]l6#F[]l-%+AXESLABELSG6$%\"xG%&y'(x)G-%%VIEWG6$;F`^lFj\\l%(DEFAULT G" 1 2 0 1 10 0 2 9 1 4 2 1.000000 45.000000 45.000000 0 0 "Curve 1" " Curve 2" }}}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 1 ";" }}}}{SECT 1 {PARA 4 "" 0 "" {TEXT -1 9 "Example 5" }}{PARA 256 "" 0 "" {TEXT -1 2 " " }{XPPEDIT 18 0 "d^2*y/(d*x^2)+dy/d x+y = 0;" "6#/,(*(%\"dG\"\"#%\"yG\"\"\"*&F&F)*$%\"xGF'F)!\"\"F)*&%#dyG F)%#dxGF-F)F(F)\"\"!" }{TEXT -1 3 ", " }{XPPEDIT 18 0 "y(0) = 0" "6#/ -%\"yG6#\"\"!F'" }{TEXT -1 3 ", " }{XPPEDIT 18 0 "y(1) = 1" "6#/-%\"y G6#\"\"\"F'" }{TEXT -1 1 " " }}{PARA 0 "" 0 "" {TEXT -1 59 "First we f ind an analytical solution and set up a function " }{TEXT 266 1 "g" } {TEXT -1 16 " to evaluate it." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 242 "de := diff(y(x),x$2)+diff(y (x),x)+y(x)=0;\nbc := y(0)=0,y(1)=1;\ndsolve(\{de,bc\},y(x));\n## code to express hyperbolic functions in terms of exp\ny(x)=simplify(map(_u ->`if`(has(_u,\{sinh,cosh\}),convert(_u,exp), _u),rhs(%)));\ng := unap ply(rhs(%),x):" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#deG/,(-%%diffG6$- %\"yG6#%\"xG-%\"$G6$F-\"\"#\"\"\"-F(6$F*F-F2F*F2\"\"!" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#bcG6$/-%\"yG6#\"\"!F*/-F(6#\"\"\"F." }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/-%\"yG6#%\"xG**-%$sinG6#,$*&\"\"#!\"\"\"\"$ #\"\"\"F.F2F/,&-%%coshG6#F1F2-%%sinhGF6F/F/-%$expG6#,$*&F.F/F'F2F/F2-F *6#,$*(F.F/F0F1F'F2F2F2" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/-%\"yG6#% \"xG*(-%$sinG6#,$*&\"\"#!\"\"\"\"$#\"\"\"F.F2F/-%$expG6#,&F1F2*&F.F/F' F2F/F2-F*6#,$*(F.F/F0F1F'F2F2F2" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }} {PARA 0 "" 0 "" {TEXT -1 71 "A numerical solution can be constructed b y the linear shooting method. " }}{PARA 0 "" 0 "" {TEXT -1 0 "" }} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 103 "de := diff(y(x),x$2)+diff(y (x),x)+y(x)=0;\nbc := y(0)=0,y(1)=1;\ngn := desolveSH(\{de,bc\},y(x),i nfo=true);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#deG/,(-%%diffG6$-%\"y G6#%\"xG-%\"$G6$F-\"\"#\"\"\"-F(6$F*F-F2F*F2\"\"!" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#bcG6$/-%\"yG6#\"\"!F*/-F(6#\"\"\"F." }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%>Using~linear~shooting~method.G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6$%SShot,~with~initial~derivative~0,~has~end~value~->~ G$\"\"!F%" }}{PARA 11 "" 1 "" {XPPMATH 20 "6$%coHomogeneous~DE,~with~i nitial~value~0~and~derivative~1,~has~end~value~->~G$\"+^>2N`!#5" }} {PARA 11 "" 1 "" {XPPMATH 20 "6$%MInitial~derivative~for~required~solu tion~->~G$\"+m*)Qu=!\"*" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 " " 0 "" {TEXT -1 14 "The procedure " }{TEXT 266 2 "gn" }{TEXT -1 83 " n ow provides the continuous numerical solution, ( restricted to the int erval from " }{XPPEDIT 18 0 "x = 0" "6#/%\"xG\"\"!" }{TEXT -1 4 " to \+ " }{XPPEDIT 18 0 "x = 1;" "6#/%\"xG\"\"\"" }{TEXT -1 2 ")." }}{PARA 0 "" 0 "" {TEXT -1 49 "We compare some values of the numerical solution \+ " }{TEXT 266 2 "gn" }{TEXT -1 25 " and analytical solution " }{TEXT 266 1 "g" }{TEXT -1 1 "." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 197 "xvals := [seq(i*0.1,i=0..10)]:\nnu mvals := evalf(evalf[13](map(gn,xvals))):\nvals := evalf(evalf[13](map (g,xvals))):\nlinalg[matrix]([[x,''gn'(x)','g(x)'],seq([xvals[i],numva ls[i],vals[i]],i=1..11)]);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#K%'matri xG6#7.7%%\"xG-.%#gnG6#F(-%\"gGF,7%$\"\"!F1F0F07%$\"\"\"!\"\"$\"+cgu!y \"!#5F67%$\"\"#F5$\"+&z*4vLF8F<7%$\"\"$F5$\"+Y\"Rcy%F8FA7%$\"\"%F5$\"+ &[Wk,'F8FF7%$\"\"&F5$\"+fo\"H2(F8FK7%$\"\"'F5$\"+`4ghzF8FP7%$\"\"(F5$ \"+HS,!p)F8FU7%$\"\")F5$\"+)*=[m#*F8FZ7%$\"\"*F5$\"+5G)**p*F8Fin7%$\"# 5F5$\"+++++5!\"*F^oQ(pprint46\"" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 64 "plot([g(x),'gn'(x)],x=0..1,t hickness=[1,3],labels=[`x`,`y(x)`]);" }}{PARA 13 "" 1 "" {GLPLOT2D 400 300 300 {PLOTDATA 2 "6&-%'CURVESG6%7S7$$\"\"!F)F(7$$\"3emmm;arz@!# >$\"38=#*Gz'36/%F-7$$\"3[LL$e9ui2%F-$\"3?oB5K.#[[(F-7$$\"3nmmm\"z_\"4i F-$\"3f\"eX<,;x7\"!#=7$$\"3[mmmT&phN)F-$\"3:Oi*\\G#[#>#F:7$$\"3%)*** \\7LRDX\"F:$\"3R()\\%\\OD__#F:7$$\"3]mm\"zR'ok;F:$\"31XIA'3O6'GF:7$$\" 3w***\\i5`h(=F:$\"35C9AUUo(=$F:7$$\"3WLLL3En$4#F:$\"3CSTy0)y\\^$F:7$$ \"3qmm;/RE&G#F:$\"3SM%*)o\"H1'z$F:7$$\"3\")*****\\K]4]#F:$\"3?!Gq^`kW5 %F:7$$\"3$******\\PAvr#F:$\"3f5+v93h0WF:7$$\"3)******\\nHi#HF:$\"3C&)R _n+ 1l'>IdF:7$$\"3'GLLLQ*o]RF:$\"3UEjzP\")))ffF:7$$\"3A++D\"=lj;%F:$\"3)QH 'p(QIT?'F:7$$\"31++vV&RY2aF:$\"3 /Gc\"*z7([X(F:7$$\"39mm;zXu9cF:$\"3cI=e`*R'QwF:7$$\"3l******\\y))GeF:$ \"3HZymq87@yF:7$$\"3'*)***\\i_QQgF:$\"3S(o$eq$oC*zF:7$$\"3@***\\7y%3Ti F:$\"3sn?ma#p::)F:7$$\"35****\\P![hY'F:$\"3`oF$R0-1K)F:7$$\"3kKLL$Qx$o mF:$\"39%3pOW>dY)F:7$$\"3!)*****\\P+V)oF:$\"34J]mMZn8')F:7$$\"3?mm\"zp e*zqF:$\"3!QPV*e9eT()F:7$$\"3%)*****\\#\\'QH(F:$\"3oTq!>.#zu))F:7$$\"3 GKLe9S8&\\(F:$\"3![3>a[))Q**)F:7$$\"3R***\\i?=bq(F:$\"3br9+Ev)>6*F:7$$ \"3\"HLL$3s?6zF:$\"3_$H!\\=^@@#*F:7$$\"3a***\\7`Wl7)F:$\"3V2mQ@x/H$*F: 7$$\"3#pmmm'*RRL)F:$\"3Q#>@!4\\oE%*F:7$$\"3Qmm;a<.Y&)F:$\"3==27%*3J?&* F:7$$\"3=LLe9tOc()F:$\"3v%\\(R,h.2'*F:7$$\"3u******\\Qk\\*)F:$\"3EtPC/ hU\"o*F:7$$\"3CLL$3dg6<*F:$\"3k%>WwQL0w*F:7$$\"3ImmmmxGp$*F:$\"3*of8^j .e#)*F:7$$\"3A++D\"oK0e*F:$\"3/K\\>Z,y*))*F:7$$\"3A++v=5s#y*F:$\"3u')> Cg+nX**F:7$$\"\"\"F)Fbz-%'COLOURG6&%$RGBG$\"#5!\"\"F(F(-%*THICKNESSG6# Fcz-F$6%7SF'7$$\"+;arz@!#6$\"+y'36/%Fd[l7$$\"+XTFwSFd[l$\"+J.#[[(Fd[l7 $$\"+\"z_\"4iFd[l$\"+7grF6!#57$$\"+S&phN)Fd[l$\"+-&o3]\"Fa\\l7$$\"+*=) H\\5Fa\\l$\"+D!)pj=Fa\\l7$$\"+[!3uC\"Fa\\l$\"+&G#[#>#Fa\\l7$$\"+J$RDX \"Fa\\l$\"+l`ADDFa\\l7$$\"+)R'ok;Fa\\l$\"+'3O6'GFa\\l7$$\"+1J:w=Fa\\l$ \"+UUo(=$Fa\\l7$$\"+3En$4#Fa\\l$\"+0)y\\^$Fa\\l7$$\"+/RE&G#Fa\\l$\"+IdFa\\l7$$\"+$Q*o]RFa\\l$\"+P\")))ffFa\\l7$$\"+\"=lj;%Fa\\l $\"+(QIT?'Fa\\l7$$\"+V&RY2aFa\\l$\"+z7([X(Fa\\l7$ $\"+yXu9cFa\\l$\"+`*R'QwFa\\l7$$\"+\\y))GeFa\\l$\"+q87@yFa\\l7$$\"+i_Q QgFa\\l$\"+q$oC*zFa\\l7$$\"+!y%3TiFa\\l$\"+a#p::)Fa\\l7$$\"+O![hY'Fa\\ l$\"+`?g?$)Fa\\l7$$\"+#Qx$omFa\\l$\"+V%>dY)Fa\\l7$$\"+u.I%)oFa\\l$\"+M Zn8')Fa\\l7$$\"+(pe*zqFa\\l$\"+e9eT()Fa\\l7$$\"+C\\'QH(Fa\\l$\"+J?zu)) Fa\\l7$$\"+8S8&\\(Fa\\l$\"+&[))Q**)Fa\\l7$$\"+0#=bq(Fa\\l$\"+Dv)>6*Fa \\l7$$\"+2s?6zFa\\l$\"+=^@@#*Fa\\l7$$\"+IXaE\")Fa\\l$\"+@x/H$*Fa\\l7$$ \"+l*RRL)Fa\\l$\"+3\\oE%*Fa\\l7$$\"+`<.Y&)Fa\\l$\"+%*3J?&*Fa\\l7$$\"+8 tOc()Fa\\l$\"+,h.2'*Fa\\l7$$\"+\\Qk\\*)Fa\\l$\"+/hU\"o*Fa\\l7$$\"+p0;r \"*Fa\\l$\"+(QL0w*Fa\\l7$$\"+lxGp$*Fa\\l$\"+NO!e#)*Fa\\l7$$\"+!oK0e*Fa \\l$\"+Z,y*))*Fa\\l7$$\"+<5s#y*Fa\\l$\"+g+nX**Fa\\l7$Fbz$\"+++++5!\"*- Fez6&FgzF(FhzF(-F\\[l6#\"\"$-%+AXESLABELSG6$%\"xG%%y(x)G-%%VIEWG6$;F(F bz%(DEFAULTG" 1 2 0 1 10 0 2 9 1 4 2 1.000000 45.000000 45.000000 0 0 "Curve 1" "Curve 2" }}}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 1 ";" }}}}{SECT 1 {PARA 4 "" 0 "" {TEXT -1 9 "Example 6" }}{PARA 256 "" 0 "" {TEXT -1 1 " " }{XPPEDIT 18 0 "d^2*y/( d*x^2)+x" "6#,&*(%\"dG\"\"#%\"yG\"\"\"*&F%F(*$%\"xGF&F(!\"\"F(F+F(" } {TEXT -1 1 " " }{XPPEDIT 18 0 "dy/dx+x*y = x^2;" "6#/,&*&%#dyG\"\"\"%# dxG!\"\"F'*&%\"xGF'%\"yGF'F'*$F+\"\"#" }{TEXT -1 3 ", " }{XPPEDIT 18 0 "y(0) = 0" "6#/-%\"yG6#\"\"!F'" }{TEXT -1 3 ", " }{XPPEDIT 18 0 "y( 1) = 1" "6#/-%\"yG6#\"\"\"F'" }{TEXT -1 1 " " }}{PARA 0 "" 0 "" {TEXT -1 59 "First we find an analytical solution and set up a function " } {TEXT 266 1 "g" }{TEXT -1 16 " to evaluate it." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 382 "de := diff( y(x),x$2)+x*diff(y(x),x)+x*y(x)=x^2;\nbc := y(0)=0,y(1)=1;\ndsolve(\{d e,bc\},y(x));\nex := map(simplify,rhs(%)):\nDigits := 14:\n## code to \+ perform partial numerical evaluation of constants in this special case \ny(x)=map(_z->map(_u->`if`(type(_u,\{integer,anyfunc(polynom(anything ,x))\}),\n convert(_u,erfi),evalf(_u)),_z),ex);\ng := unapply(rhs(%),x):\nDigits := 10:" }}{PARA 11 "" 1 "" {XPPMATH 20 "6# >%#deG/,(-%%diffG6$-%\"yG6#%\"xG-%\"$G6$F-\"\"#\"\"\"*&F-F2-F(6$F*F-F2 F2*&F-F2F*F2F2*$)F-F1F2" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#bcG6$/-% \"yG6#\"\"!F*/-F(6#\"\"\"F." }}{PARA 12 "" 1 "" {XPPMATH 20 "6#/-%\"yG 6#%\"xG,***-%$expG6#,$*(\"\"#!\"\"F'\"\"\",&F'F1F/F0F1F0F1,**&-%$erfG6 #*&F/#F1F/^#F1F1F1-F+6#F/F1F1*&-F66#*&^#F9F1F/F9F1F;F1F0*(-F+6#F9F1F5F 1-F+6##\"\"$F/F1F0*&F5F1FEF1F1F1F;F0,&F5F1F>F0F0F1*,-F66#*(FAF1F/F9F2F 1F1-F+6#,(*&#F1F/F1*$)F'F/F1F1F0F'F1F/F0F1FEF1,&FCF1F1F0F1FJF0F0F'F1F1 F0" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/-%\"yG6#%\"xG,**&$\"/OEZ?g)\\$! #8\"\"\"-%$expG6#,(*&#F-\"\"#F-*$)F'F4F-F-!\"\"F'F-F4F7F-F-*($\"/qxZwo +B!#9F--%%erfiG6#,$*(F4F7F4#F-F4,&F'F-F4F7F-F-F--F/6#,$*&F4F7,&F'F-F-F 7F4F7F-F7F'F-F-F7" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 229 "Now we construct a numerical procedure for the solution \+ by the linear shooting method and simultaneously construct a numerical procedure for the derivative of the solution. These numerical solutio ns extend over the interval from " }{XPPEDIT 18 0 "x = -4;" "6#/%\"xG, $\"\"%!\"\"" }{TEXT -1 4 " to " }{XPPEDIT 18 0 "x = 6;" "6#/%\"xG\"\"' " }{TEXT -1 2 ", " }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 140 "de := diff(y(x),x$2)+x*diff(y(x),x)+x*y(x)=x ^2;\nbc := y(0)=0,y(1)=1;\n(gn,dgn) := desolveSH(\{de,bc\},x=-4..6,inf o=true,output=procedure_pair);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#d eG/,(-%%diffG6$-%\"yG6#%\"xG-%\"$G6$F-\"\"#\"\"\"*&F-F2-F(6$F*F-F2F2*& F-F2F*F2F2*$)F-F1F2" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#bcG6$/-%\"yG 6#\"\"!F*/-F(6#\"\"\"F." }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%>Using~lin ear~shooting~method.G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6$%SShot,~with~ initial~derivative~0,~has~end~value~->~G$\"+ec&f;(!#6" }}{PARA 11 "" 1 "" {XPPMATH 20 "6$%coHomogeneous~DE,~with~initial~value~0~and~deriva tive~1,~has~end~value~->~G$\"+r&3`)y!#5" }}{PARA 11 "" 1 "" {XPPMATH 20 "6$%MInitial~derivative~for~required~solution~->~G$\"+()QIx6!\"*" } }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 49 "We comp are some values of the numerical solution " }{TEXT 266 2 "gn" }{TEXT -1 25 " and analytical solution " }{TEXT 266 1 "g" }{TEXT -1 24 " over the interval from " }{XPPEDIT 18 0 "x = 0" "6#/%\"xG\"\"!" }{TEXT -1 4 " to " }{XPPEDIT 18 0 "x =1" "6#/%\"xG\"\"\"" }{TEXT -1 2 ". " }} {PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 197 "xvals := [seq(0.1*i,i=0..10)]:\nnumvals := evalf(evalf[14](map(gn ,xvals))):\nvals := evalf(evalf[14](map(g,xvals))):\nlinalg[matrix]([[ x,''gn'(x)','g(x)'],seq([xvals[i],numvals[i],vals[i]],i=1..11)]);" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#K%'matrixG6#7.7%%\"xG-.%#gnG6#F(-%\"gG F,7%$\"\"!F1F0$!\"$!#97%$\"\"\"!\"\"$\"+k*H`<\"!#5F97%$\"\"#F8$\"+xJxQ BF;F?7%$\"\"$F8$\"+^c]yMF;FD7%$\"\"%F8$\"+vg:$e%F;FI7%$\"\"&F8$\"+-NCU cF;FN7%$\"\"'F8$\"+=sgYmF;$\"+>sgYmF;7%$\"\"(F8$\"+J8!))e(F;FZ7%$\"\") F8$\"+puUj%)F;Fin7%$\"\"*F8$\"+!4#Qn#*F;F^o7%$\"#5F8$\"+++++5!\"*FcoQ( pprint56\"" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 59 "We may also compare some values of the numerical procedure " } {TEXT 266 3 "dgn" }{TEXT -1 116 " which gives the derivative of the so lution with values given by the symbolic derivative of the analytical \+ solution " }{TEXT 266 1 "g" }{TEXT -1 24 " over the interval from " } {XPPEDIT 18 0 "x = 0" "6#/%\"xG\"\"!" }{TEXT -1 4 " to " }{XPPEDIT 18 0 "x =1" "6#/%\"xG\"\"\"" }{TEXT -1 2 ". " }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 205 "xvals := [seq(0.1*i, i=0..10)]:\nnumvals := evalf(evalf[14](map(dgn,xvals))):\nvals := eval f(evalf[14](map(D(g),xvals))):\nlinalg[matrix]([[x,''dgn'(x)','D(g)(x) '],seq([xvals[i],numvals[i],vals[i]],i=1..11)]);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#K%'matrixG6#7.7%%\"xG-.%$dgnG6#F(--%\"DG6#%\"gGF,7%$\" \"!F4$\"+()QIx6!\"*F57%$\"\"\"!\"\"$\"+qMPr6F7F<7%$\"\"#F;$\"+Y_``6F7F A7%$\"\"$F;$\"+Dr-C6F7FF7%$\"\"%F;$\"+p'>N3\"F7FK7%$\"\"&F;$\"+f<7L5F7 FP7%$\"\"'F;$\"+#*3fV(*!#5FU7%$\"\"(F;$\"+5CD\"4*FWFen7%$\"\")F;$\"+uN 2'R)FWFjn7%$\"\"*F;$\"+Ca!>o(FWF_o7%$\"#5F;$\"+R,ZtpFWFdoQ(pprint66\" " }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 65 "plot([g(x),'gn'(x)],x=-4..6,thickness=[1,3],labels=[` x`,`y(x)`]);" }}{PARA 13 "" 1 "" {GLPLOT2D 476 476 476 {PLOTDATA 2 "6& -%'CURVESG6%7Z7$$!\"%\"\"!$\"+]wh9F!\"*7$$!+HU,\"*QF-$\"+4=mj@F-7$$!+e %G?y$F-$\"+K.*=n\"F-7$$!+A0?(o$F-$\"+4\\$zG\"F-7$$!+'esBf$F-$\"*].WT*F -7$$!+a'Gd[$F-$\"*#QBGfF-7$$!+@Z3zLF-$\"*PV%RGF-7$$!+%)QtrKF-$\"(U&)e* F-7$$!+YIQkJF-$!*5!H8BF-7$$!+6=q]HF-$!*oczA'F-7$$!+_>f_FF-$!*.KH&*)F-7 $$!+p1YZDF-$!+b7J+6F-7$$!+-OJNBF-$!+$z,DC\"F-7$$!+[-eHAF-$!+%>b-H\"F-7 $$!+%*o%Q7#F-$!+y!pTK\"F-7$$!+Vr3:?F-$!+nZkX8F-7$$!+#RFj!>F-$!+r#QWN\" F-7$$!+W<`5=F-$!+BBJ_8F-7$$!+'4OZr\"F-$!+WnUT8F-7$$!+v'\\!*\\\"F-$!+to !oG\"F-7$$!+DwZ#G\"F-$!+,2s#>\"F-7$$!+D.xt5F-$!+h3Cn5F-7$$!*.TC%))F-$! +1jga#*!#57$$!*#4z)e'F-$!+!zA?D(Ffr7$$!*n`'zYF-$!+\"zm4K&Ffr7$$!*>t)eC F-$!+vYXmGFfr7$$!)<1J\\F-$!*8:I!eFfr7$$\"*\"=lj;F-$\"+<[^\\>Ffr7$$\"*V &R[8\"F-7$$\"+=>Y29 F-$\"+``?K7F-7$$\"+yXu9;F-$\"+-\\+@8F-7$$\"+\\y))G=F-$\"+hz&\\S\"F-7$$ \"+i_QQ?F-$\"+NFf*[\"F-7$$\"+!y%3TAF-$\"+5Az\"e\"F-7$$\"+O![hY#F-$\"+^ /L-F-7$$\"+(pe*zI F-$\"+\"R)eT@F-7$$\"+C\\'QH$F-$\"+pIsEBF-7$$\"+8S8&\\$F-$\"+4/16DF-7$$ \"+0#=bq$F-$\"+zQ86FF-7$$\"+2s?6RF-$\"+#=S:\"HF-7$$\"+IXaETF-$\"+0'3W7 $F-7$$\"+l*RRL%F-$\"+W;1JLF-7$$\"+`<.YXF-$\"+YV?VNF-7$$\"+8tOcZF-$\"+K %>Rv$F-7$$\"+\\Qk\\\\F-$\"+')zhZRF-7$$\"+p0;r^F-$\"+F!)epTF-7$$\"+lxGp `F-$\"+]g0oVF-7$$\"+!oK0e&F-$\"+_:fzXF-7$$\"+<5s#y&F-$\"+dc*>y%F-7$$\" \"'F*$\"+,:X**\\F--%'COLOURG6&%$RGBG$\"#5!\"\"$F*F*Fc]l-%*THICKNESSG6# \"\"\"-F$6%7Z7$F($\"+@xh9FF-7$F/$\"+J>mj@F-7$F4$\"+>.*=n\"F-7$F9$\"+? \\$zG\"F-7$F>$\"+()QS9%*Ffr7$FC$\"+mUBGfFfr7$FH$\"+-RWRGFfr7$FM$\"+4Ce )e*!#77$FR$!+j+H8BFfr7$FW$!+Im&zA'Ffr7$Ffn$!+<>$H&*)Ffr7$F[o$!+N7J+6F- 7$F`o$!+\"z,DC\"F-7$Feo$!+$=b-H\"F-7$Fjo$!+w!pTK\"F-7$F_p$!+oZkX8F-7$F dp$!+p#QWN\"F-7$Fip$!+:BJ_8F-7$F^q$!+RnUT8F-Fbq7$Fhq$!+%p?F>\"F-7$F]r$ !+c3Cn5F-7$Fbr$!+2jga#*Ffr7$Fhr$!+#yA?D(Ffr7$F]s$!+*ym4K&Ffr7$Fbs$!+wY XmGFfr7$Fgs$!+L],.e!#67$F\\t$\"+F[^\\>Ffr7$Fat$\"+(Gi^F%Ffr7$Fft$\"+:g %)4lFfrFjt7$F`u$\"+iY\\l**Ffr7$Feu$\"+#z>[8\"F-7$Fju$\"+a`?K7F-F^v7$Fd v$\"+iz&\\S\"F-FhvF]wFbwFgwF\\xFaxFfxF[yF`yFeyFjyF_zFdzFizF^[l7$Fd[l$ \"+G!)epTF-Fh[lF]\\l7$Fc\\l$\"+ec*>y%F-Fg\\l-F]]l6&F_]lFc]lF`]lFc]l-Fe ]l6#\"\"$-%+AXESLABELSG6$%\"xG%%y(x)G-%%VIEWG6$;F(Fh\\l%(DEFAULTG" 1 2 0 1 10 0 2 9 1 4 2 1.000000 45.000000 45.000000 0 0 "Curve 1" "Curve 2" }}}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 91 "plot([D(g)(x),'dgn'(x)],x=-4..6,color=[brown,yellow], thickness=[1,3],labels=[`x`,`y'(x)`]);" }}{PARA 13 "" 1 "" {GLPLOT2D 476 476 476 {PLOTDATA 2 "6&-%'CURVESG6%7gn7$$!\"%\"\"!$!*](fW`!\")7$$! +HU,\"*Q!\"*$!*+2^x%F-7$$!+e%G?y$F1$!*fewD%F-7$$!+A0?(o$F1$!*;$)f%QF-7 $$!+'esBf$F1$!*d7rY$F-7$$!+a'Gd[$F1$!*r+p2$F-7$$!+@Z3zLF1$!*.98s#F-7$$ !+%)QtrKF1$!*/J^R#F-7$$!+YIQkJF1$!*=uy4#F-7$$!+6=q]HF1$!*Ak=e\"F-7$$!+ _>f_FF1$!*cb-=\"F-7$$!+p1YZDF1$!*aoYG)F17$$!+-OJNBF1$!*p#)[?&F17$$!+%* o%Q7#F1$!*cQ\\e#F17$$!+#RFj!>F1$!))Rv]#F17$$!+'4OZr\"F1$\"*-M#z:F17$$! +v'\\!*\\\"F1$\"*^!*)eMF17$$!+DwZ#G\"F1$\"*NS1@&F17$$!+D.xt5F1$\"*m%z( z'F17$$!*.TC%))F1$\"*'[3Z\")F17$$!*#4z)e'F1$\"*8S*)e*F17$$!*n`'zYF1$\" +/$*=g5F17$$!*>t)eCF1$\"+,,3V6F17$$!+!o*)fZ\"!#5$\"+Lftk6F17$$!)<1J\\F 1$\"++0)e<\"F17$$\"++#GF&e!#6$\"+1uFv6F17$$\"*\"=lj;F1$\"+X\"e3;\"F17$ $\"+?O_!p#Fjr$\"+YWPM6F17$$\"*V&RY29F1$\"+DH#ei%Fjr7$$\"+[K56:F1$\"+!znSE%Fjr 7$$\"+yXu9;F1$\"+Y\">;-%Fjr7$$\"+9i\"=s\"F1$\"+#47#**QFjr7$$\"+\\y))G= F1$\"+3,%Q!RFjr7$$\"+cljL>F1$\"+;-%FjrFjv7$F`w$\"+4,%Q!RFjr7$Few$\"+:E/BSFjr7$Fjw$\"+-#eKC%Fjr7$F_x$ \"+K:l'*[Fjr7$Fdx$\"+aTlQeFjr7$Fix$\"+\"QZ0u'Fjr7$F^y$\"+uaPUwFjr7$Fcy $\"+(=2+M)Fjr7$Fhy$\"+I[(4%*)Fjr7$F]z$\"+b0(HN*Fjr7$Fbz$\"+HnyX'*FjrFf z7$F\\[l$\"+Y%4S$**Fjr7$Fa[l$\"+o&e!))**FjrFe[lFj[lF_\\l7$Fe\\l$\"+v!) )=+\"F1Fi\\lF^]lFc]lFh]l-F^^l6&F`^l$\"*++++\"F-Fhgl$F*F*-Ff^l6#\"\"$-% +AXESLABELSG6$%\"xG%&y'(x)G-%%VIEWG6$;F(Fi]l%(DEFAULTG" 1 2 0 1 10 0 2 9 1 4 2 1.000000 45.000000 45.000000 0 0 "Curve 1" "Curve 2" }}}} {PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 56 "xx := 6;\ngn(xx);\nevalf(g(xx));\ndgn(xx);\nevalf(D(g)(xx));" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#>%#xxG\"\"'" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#$\"+,:X**\\!\"*" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#$\"+ ,:X**\\!\"*" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#$\"+OKq+5!\"*" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#$\"+OKq+5!\"*" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 1 ";" }}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 1 ";" }}}}{PARA 0 "" 0 "" {TEXT -1 0 "" }} {SECT 1 {PARA 4 "" 0 "" {TEXT -1 5 "Tasks" }}{PARA 0 "" 0 "" {TEXT -1 107 "Construct procedures which provide numerical solutions for the fo llowing two point boundary value problems." }}{PARA 0 "" 0 "" {TEXT -1 3 "If " }{TEXT 0 6 "dsolve" }{TEXT -1 85 " can find an analytical s olution, compare this solution with your numerical solution." }} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 1 ";" }}}{SECT 1 {PARA 4 "" 0 " " {TEXT -1 2 "Q1" }}{PARA 0 "" 0 "" {TEXT -1 6 " " }{XPPEDIT 18 0 "d^2*y/(d*x^2) = y;" "6#/*(%\"dG\"\"#%\"yG\"\"\"*&F%F(*$%\"xGF&F(!\" \"F'" }{TEXT -1 3 ", " }{XPPEDIT 18 0 "y(0) = 0,y(1) = 1;" "6$/-%\"yG 6#\"\"!F'/-F%6#\"\"\"F+" }{TEXT -1 1 " " }}{PARA 0 "" 0 "" {TEXT -1 35 "___________________________________" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}} {PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{PARA 0 "" 0 "" {TEXT -1 35 "____________ _______________________" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 1 "; " }}}}{SECT 1 {PARA 4 "" 0 "" {TEXT -1 2 "Q2" }}{PARA 258 "" 0 "" {TEXT -1 2 " " }{XPPEDIT 18 0 "d^2*y/(d*x^2)-2;" "6#,&*(%\"dG\"\"#%\" yG\"\"\"*&F%F(*$%\"xGF&F(!\"\"F(F&F," }{TEXT -1 1 " " }{XPPEDIT 18 0 " dy/dx+y = x^2-1,y(0) = 5,y(1) = 10;" "6%/,&*&%#dyG\"\"\"%#dxG!\"\"F'% \"yGF',&*$%\"xG\"\"#F'F'F)/-F*6#\"\"!\"\"&/-F*6#F'\"#5" }{TEXT -1 1 " \+ " }}{PARA 0 "" 0 "" {TEXT -1 35 "___________________________________" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" } }{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{PARA 0 "" 0 " " {TEXT -1 35 "___________________________________" }}{EXCHG {PARA 0 " > " 0 "" {MPLTEXT 1 0 1 ";" }}}}{SECT 1 {PARA 4 "" 0 "" {TEXT -1 2 "Q3 " }}{PARA 0 "" 0 "" {TEXT -1 3 " " }{XPPEDIT 18 0 "4*x^2" "6#*&\"\"% \"\"\"*$%\"xG\"\"#F%" }{TEXT -1 2 " " }{XPPEDIT 18 0 "d^2*y/(d*x^2)+4 *x;" "6#,&*(%\"dG\"\"#%\"yG\"\"\"*&F%F(*$%\"xGF&F(!\"\"F(*&\"\"%F(F+F( F(" }{TEXT -1 1 " " }{XPPEDIT 18 0 "dy/dx+(4*x^2-1)*y = 0,y(1) = 1,y(6 ) = 0;" "6%/,&*&%#dyG\"\"\"%#dxG!\"\"F'*&,&*&\"\"%F'*$%\"xG\"\"#F'F'F' F)F'%\"yGF'F'\"\"!/-F16#F'F'/-F16#\"\"'F2" }{TEXT -1 1 " " }}{PARA 0 " " 0 "" {TEXT -1 35 "___________________________________" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}} {PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{PARA 0 "" 0 "" {TEXT -1 0 "" } }{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{PARA 0 "" 0 "" {TEXT -1 35 "___________________________________" }}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 1 ";" }}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 1 ";" } }}}}{MARK "4 0 0" 0 }{VIEWOPTS 1 1 0 1 1 1803 1 1 1 1 }{PAGENUMBERS 0 1 2 33 1 1 }