Rouben Rostamian

MaplePrimes Activity


These are replies submitted by Rouben Rostamian

The idea of "the arithmetic mean" in this setting is ill-defined.  Let t be the angle that the radius makes with respect to the x axis, and let s be the arc length measured along the ellipse.

The length L of the radius may be expressed as a function of t or s.  If L is viewed as a function of t, for example, then the arithmetic mean would be 1/(t2-t1)*int(L(t), t=t1..t2).  On the other hand, if L is viewed as a function or s, then the arithmetic mean would be 1/(s2-s1)*int(L(s), s=s1..s2), which is something quite different.

L also may be viewed as a function of x, or y, where (x,y) is the coordinates of the tip of the radius.  You can think of other variables that can serve to parametrize L.  There is a different "arithmetic mean" corresponding to each choice.

 

Although you don't state this explicitly in your worksheet, it is clear that the intention is to solve the partial differential equation of a vibrating Euler's beam through separation of variables.  It is also clear that ω2 is the separation constant that arises in the process.

Things go wrong when you assign a value to ω2, that is, where you set ω2=a2 c. Where does that come from?

To fix, go over the process of separating the variables carefully.  Additionally, examine the physical assumptions that lead to the mathematical model.  Specifically, the motion of the beam certainly depends on how you get the motion started.  At no place in your worksheet you have said how the motion gets started.  Look up the term "initial condition" in your reference book.

 

@jefryyhalim I don't know how to compute the next eigenvalue but I doubt that it would be useful.  Generalizing from the 1-D model, the higher eigenvalues and their associated buckled shapes are likely to correspond to unstable equilibria and therefore you would not see them in experiments.

If your actual experiments show wrinkled shapes, then perhaps your mathematical model is at fault.  As I have said earlier, a plate is inherently a 2-D object and the proper model for its deformation is a partial differential equation (PDE).  I have no idea how you go from there to your system of ordinary differential equations (ODEs).  If I were to investigate the source of the mismatch between computations and experiment, I would start with a close examination of the derivation of the mathematical model.

 

@jefryyhalim As Carl has correctly pointed out, my suggestion for the midway-point condition V1p(L/2)=1 is not tenable.  (Such a condition works with symbolic solutions, but not with numeric.)  An alternative is to specify a condition at an end point, such as D(V1p)(0)=1.  You need to decide which of the dependent varaibles is suited for such an assumption.  The numerical value (=1 in this case) is immaterial as long as it is nonzero.  You will get the same eigenvalue sigma regardless of that value.

The following simple illustration may be of some help.  The numerical solver picks the a=1 eigenvalue.  (Actually this problem has infinitely many eigenvalues.)

restart;

de := diff(y(x),x,x) + a*y(x) = 0;

diff(diff(y(x), x), x)+a*y(x) = 0

bc := y(0)=0, y(Pi)=0, D(y)(0)=2;  # "2" can be any nonzero number   

y(0) = 0, y(Pi) = 0, (D(y))(0) = 2

dsol := dsolve({de,bc}, numeric, output=listprocedure);

[x = proc (x) local _res, _dat, _solnproc; option `Copyright (c) 1993 by the University of Waterloo. All rights reserved.`; _dat := Array(1..4, {(1) = proc (outpoint) local X, Y, YP, yout, errproc, L, V, i; option `Copyright (c) 2000 by Waterloo Maple Inc. All rights reserved.`; X := Vector(12, {(1) = .0, (2) = .2854697839639028, (3) = .5716869140590551, (4) = .8576399682948581, (5) = 1.1431446984501143, (6) = 1.4282783984068121, (7) = 1.7133142551830007, (8) = 1.9984479551396972, (9) = 2.283952685294967, (10) = 2.5699057395307716, (11) = 2.856122869625927, (12) = 3.1415926535898}, datatype = float[8], order = C_order); Y := Matrix(12, 3, {(1, 1) = .0, (1, 2) = 2.0, (1, 3) = 1.000000047004147, (2, 1) = .5632165075382697, (2, 2) = 1.9190589270059564, (2, 3) = 1.000000047004147, (3, 1) = 1.0821029891349827, (3, 2) = 1.6819789296307908, (3, 3) = 1.000000047004147, (4, 1) = 1.512601360669747, (4, 2) = 1.3084483640515898, (4, 3) = 1.000000047004147, (5, 1) = 1.8198844189799297, (5, 2) = .8294701310035484, (5, 3) = 1.000000047004147, (6, 1) = 1.9797229951080126, (6, 2) = .28407192525759983, (6, 3) = 1.000000047004147, (7, 1) = 1.979722995108009, (7, 2) = -.2840719252576249, (7, 3) = 1.000000047004147, (8, 1) = 1.8198844189799201, (8, 2) = -.8294701310035693, (8, 3) = 1.000000047004147, (9, 1) = 1.5126013606697146, (9, 2) = -1.3084483640516273, (9, 3) = 1.000000047004147, (10, 1) = 1.0821029891349383, (10, 2) = -1.6819789296308194, (10, 3) = 1.000000047004147, (11, 1) = .563216507538213, (11, 2) = -1.9190589270059732, (11, 3) = 1.000000047004147, (12, 1) = .0, (12, 2) = -2.0, (12, 3) = 1.000000047004147}, datatype = float[8], order = C_order); YP := Matrix(12, 3, {(1, 1) = 2.0, (1, 2) = -.0, (1, 3) = .0, (2, 1) = 1.9190589270059564, (2, 2) = -.5632165340117812, (2, 3) = .0, (3, 1) = 1.6819789296307908, (3, 2) = -1.0821030399983107, (3, 3) = .0, (4, 1) = 1.3084483640515898, (4, 2) = -1.5126014317682839, (4, 3) = .0, (5, 1) = .8294701310035484, (5, 2) = -1.8198845045220444, (5, 3) = .0, (6, 1) = .28407192525759983, (6, 2) = -1.9797230881632033, (6, 3) = .0, (7, 1) = -.2840719252576249, (7, 2) = -1.9797230881631998, (7, 3) = .0, (8, 1) = -.8294701310035693, (8, 2) = -1.8198845045220349, (8, 3) = .0, (9, 1) = -1.3084483640516273, (9, 2) = -1.5126014317682515, (9, 3) = .0, (10, 1) = -1.6819789296308194, (10, 2) = -1.0821030399982663, (10, 3) = .0, (11, 1) = -1.9190589270059732, (11, 2) = -.5632165340117244, (11, 3) = .0, (12, 1) = -2.0, (12, 2) = -.0, (12, 3) = .0}, datatype = float[8], order = C_order); errproc := proc (x_bvp) local outpoint, X, Y, yout, L, V, i; option `Copyright (c) 2000 by Waterloo Maple Inc. All rights reserved.`; Digits := 15; outpoint := evalf(x_bvp); X := Vector(12, {(1) = .0, (2) = .2854697839639028, (3) = .5716869140590551, (4) = .8576399682948581, (5) = 1.1431446984501143, (6) = 1.4282783984068121, (7) = 1.7133142551830007, (8) = 1.9984479551396972, (9) = 2.283952685294967, (10) = 2.5699057395307716, (11) = 2.856122869625927, (12) = 3.1415926535898}, datatype = float[8], order = C_order); Y := Matrix(12, 3, {(1, 1) = .0, (1, 2) = .0, (1, 3) = -0.4703383008422516e-7, (2, 1) = 0.27897315929317813e-9, (2, 2) = 0.2446203143649674e-12, (2, 3) = -0.4703383008422516e-7, (3, 1) = 0.5492851275585263e-9, (3, 2) = -0.1611040329481231e-11, (3, 3) = -0.4703383008422516e-7, (4, 1) = 0.7672502368736449e-9, (4, 2) = -0.3836837816343793e-11, (4, 3) = -0.4703383008422516e-7, (5, 1) = 0.9160198947078643e-9, (5, 2) = -0.3994484080689554e-11, (5, 3) = -0.4703383008422516e-7, (6, 1) = 0.9906530258627258e-9, (6, 2) = -0.16167198311477401e-11, (6, 3) = -0.4703383008422516e-7, (7, 1) = 0.9906530258627258e-9, (7, 2) = 0.16171830229009114e-11, (7, 3) = -0.4703383008422516e-7, (8, 1) = 0.9160204919792234e-9, (8, 2) = 0.3995586315024278e-11, (8, 3) = -0.4703383008422516e-7, (9, 1) = 0.7672500099627146e-9, (9, 2) = 0.3835888733577452e-11, (9, 3) = -0.4703383008422516e-7, (10, 1) = 0.549285188177754e-9, (10, 2) = 0.16109158905706954e-11, (10, 3) = -0.4703383008422516e-7, (11, 1) = 0.27897380660131725e-9, (11, 2) = -0.24402293212529904e-12, (11, 3) = -0.4703383008422516e-7, (12, 1) = .0, (12, 2) = .0, (12, 3) = -0.4703383008422516e-7}, datatype = float[8], order = C_order); if not type(outpoint, 'numeric') then if outpoint = "start" or outpoint = "left" then return X[1] elif outpoint = "right" then return X[12] elif outpoint = "order" then return 6 elif outpoint = "error" then return HFloat(4.703383008422516e-8) elif outpoint = "errorproc" then error "this is already the error procedure" elif outpoint = "rawdata" then return [3, 12, [y(x), diff(y(x), x), a], X, Y] else return ('procname')(x_bvp) end if end if; if outpoint < X[1] or X[12] < outpoint then error "solution is only defined in the range %1..%2", X[1], X[12] end if; V := array([1 = 4, 2 = 0]); if Digits <= trunc(evalhf(Digits)) then L := Vector(4, 'datatype' = 'float'[8]); yout := Vector(3, 'datatype' = 'float'[8]); evalhf(`dsolve/numeric/lagrange`(12, 3, X, Y, outpoint, var(yout), var(L), var(V))) else L := Vector(4, 'datatype' = 'sfloat'); yout := Vector(3, 'datatype' = 'sfloat'); `dsolve/numeric/lagrange`(12, 3, X, Y, outpoint, yout, L, V) end if; [x = outpoint, seq('[y(x), diff(y(x), x), a]'[i] = yout[i], i = 1 .. 3)] end proc; if not type(outpoint, 'numeric') then if outpoint = "start" or outpoint = "left" then return X[1] elif outpoint = "method" then return "bvp" elif outpoint = "right" then return X[12] elif outpoint = "order" then return 6 elif outpoint = "error" then return HFloat(4.703383008422516e-8) elif outpoint = "errorproc" then return eval(errproc) elif outpoint = "rawdata" then return [3, 12, "depnames", X, Y, YP] else error "non-numeric value" end if end if; if outpoint < X[1] or X[12] < outpoint then error "solution is only defined in the range %1..%2", X[1], X[12] end if; if Digits <= trunc(evalhf(Digits)) and (_EnvInFsolve <> true or _EnvDSNumericSaveDigits <= trunc(evalhf(Digits))) then V := array( 1 .. 6, [( 1 ) = (7), ( 2 ) = (0), ( 3 ) = (false), ( 4 ) = (false), ( 5 ) = (false), ( 6 ) = (false)  ] ); L := Matrix(7, 2, {(1, 1) = .0, (1, 2) = .0, (2, 1) = .0, (2, 2) = .0, (3, 1) = .0, (3, 2) = .0, (4, 1) = .0, (4, 2) = .0, (5, 1) = .0, (5, 2) = .0, (6, 1) = .0, (6, 2) = .0, (7, 1) = .0, (7, 2) = .0}, datatype = float[8], order = C_order); yout := Vector(3, {(1) = .0, (2) = .0, (3) = .0}, datatype = float[8]); evalhf(`dsolve/numeric/hermite`(12, 3, X, Y, YP, outpoint, var(yout), var(L), var(V))) else if _EnvInFsolve = true then Digits := _EnvDSNumericSaveDigits end if; V := array( 1 .. 6, [( 1 ) = (7), ( 2 ) = (0), ( 3 ) = (false), ( 4 ) = (false), ( 5 ) = (false), ( 6 ) = (false)  ] ); L := Matrix(7, 2, {(1, 1) = 0., (1, 2) = 0., (2, 1) = 0., (2, 2) = 0., (3, 1) = 0., (3, 2) = 0., (4, 1) = 0., (4, 2) = 0., (5, 1) = 0., (5, 2) = 0., (6, 1) = 0., (6, 2) = 0., (7, 1) = 0., (7, 2) = 0.}, order = C_order); yout := Vector(3, {(1) = 0., (2) = 0., (3) = 0.}); `dsolve/numeric/hermite`(12, 3, X, Y, YP, outpoint, yout, L, V) end if; [outpoint, seq(yout[i], i = 1 .. 3)] end proc, (2) = Array(1..4, {(1) = 18446883910565447918, (2) = 18446883910565448358, (3) = 18446883910565448534, (4) = 18446883910565448710}), (3) = [x, y(x), diff(y(x), x), a], (4) = 0}); _solnproc := _dat[1]; if member(x, ["last", 'last']) then _res := _solnproc("last"); if type(_res, 'list') then return _res[1] end if elif type(x, `=`) and member(lhs(x), ["initial", 'initial']) then if type(rhs(x), 'list') then _res := _solnproc("initial" = [0, op(rhs(x))]) else _res := _solnproc("initial" = [1, rhs(x)]) end if; if type(_res, 'list') then return _res[1] end if elif x = "sysvars" then return _dat[3] end if; x end proc, y(x) = proc (x) local res, data, solnproc, `y(x)`, outpoint; option `Copyright (c) 2000 by Waterloo Maple Inc. All rights reserved.`; _EnvDSNumericSaveDigits := Digits; Digits := 15; if _EnvInFsolve = true then outpoint := evalf[_EnvDSNumericSaveDigits](x) else outpoint := evalf(x) end if; data := Array(1..4, {(1) = proc (outpoint) local X, Y, YP, yout, errproc, L, V, i; option `Copyright (c) 2000 by Waterloo Maple Inc. All rights reserved.`; X := Vector(12, {(1) = .0, (2) = .2854697839639028, (3) = .5716869140590551, (4) = .8576399682948581, (5) = 1.1431446984501143, (6) = 1.4282783984068121, (7) = 1.7133142551830007, (8) = 1.9984479551396972, (9) = 2.283952685294967, (10) = 2.5699057395307716, (11) = 2.856122869625927, (12) = 3.1415926535898}, datatype = float[8], order = C_order); Y := Matrix(12, 3, {(1, 1) = .0, (1, 2) = 2.0, (1, 3) = 1.000000047004147, (2, 1) = .5632165075382697, (2, 2) = 1.9190589270059564, (2, 3) = 1.000000047004147, (3, 1) = 1.0821029891349827, (3, 2) = 1.6819789296307908, (3, 3) = 1.000000047004147, (4, 1) = 1.512601360669747, (4, 2) = 1.3084483640515898, (4, 3) = 1.000000047004147, (5, 1) = 1.8198844189799297, (5, 2) = .8294701310035484, (5, 3) = 1.000000047004147, (6, 1) = 1.9797229951080126, (6, 2) = .28407192525759983, (6, 3) = 1.000000047004147, (7, 1) = 1.979722995108009, (7, 2) = -.2840719252576249, (7, 3) = 1.000000047004147, (8, 1) = 1.8198844189799201, (8, 2) = -.8294701310035693, (8, 3) = 1.000000047004147, (9, 1) = 1.5126013606697146, (9, 2) = -1.3084483640516273, (9, 3) = 1.000000047004147, (10, 1) = 1.0821029891349383, (10, 2) = -1.6819789296308194, (10, 3) = 1.000000047004147, (11, 1) = .563216507538213, (11, 2) = -1.9190589270059732, (11, 3) = 1.000000047004147, (12, 1) = .0, (12, 2) = -2.0, (12, 3) = 1.000000047004147}, datatype = float[8], order = C_order); YP := Matrix(12, 3, {(1, 1) = 2.0, (1, 2) = -.0, (1, 3) = .0, (2, 1) = 1.9190589270059564, (2, 2) = -.5632165340117812, (2, 3) = .0, (3, 1) = 1.6819789296307908, (3, 2) = -1.0821030399983107, (3, 3) = .0, (4, 1) = 1.3084483640515898, (4, 2) = -1.5126014317682839, (4, 3) = .0, (5, 1) = .8294701310035484, (5, 2) = -1.8198845045220444, (5, 3) = .0, (6, 1) = .28407192525759983, (6, 2) = -1.9797230881632033, (6, 3) = .0, (7, 1) = -.2840719252576249, (7, 2) = -1.9797230881631998, (7, 3) = .0, (8, 1) = -.8294701310035693, (8, 2) = -1.8198845045220349, (8, 3) = .0, (9, 1) = -1.3084483640516273, (9, 2) = -1.5126014317682515, (9, 3) = .0, (10, 1) = -1.6819789296308194, (10, 2) = -1.0821030399982663, (10, 3) = .0, (11, 1) = -1.9190589270059732, (11, 2) = -.5632165340117244, (11, 3) = .0, (12, 1) = -2.0, (12, 2) = -.0, (12, 3) = .0}, datatype = float[8], order = C_order); errproc := proc (x_bvp) local outpoint, X, Y, yout, L, V, i; option `Copyright (c) 2000 by Waterloo Maple Inc. All rights reserved.`; Digits := 15; outpoint := evalf(x_bvp); X := Vector(12, {(1) = .0, (2) = .2854697839639028, (3) = .5716869140590551, (4) = .8576399682948581, (5) = 1.1431446984501143, (6) = 1.4282783984068121, (7) = 1.7133142551830007, (8) = 1.9984479551396972, (9) = 2.283952685294967, (10) = 2.5699057395307716, (11) = 2.856122869625927, (12) = 3.1415926535898}, datatype = float[8], order = C_order); Y := Matrix(12, 3, {(1, 1) = .0, (1, 2) = .0, (1, 3) = -0.4703383008422516e-7, (2, 1) = 0.27897315929317813e-9, (2, 2) = 0.2446203143649674e-12, (2, 3) = -0.4703383008422516e-7, (3, 1) = 0.5492851275585263e-9, (3, 2) = -0.1611040329481231e-11, (3, 3) = -0.4703383008422516e-7, (4, 1) = 0.7672502368736449e-9, (4, 2) = -0.3836837816343793e-11, (4, 3) = -0.4703383008422516e-7, (5, 1) = 0.9160198947078643e-9, (5, 2) = -0.3994484080689554e-11, (5, 3) = -0.4703383008422516e-7, (6, 1) = 0.9906530258627258e-9, (6, 2) = -0.16167198311477401e-11, (6, 3) = -0.4703383008422516e-7, (7, 1) = 0.9906530258627258e-9, (7, 2) = 0.16171830229009114e-11, (7, 3) = -0.4703383008422516e-7, (8, 1) = 0.9160204919792234e-9, (8, 2) = 0.3995586315024278e-11, (8, 3) = -0.4703383008422516e-7, (9, 1) = 0.7672500099627146e-9, (9, 2) = 0.3835888733577452e-11, (9, 3) = -0.4703383008422516e-7, (10, 1) = 0.549285188177754e-9, (10, 2) = 0.16109158905706954e-11, (10, 3) = -0.4703383008422516e-7, (11, 1) = 0.27897380660131725e-9, (11, 2) = -0.24402293212529904e-12, (11, 3) = -0.4703383008422516e-7, (12, 1) = .0, (12, 2) = .0, (12, 3) = -0.4703383008422516e-7}, datatype = float[8], order = C_order); if not type(outpoint, 'numeric') then if outpoint = "start" or outpoint = "left" then return X[1] elif outpoint = "right" then return X[12] elif outpoint = "order" then return 6 elif outpoint = "error" then return HFloat(4.703383008422516e-8) elif outpoint = "errorproc" then error "this is already the error procedure" elif outpoint = "rawdata" then return [3, 12, [y(x), diff(y(x), x), a], X, Y] else return ('procname')(x_bvp) end if end if; if outpoint < X[1] or X[12] < outpoint then error "solution is only defined in the range %1..%2", X[1], X[12] end if; V := array([1 = 4, 2 = 0]); if Digits <= trunc(evalhf(Digits)) then L := Vector(4, 'datatype' = 'float'[8]); yout := Vector(3, 'datatype' = 'float'[8]); evalhf(`dsolve/numeric/lagrange`(12, 3, X, Y, outpoint, var(yout), var(L), var(V))) else L := Vector(4, 'datatype' = 'sfloat'); yout := Vector(3, 'datatype' = 'sfloat'); `dsolve/numeric/lagrange`(12, 3, X, Y, outpoint, yout, L, V) end if; [x = outpoint, seq('[y(x), diff(y(x), x), a]'[i] = yout[i], i = 1 .. 3)] end proc; if not type(outpoint, 'numeric') then if outpoint = "start" or outpoint = "left" then return X[1] elif outpoint = "method" then return "bvp" elif outpoint = "right" then return X[12] elif outpoint = "order" then return 6 elif outpoint = "error" then return HFloat(4.703383008422516e-8) elif outpoint = "errorproc" then return eval(errproc) elif outpoint = "rawdata" then return [3, 12, "depnames", X, Y, YP] else error "non-numeric value" end if end if; if outpoint < X[1] or X[12] < outpoint then error "solution is only defined in the range %1..%2", X[1], X[12] end if; if Digits <= trunc(evalhf(Digits)) and (_EnvInFsolve <> true or _EnvDSNumericSaveDigits <= trunc(evalhf(Digits))) then V := array( 1 .. 6, [( 1 ) = (7), ( 2 ) = (0), ( 3 ) = (false), ( 4 ) = (false), ( 5 ) = (false), ( 6 ) = (false)  ] ); L := Matrix(7, 2, {(1, 1) = .0, (1, 2) = .0, (2, 1) = .0, (2, 2) = .0, (3, 1) = .0, (3, 2) = .0, (4, 1) = .0, (4, 2) = .0, (5, 1) = .0, (5, 2) = .0, (6, 1) = .0, (6, 2) = .0, (7, 1) = .0, (7, 2) = .0}, datatype = float[8], order = C_order); yout := Vector(3, {(1) = .0, (2) = .0, (3) = .0}, datatype = float[8]); evalhf(`dsolve/numeric/hermite`(12, 3, X, Y, YP, outpoint, var(yout), var(L), var(V))) else if _EnvInFsolve = true then Digits := _EnvDSNumericSaveDigits end if; V := array( 1 .. 6, [( 1 ) = (7), ( 2 ) = (0), ( 3 ) = (false), ( 4 ) = (false), ( 5 ) = (false), ( 6 ) = (false)  ] ); L := Matrix(7, 2, {(1, 1) = 0., (1, 2) = 0., (2, 1) = 0., (2, 2) = 0., (3, 1) = 0., (3, 2) = 0., (4, 1) = 0., (4, 2) = 0., (5, 1) = 0., (5, 2) = 0., (6, 1) = 0., (6, 2) = 0., (7, 1) = 0., (7, 2) = 0.}, order = C_order); yout := Vector(3, {(1) = 0., (2) = 0., (3) = 0.}); `dsolve/numeric/hermite`(12, 3, X, Y, YP, outpoint, yout, L, V) end if; [outpoint, seq(yout[i], i = 1 .. 3)] end proc, (2) = Array(1..4, {(1) = 18446883910565447918, (2) = 18446883910565448358, (3) = 18446883910565448534, (4) = 18446883910565448710}), (3) = [x, y(x), diff(y(x), x), a], (4) = 0}); solnproc := data[1]; if not type(outpoint, 'numeric') then if outpoint = "solnprocedure" then return eval(solnproc) elif member(outpoint, ["start", "left", "right", "errorproc", "rawdata", "order", "error"]) then return solnproc(x) elif outpoint = "sysvars" then return data[3] elif procname <> unknown then return ('procname')(x) else `y(x)` := pointto(data[2][2]); return ('`y(x)`')(x) end if end if; try res := solnproc(outpoint); res[2] catch: error  end try end proc, diff(y(x), x) = proc (x) local res, data, solnproc, `diff(y(x),x)`, outpoint; option `Copyright (c) 2000 by Waterloo Maple Inc. All rights reserved.`; _EnvDSNumericSaveDigits := Digits; Digits := 15; if _EnvInFsolve = true then outpoint := evalf[_EnvDSNumericSaveDigits](x) else outpoint := evalf(x) end if; data := Array(1..4, {(1) = proc (outpoint) local X, Y, YP, yout, errproc, L, V, i; option `Copyright (c) 2000 by Waterloo Maple Inc. All rights reserved.`; X := Vector(12, {(1) = .0, (2) = .2854697839639028, (3) = .5716869140590551, (4) = .8576399682948581, (5) = 1.1431446984501143, (6) = 1.4282783984068121, (7) = 1.7133142551830007, (8) = 1.9984479551396972, (9) = 2.283952685294967, (10) = 2.5699057395307716, (11) = 2.856122869625927, (12) = 3.1415926535898}, datatype = float[8], order = C_order); Y := Matrix(12, 3, {(1, 1) = .0, (1, 2) = 2.0, (1, 3) = 1.000000047004147, (2, 1) = .5632165075382697, (2, 2) = 1.9190589270059564, (2, 3) = 1.000000047004147, (3, 1) = 1.0821029891349827, (3, 2) = 1.6819789296307908, (3, 3) = 1.000000047004147, (4, 1) = 1.512601360669747, (4, 2) = 1.3084483640515898, (4, 3) = 1.000000047004147, (5, 1) = 1.8198844189799297, (5, 2) = .8294701310035484, (5, 3) = 1.000000047004147, (6, 1) = 1.9797229951080126, (6, 2) = .28407192525759983, (6, 3) = 1.000000047004147, (7, 1) = 1.979722995108009, (7, 2) = -.2840719252576249, (7, 3) = 1.000000047004147, (8, 1) = 1.8198844189799201, (8, 2) = -.8294701310035693, (8, 3) = 1.000000047004147, (9, 1) = 1.5126013606697146, (9, 2) = -1.3084483640516273, (9, 3) = 1.000000047004147, (10, 1) = 1.0821029891349383, (10, 2) = -1.6819789296308194, (10, 3) = 1.000000047004147, (11, 1) = .563216507538213, (11, 2) = -1.9190589270059732, (11, 3) = 1.000000047004147, (12, 1) = .0, (12, 2) = -2.0, (12, 3) = 1.000000047004147}, datatype = float[8], order = C_order); YP := Matrix(12, 3, {(1, 1) = 2.0, (1, 2) = -.0, (1, 3) = .0, (2, 1) = 1.9190589270059564, (2, 2) = -.5632165340117812, (2, 3) = .0, (3, 1) = 1.6819789296307908, (3, 2) = -1.0821030399983107, (3, 3) = .0, (4, 1) = 1.3084483640515898, (4, 2) = -1.5126014317682839, (4, 3) = .0, (5, 1) = .8294701310035484, (5, 2) = -1.8198845045220444, (5, 3) = .0, (6, 1) = .28407192525759983, (6, 2) = -1.9797230881632033, (6, 3) = .0, (7, 1) = -.2840719252576249, (7, 2) = -1.9797230881631998, (7, 3) = .0, (8, 1) = -.8294701310035693, (8, 2) = -1.8198845045220349, (8, 3) = .0, (9, 1) = -1.3084483640516273, (9, 2) = -1.5126014317682515, (9, 3) = .0, (10, 1) = -1.6819789296308194, (10, 2) = -1.0821030399982663, (10, 3) = .0, (11, 1) = -1.9190589270059732, (11, 2) = -.5632165340117244, (11, 3) = .0, (12, 1) = -2.0, (12, 2) = -.0, (12, 3) = .0}, datatype = float[8], order = C_order); errproc := proc (x_bvp) local outpoint, X, Y, yout, L, V, i; option `Copyright (c) 2000 by Waterloo Maple Inc. All rights reserved.`; Digits := 15; outpoint := evalf(x_bvp); X := Vector(12, {(1) = .0, (2) = .2854697839639028, (3) = .5716869140590551, (4) = .8576399682948581, (5) = 1.1431446984501143, (6) = 1.4282783984068121, (7) = 1.7133142551830007, (8) = 1.9984479551396972, (9) = 2.283952685294967, (10) = 2.5699057395307716, (11) = 2.856122869625927, (12) = 3.1415926535898}, datatype = float[8], order = C_order); Y := Matrix(12, 3, {(1, 1) = .0, (1, 2) = .0, (1, 3) = -0.4703383008422516e-7, (2, 1) = 0.27897315929317813e-9, (2, 2) = 0.2446203143649674e-12, (2, 3) = -0.4703383008422516e-7, (3, 1) = 0.5492851275585263e-9, (3, 2) = -0.1611040329481231e-11, (3, 3) = -0.4703383008422516e-7, (4, 1) = 0.7672502368736449e-9, (4, 2) = -0.3836837816343793e-11, (4, 3) = -0.4703383008422516e-7, (5, 1) = 0.9160198947078643e-9, (5, 2) = -0.3994484080689554e-11, (5, 3) = -0.4703383008422516e-7, (6, 1) = 0.9906530258627258e-9, (6, 2) = -0.16167198311477401e-11, (6, 3) = -0.4703383008422516e-7, (7, 1) = 0.9906530258627258e-9, (7, 2) = 0.16171830229009114e-11, (7, 3) = -0.4703383008422516e-7, (8, 1) = 0.9160204919792234e-9, (8, 2) = 0.3995586315024278e-11, (8, 3) = -0.4703383008422516e-7, (9, 1) = 0.7672500099627146e-9, (9, 2) = 0.3835888733577452e-11, (9, 3) = -0.4703383008422516e-7, (10, 1) = 0.549285188177754e-9, (10, 2) = 0.16109158905706954e-11, (10, 3) = -0.4703383008422516e-7, (11, 1) = 0.27897380660131725e-9, (11, 2) = -0.24402293212529904e-12, (11, 3) = -0.4703383008422516e-7, (12, 1) = .0, (12, 2) = .0, (12, 3) = -0.4703383008422516e-7}, datatype = float[8], order = C_order); if not type(outpoint, 'numeric') then if outpoint = "start" or outpoint = "left" then return X[1] elif outpoint = "right" then return X[12] elif outpoint = "order" then return 6 elif outpoint = "error" then return HFloat(4.703383008422516e-8) elif outpoint = "errorproc" then error "this is already the error procedure" elif outpoint = "rawdata" then return [3, 12, [y(x), diff(y(x), x), a], X, Y] else return ('procname')(x_bvp) end if end if; if outpoint < X[1] or X[12] < outpoint then error "solution is only defined in the range %1..%2", X[1], X[12] end if; V := array([1 = 4, 2 = 0]); if Digits <= trunc(evalhf(Digits)) then L := Vector(4, 'datatype' = 'float'[8]); yout := Vector(3, 'datatype' = 'float'[8]); evalhf(`dsolve/numeric/lagrange`(12, 3, X, Y, outpoint, var(yout), var(L), var(V))) else L := Vector(4, 'datatype' = 'sfloat'); yout := Vector(3, 'datatype' = 'sfloat'); `dsolve/numeric/lagrange`(12, 3, X, Y, outpoint, yout, L, V) end if; [x = outpoint, seq('[y(x), diff(y(x), x), a]'[i] = yout[i], i = 1 .. 3)] end proc; if not type(outpoint, 'numeric') then if outpoint = "start" or outpoint = "left" then return X[1] elif outpoint = "method" then return "bvp" elif outpoint = "right" then return X[12] elif outpoint = "order" then return 6 elif outpoint = "error" then return HFloat(4.703383008422516e-8) elif outpoint = "errorproc" then return eval(errproc) elif outpoint = "rawdata" then return [3, 12, "depnames", X, Y, YP] else error "non-numeric value" end if end if; if outpoint < X[1] or X[12] < outpoint then error "solution is only defined in the range %1..%2", X[1], X[12] end if; if Digits <= trunc(evalhf(Digits)) and (_EnvInFsolve <> true or _EnvDSNumericSaveDigits <= trunc(evalhf(Digits))) then V := array( 1 .. 6, [( 1 ) = (7), ( 2 ) = (0), ( 3 ) = (false), ( 4 ) = (false), ( 5 ) = (false), ( 6 ) = (false)  ] ); L := Matrix(7, 2, {(1, 1) = .0, (1, 2) = .0, (2, 1) = .0, (2, 2) = .0, (3, 1) = .0, (3, 2) = .0, (4, 1) = .0, (4, 2) = .0, (5, 1) = .0, (5, 2) = .0, (6, 1) = .0, (6, 2) = .0, (7, 1) = .0, (7, 2) = .0}, datatype = float[8], order = C_order); yout := Vector(3, {(1) = .0, (2) = .0, (3) = .0}, datatype = float[8]); evalhf(`dsolve/numeric/hermite`(12, 3, X, Y, YP, outpoint, var(yout), var(L), var(V))) else if _EnvInFsolve = true then Digits := _EnvDSNumericSaveDigits end if; V := array( 1 .. 6, [( 1 ) = (7), ( 2 ) = (0), ( 3 ) = (false), ( 4 ) = (false), ( 5 ) = (false), ( 6 ) = (false)  ] ); L := Matrix(7, 2, {(1, 1) = 0., (1, 2) = 0., (2, 1) = 0., (2, 2) = 0., (3, 1) = 0., (3, 2) = 0., (4, 1) = 0., (4, 2) = 0., (5, 1) = 0., (5, 2) = 0., (6, 1) = 0., (6, 2) = 0., (7, 1) = 0., (7, 2) = 0.}, order = C_order); yout := Vector(3, {(1) = 0., (2) = 0., (3) = 0.}); `dsolve/numeric/hermite`(12, 3, X, Y, YP, outpoint, yout, L, V) end if; [outpoint, seq(yout[i], i = 1 .. 3)] end proc, (2) = Array(1..4, {(1) = 18446883910565447918, (2) = 18446883910565448358, (3) = 18446883910565448534, (4) = 18446883910565448710}), (3) = [x, y(x), diff(y(x), x), a], (4) = 0}); solnproc := data[1]; if not type(outpoint, 'numeric') then if outpoint = "solnprocedure" then return eval(solnproc) elif member(outpoint, ["start", "left", "right", "errorproc", "rawdata", "order", "error"]) then return solnproc(x) elif outpoint = "sysvars" then return data[3] elif procname <> unknown then return ('procname')(x) else `diff(y(x),x)` := pointto(data[2][3]); return ('`diff(y(x),x)`')(x) end if end if; try res := solnproc(outpoint); res[3] catch: error  end try end proc, a = proc (x) local res, data, solnproc, a, outpoint; option `Copyright (c) 2000 by Waterloo Maple Inc. All rights reserved.`; _EnvDSNumericSaveDigits := Digits; Digits := 15; if _EnvInFsolve = true then outpoint := evalf[_EnvDSNumericSaveDigits](x) else outpoint := evalf(x) end if; data := Array(1..4, {(1) = proc (outpoint) local X, Y, YP, yout, errproc, L, V, i; option `Copyright (c) 2000 by Waterloo Maple Inc. All rights reserved.`; X := Vector(12, {(1) = .0, (2) = .2854697839639028, (3) = .5716869140590551, (4) = .8576399682948581, (5) = 1.1431446984501143, (6) = 1.4282783984068121, (7) = 1.7133142551830007, (8) = 1.9984479551396972, (9) = 2.283952685294967, (10) = 2.5699057395307716, (11) = 2.856122869625927, (12) = 3.1415926535898}, datatype = float[8], order = C_order); Y := Matrix(12, 3, {(1, 1) = .0, (1, 2) = 2.0, (1, 3) = 1.000000047004147, (2, 1) = .5632165075382697, (2, 2) = 1.9190589270059564, (2, 3) = 1.000000047004147, (3, 1) = 1.0821029891349827, (3, 2) = 1.6819789296307908, (3, 3) = 1.000000047004147, (4, 1) = 1.512601360669747, (4, 2) = 1.3084483640515898, (4, 3) = 1.000000047004147, (5, 1) = 1.8198844189799297, (5, 2) = .8294701310035484, (5, 3) = 1.000000047004147, (6, 1) = 1.9797229951080126, (6, 2) = .28407192525759983, (6, 3) = 1.000000047004147, (7, 1) = 1.979722995108009, (7, 2) = -.2840719252576249, (7, 3) = 1.000000047004147, (8, 1) = 1.8198844189799201, (8, 2) = -.8294701310035693, (8, 3) = 1.000000047004147, (9, 1) = 1.5126013606697146, (9, 2) = -1.3084483640516273, (9, 3) = 1.000000047004147, (10, 1) = 1.0821029891349383, (10, 2) = -1.6819789296308194, (10, 3) = 1.000000047004147, (11, 1) = .563216507538213, (11, 2) = -1.9190589270059732, (11, 3) = 1.000000047004147, (12, 1) = .0, (12, 2) = -2.0, (12, 3) = 1.000000047004147}, datatype = float[8], order = C_order); YP := Matrix(12, 3, {(1, 1) = 2.0, (1, 2) = -.0, (1, 3) = .0, (2, 1) = 1.9190589270059564, (2, 2) = -.5632165340117812, (2, 3) = .0, (3, 1) = 1.6819789296307908, (3, 2) = -1.0821030399983107, (3, 3) = .0, (4, 1) = 1.3084483640515898, (4, 2) = -1.5126014317682839, (4, 3) = .0, (5, 1) = .8294701310035484, (5, 2) = -1.8198845045220444, (5, 3) = .0, (6, 1) = .28407192525759983, (6, 2) = -1.9797230881632033, (6, 3) = .0, (7, 1) = -.2840719252576249, (7, 2) = -1.9797230881631998, (7, 3) = .0, (8, 1) = -.8294701310035693, (8, 2) = -1.8198845045220349, (8, 3) = .0, (9, 1) = -1.3084483640516273, (9, 2) = -1.5126014317682515, (9, 3) = .0, (10, 1) = -1.6819789296308194, (10, 2) = -1.0821030399982663, (10, 3) = .0, (11, 1) = -1.9190589270059732, (11, 2) = -.5632165340117244, (11, 3) = .0, (12, 1) = -2.0, (12, 2) = -.0, (12, 3) = .0}, datatype = float[8], order = C_order); errproc := proc (x_bvp) local outpoint, X, Y, yout, L, V, i; option `Copyright (c) 2000 by Waterloo Maple Inc. All rights reserved.`; Digits := 15; outpoint := evalf(x_bvp); X := Vector(12, {(1) = .0, (2) = .2854697839639028, (3) = .5716869140590551, (4) = .8576399682948581, (5) = 1.1431446984501143, (6) = 1.4282783984068121, (7) = 1.7133142551830007, (8) = 1.9984479551396972, (9) = 2.283952685294967, (10) = 2.5699057395307716, (11) = 2.856122869625927, (12) = 3.1415926535898}, datatype = float[8], order = C_order); Y := Matrix(12, 3, {(1, 1) = .0, (1, 2) = .0, (1, 3) = -0.4703383008422516e-7, (2, 1) = 0.27897315929317813e-9, (2, 2) = 0.2446203143649674e-12, (2, 3) = -0.4703383008422516e-7, (3, 1) = 0.5492851275585263e-9, (3, 2) = -0.1611040329481231e-11, (3, 3) = -0.4703383008422516e-7, (4, 1) = 0.7672502368736449e-9, (4, 2) = -0.3836837816343793e-11, (4, 3) = -0.4703383008422516e-7, (5, 1) = 0.9160198947078643e-9, (5, 2) = -0.3994484080689554e-11, (5, 3) = -0.4703383008422516e-7, (6, 1) = 0.9906530258627258e-9, (6, 2) = -0.16167198311477401e-11, (6, 3) = -0.4703383008422516e-7, (7, 1) = 0.9906530258627258e-9, (7, 2) = 0.16171830229009114e-11, (7, 3) = -0.4703383008422516e-7, (8, 1) = 0.9160204919792234e-9, (8, 2) = 0.3995586315024278e-11, (8, 3) = -0.4703383008422516e-7, (9, 1) = 0.7672500099627146e-9, (9, 2) = 0.3835888733577452e-11, (9, 3) = -0.4703383008422516e-7, (10, 1) = 0.549285188177754e-9, (10, 2) = 0.16109158905706954e-11, (10, 3) = -0.4703383008422516e-7, (11, 1) = 0.27897380660131725e-9, (11, 2) = -0.24402293212529904e-12, (11, 3) = -0.4703383008422516e-7, (12, 1) = .0, (12, 2) = .0, (12, 3) = -0.4703383008422516e-7}, datatype = float[8], order = C_order); if not type(outpoint, 'numeric') then if outpoint = "start" or outpoint = "left" then return X[1] elif outpoint = "right" then return X[12] elif outpoint = "order" then return 6 elif outpoint = "error" then return HFloat(4.703383008422516e-8) elif outpoint = "errorproc" then error "this is already the error procedure" elif outpoint = "rawdata" then return [3, 12, [y(x), diff(y(x), x), a], X, Y] else return ('procname')(x_bvp) end if end if; if outpoint < X[1] or X[12] < outpoint then error "solution is only defined in the range %1..%2", X[1], X[12] end if; V := array([1 = 4, 2 = 0]); if Digits <= trunc(evalhf(Digits)) then L := Vector(4, 'datatype' = 'float'[8]); yout := Vector(3, 'datatype' = 'float'[8]); evalhf(`dsolve/numeric/lagrange`(12, 3, X, Y, outpoint, var(yout), var(L), var(V))) else L := Vector(4, 'datatype' = 'sfloat'); yout := Vector(3, 'datatype' = 'sfloat'); `dsolve/numeric/lagrange`(12, 3, X, Y, outpoint, yout, L, V) end if; [x = outpoint, seq('[y(x), diff(y(x), x), a]'[i] = yout[i], i = 1 .. 3)] end proc; if not type(outpoint, 'numeric') then if outpoint = "start" or outpoint = "left" then return X[1] elif outpoint = "method" then return "bvp" elif outpoint = "right" then return X[12] elif outpoint = "order" then return 6 elif outpoint = "error" then return HFloat(4.703383008422516e-8) elif outpoint = "errorproc" then return eval(errproc) elif outpoint = "rawdata" then return [3, 12, "depnames", X, Y, YP] else error "non-numeric value" end if end if; if outpoint < X[1] or X[12] < outpoint then error "solution is only defined in the range %1..%2", X[1], X[12] end if; if Digits <= trunc(evalhf(Digits)) and (_EnvInFsolve <> true or _EnvDSNumericSaveDigits <= trunc(evalhf(Digits))) then V := array( 1 .. 6, [( 1 ) = (7), ( 2 ) = (0), ( 3 ) = (false), ( 4 ) = (false), ( 5 ) = (false), ( 6 ) = (false)  ] ); L := Matrix(7, 2, {(1, 1) = .0, (1, 2) = .0, (2, 1) = .0, (2, 2) = .0, (3, 1) = .0, (3, 2) = .0, (4, 1) = .0, (4, 2) = .0, (5, 1) = .0, (5, 2) = .0, (6, 1) = .0, (6, 2) = .0, (7, 1) = .0, (7, 2) = .0}, datatype = float[8], order = C_order); yout := Vector(3, {(1) = .0, (2) = .0, (3) = .0}, datatype = float[8]); evalhf(`dsolve/numeric/hermite`(12, 3, X, Y, YP, outpoint, var(yout), var(L), var(V))) else if _EnvInFsolve = true then Digits := _EnvDSNumericSaveDigits end if; V := array( 1 .. 6, [( 1 ) = (7), ( 2 ) = (0), ( 3 ) = (false), ( 4 ) = (false), ( 5 ) = (false), ( 6 ) = (false)  ] ); L := Matrix(7, 2, {(1, 1) = 0., (1, 2) = 0., (2, 1) = 0., (2, 2) = 0., (3, 1) = 0., (3, 2) = 0., (4, 1) = 0., (4, 2) = 0., (5, 1) = 0., (5, 2) = 0., (6, 1) = 0., (6, 2) = 0., (7, 1) = 0., (7, 2) = 0.}, order = C_order); yout := Vector(3, {(1) = 0., (2) = 0., (3) = 0.}); `dsolve/numeric/hermite`(12, 3, X, Y, YP, outpoint, yout, L, V) end if; [outpoint, seq(yout[i], i = 1 .. 3)] end proc, (2) = Array(1..4, {(1) = 18446883910565447918, (2) = 18446883910565448358, (3) = 18446883910565448534, (4) = 18446883910565448710}), (3) = [x, y(x), diff(y(x), x), a], (4) = 0}); solnproc := data[1]; if not type(outpoint, 'numeric') then if outpoint = "solnprocedure" then return eval(solnproc) elif member(outpoint, ["start", "left", "right", "errorproc", "rawdata", "order", "error"]) then return solnproc(x) elif outpoint = "sysvars" then return data[3] elif procname <> unknown then return ('procname')(x) else a := pointto(data[2][4]); return ('a')(x) end if end if; try res := solnproc(outpoint); res[4] catch: error  end try end proc]

Y := eval(y(x), dsol);

proc (x) local res, data, solnproc, `y(x)`, outpoint; option `Copyright (c) 2000 by Waterloo Maple Inc. All rights reserved.`; _EnvDSNumericSaveDigits := Digits; Digits := 15; if _EnvInFsolve = true then outpoint := evalf[_EnvDSNumericSaveDigits](x) else outpoint := evalf(x) end if; data := Array(1..4, {(1) = proc (outpoint) local X, Y, YP, yout, errproc, L, V, i; option `Copyright (c) 2000 by Waterloo Maple Inc. All rights reserved.`; X := Vector(12, {(1) = .0, (2) = .2854697839639028, (3) = .5716869140590551, (4) = .8576399682948581, (5) = 1.1431446984501143, (6) = 1.4282783984068121, (7) = 1.7133142551830007, (8) = 1.9984479551396972, (9) = 2.283952685294967, (10) = 2.5699057395307716, (11) = 2.856122869625927, (12) = 3.1415926535898}, datatype = float[8], order = C_order); Y := Matrix(12, 3, {(1, 1) = .0, (1, 2) = 2.0, (1, 3) = 1.000000047004147, (2, 1) = .5632165075382697, (2, 2) = 1.9190589270059564, (2, 3) = 1.000000047004147, (3, 1) = 1.0821029891349827, (3, 2) = 1.6819789296307908, (3, 3) = 1.000000047004147, (4, 1) = 1.512601360669747, (4, 2) = 1.3084483640515898, (4, 3) = 1.000000047004147, (5, 1) = 1.8198844189799297, (5, 2) = .8294701310035484, (5, 3) = 1.000000047004147, (6, 1) = 1.9797229951080126, (6, 2) = .28407192525759983, (6, 3) = 1.000000047004147, (7, 1) = 1.979722995108009, (7, 2) = -.2840719252576249, (7, 3) = 1.000000047004147, (8, 1) = 1.8198844189799201, (8, 2) = -.8294701310035693, (8, 3) = 1.000000047004147, (9, 1) = 1.5126013606697146, (9, 2) = -1.3084483640516273, (9, 3) = 1.000000047004147, (10, 1) = 1.0821029891349383, (10, 2) = -1.6819789296308194, (10, 3) = 1.000000047004147, (11, 1) = .563216507538213, (11, 2) = -1.9190589270059732, (11, 3) = 1.000000047004147, (12, 1) = .0, (12, 2) = -2.0, (12, 3) = 1.000000047004147}, datatype = float[8], order = C_order); YP := Matrix(12, 3, {(1, 1) = 2.0, (1, 2) = -.0, (1, 3) = .0, (2, 1) = 1.9190589270059564, (2, 2) = -.5632165340117812, (2, 3) = .0, (3, 1) = 1.6819789296307908, (3, 2) = -1.0821030399983107, (3, 3) = .0, (4, 1) = 1.3084483640515898, (4, 2) = -1.5126014317682839, (4, 3) = .0, (5, 1) = .8294701310035484, (5, 2) = -1.8198845045220444, (5, 3) = .0, (6, 1) = .28407192525759983, (6, 2) = -1.9797230881632033, (6, 3) = .0, (7, 1) = -.2840719252576249, (7, 2) = -1.9797230881631998, (7, 3) = .0, (8, 1) = -.8294701310035693, (8, 2) = -1.8198845045220349, (8, 3) = .0, (9, 1) = -1.3084483640516273, (9, 2) = -1.5126014317682515, (9, 3) = .0, (10, 1) = -1.6819789296308194, (10, 2) = -1.0821030399982663, (10, 3) = .0, (11, 1) = -1.9190589270059732, (11, 2) = -.5632165340117244, (11, 3) = .0, (12, 1) = -2.0, (12, 2) = -.0, (12, 3) = .0}, datatype = float[8], order = C_order); errproc := proc (x_bvp) local outpoint, X, Y, yout, L, V, i; option `Copyright (c) 2000 by Waterloo Maple Inc. All rights reserved.`; Digits := 15; outpoint := evalf(x_bvp); X := Vector(12, {(1) = .0, (2) = .2854697839639028, (3) = .5716869140590551, (4) = .8576399682948581, (5) = 1.1431446984501143, (6) = 1.4282783984068121, (7) = 1.7133142551830007, (8) = 1.9984479551396972, (9) = 2.283952685294967, (10) = 2.5699057395307716, (11) = 2.856122869625927, (12) = 3.1415926535898}, datatype = float[8], order = C_order); Y := Matrix(12, 3, {(1, 1) = .0, (1, 2) = .0, (1, 3) = -0.4703383008422516e-7, (2, 1) = 0.27897315929317813e-9, (2, 2) = 0.2446203143649674e-12, (2, 3) = -0.4703383008422516e-7, (3, 1) = 0.5492851275585263e-9, (3, 2) = -0.1611040329481231e-11, (3, 3) = -0.4703383008422516e-7, (4, 1) = 0.7672502368736449e-9, (4, 2) = -0.3836837816343793e-11, (4, 3) = -0.4703383008422516e-7, (5, 1) = 0.9160198947078643e-9, (5, 2) = -0.3994484080689554e-11, (5, 3) = -0.4703383008422516e-7, (6, 1) = 0.9906530258627258e-9, (6, 2) = -0.16167198311477401e-11, (6, 3) = -0.4703383008422516e-7, (7, 1) = 0.9906530258627258e-9, (7, 2) = 0.16171830229009114e-11, (7, 3) = -0.4703383008422516e-7, (8, 1) = 0.9160204919792234e-9, (8, 2) = 0.3995586315024278e-11, (8, 3) = -0.4703383008422516e-7, (9, 1) = 0.7672500099627146e-9, (9, 2) = 0.3835888733577452e-11, (9, 3) = -0.4703383008422516e-7, (10, 1) = 0.549285188177754e-9, (10, 2) = 0.16109158905706954e-11, (10, 3) = -0.4703383008422516e-7, (11, 1) = 0.27897380660131725e-9, (11, 2) = -0.24402293212529904e-12, (11, 3) = -0.4703383008422516e-7, (12, 1) = .0, (12, 2) = .0, (12, 3) = -0.4703383008422516e-7}, datatype = float[8], order = C_order); if not type(outpoint, 'numeric') then if outpoint = "start" or outpoint = "left" then return X[1] elif outpoint = "right" then return X[12] elif outpoint = "order" then return 6 elif outpoint = "error" then return HFloat(4.703383008422516e-8) elif outpoint = "errorproc" then error "this is already the error procedure" elif outpoint = "rawdata" then return [3, 12, [y(x), diff(y(x), x), a], X, Y] else return ('procname')(x_bvp) end if end if; if outpoint < X[1] or X[12] < outpoint then error "solution is only defined in the range %1..%2", X[1], X[12] end if; V := array([1 = 4, 2 = 0]); if Digits <= trunc(evalhf(Digits)) then L := Vector(4, 'datatype' = 'float'[8]); yout := Vector(3, 'datatype' = 'float'[8]); evalhf(`dsolve/numeric/lagrange`(12, 3, X, Y, outpoint, var(yout), var(L), var(V))) else L := Vector(4, 'datatype' = 'sfloat'); yout := Vector(3, 'datatype' = 'sfloat'); `dsolve/numeric/lagrange`(12, 3, X, Y, outpoint, yout, L, V) end if; [x = outpoint, seq('[y(x), diff(y(x), x), a]'[i] = yout[i], i = 1 .. 3)] end proc; if not type(outpoint, 'numeric') then if outpoint = "start" or outpoint = "left" then return X[1] elif outpoint = "method" then return "bvp" elif outpoint = "right" then return X[12] elif outpoint = "order" then return 6 elif outpoint = "error" then return HFloat(4.703383008422516e-8) elif outpoint = "errorproc" then return eval(errproc) elif outpoint = "rawdata" then return [3, 12, "depnames", X, Y, YP] else error "non-numeric value" end if end if; if outpoint < X[1] or X[12] < outpoint then error "solution is only defined in the range %1..%2", X[1], X[12] end if; if Digits <= trunc(evalhf(Digits)) and (_EnvInFsolve <> true or _EnvDSNumericSaveDigits <= trunc(evalhf(Digits))) then V := array( 1 .. 6, [( 1 ) = (7), ( 2 ) = (0), ( 3 ) = (false), ( 4 ) = (false), ( 5 ) = (false), ( 6 ) = (false)  ] ); L := Matrix(7, 2, {(1, 1) = .0, (1, 2) = .0, (2, 1) = .0, (2, 2) = .0, (3, 1) = .0, (3, 2) = .0, (4, 1) = .0, (4, 2) = .0, (5, 1) = .0, (5, 2) = .0, (6, 1) = .0, (6, 2) = .0, (7, 1) = .0, (7, 2) = .0}, datatype = float[8], order = C_order); yout := Vector(3, {(1) = .0, (2) = .0, (3) = .0}, datatype = float[8]); evalhf(`dsolve/numeric/hermite`(12, 3, X, Y, YP, outpoint, var(yout), var(L), var(V))) else if _EnvInFsolve = true then Digits := _EnvDSNumericSaveDigits end if; V := array( 1 .. 6, [( 1 ) = (7), ( 2 ) = (0), ( 3 ) = (false), ( 4 ) = (false), ( 5 ) = (false), ( 6 ) = (false)  ] ); L := Matrix(7, 2, {(1, 1) = 0., (1, 2) = 0., (2, 1) = 0., (2, 2) = 0., (3, 1) = 0., (3, 2) = 0., (4, 1) = 0., (4, 2) = 0., (5, 1) = 0., (5, 2) = 0., (6, 1) = 0., (6, 2) = 0., (7, 1) = 0., (7, 2) = 0.}, order = C_order); yout := Vector(3, {(1) = 0., (2) = 0., (3) = 0.}); `dsolve/numeric/hermite`(12, 3, X, Y, YP, outpoint, yout, L, V) end if; [outpoint, seq(yout[i], i = 1 .. 3)] end proc, (2) = Array(1..4, {(1) = 18446883910565447918, (2) = 18446883910565448358, (3) = 18446883910565448534, (4) = 18446883910565448710}), (3) = [x, y(x), diff(y(x), x), a], (4) = 0}); solnproc := data[1]; if not type(outpoint, 'numeric') then if outpoint = "solnprocedure" then return eval(solnproc) elif member(outpoint, ["start", "left", "right", "errorproc", "rawdata", "order", "error"]) then return solnproc(x) elif outpoint = "sysvars" then return data[3] elif procname <> unknown then return ('procname')(x) else `y(x)` := pointto(data[2][2]); return ('`y(x)`')(x) end if end if; try res := solnproc(outpoint); res[2] catch: error  end try end proc

A := eval(a, dsol);

proc (x) local res, data, solnproc, a, outpoint; option `Copyright (c) 2000 by Waterloo Maple Inc. All rights reserved.`; _EnvDSNumericSaveDigits := Digits; Digits := 15; if _EnvInFsolve = true then outpoint := evalf[_EnvDSNumericSaveDigits](x) else outpoint := evalf(x) end if; data := Array(1..4, {(1) = proc (outpoint) local X, Y, YP, yout, errproc, L, V, i; option `Copyright (c) 2000 by Waterloo Maple Inc. All rights reserved.`; X := Vector(12, {(1) = .0, (2) = .2854697839639028, (3) = .5716869140590551, (4) = .8576399682948581, (5) = 1.1431446984501143, (6) = 1.4282783984068121, (7) = 1.7133142551830007, (8) = 1.9984479551396972, (9) = 2.283952685294967, (10) = 2.5699057395307716, (11) = 2.856122869625927, (12) = 3.1415926535898}, datatype = float[8], order = C_order); Y := Matrix(12, 3, {(1, 1) = .0, (1, 2) = 2.0, (1, 3) = 1.000000047004147, (2, 1) = .5632165075382697, (2, 2) = 1.9190589270059564, (2, 3) = 1.000000047004147, (3, 1) = 1.0821029891349827, (3, 2) = 1.6819789296307908, (3, 3) = 1.000000047004147, (4, 1) = 1.512601360669747, (4, 2) = 1.3084483640515898, (4, 3) = 1.000000047004147, (5, 1) = 1.8198844189799297, (5, 2) = .8294701310035484, (5, 3) = 1.000000047004147, (6, 1) = 1.9797229951080126, (6, 2) = .28407192525759983, (6, 3) = 1.000000047004147, (7, 1) = 1.979722995108009, (7, 2) = -.2840719252576249, (7, 3) = 1.000000047004147, (8, 1) = 1.8198844189799201, (8, 2) = -.8294701310035693, (8, 3) = 1.000000047004147, (9, 1) = 1.5126013606697146, (9, 2) = -1.3084483640516273, (9, 3) = 1.000000047004147, (10, 1) = 1.0821029891349383, (10, 2) = -1.6819789296308194, (10, 3) = 1.000000047004147, (11, 1) = .563216507538213, (11, 2) = -1.9190589270059732, (11, 3) = 1.000000047004147, (12, 1) = .0, (12, 2) = -2.0, (12, 3) = 1.000000047004147}, datatype = float[8], order = C_order); YP := Matrix(12, 3, {(1, 1) = 2.0, (1, 2) = -.0, (1, 3) = .0, (2, 1) = 1.9190589270059564, (2, 2) = -.5632165340117812, (2, 3) = .0, (3, 1) = 1.6819789296307908, (3, 2) = -1.0821030399983107, (3, 3) = .0, (4, 1) = 1.3084483640515898, (4, 2) = -1.5126014317682839, (4, 3) = .0, (5, 1) = .8294701310035484, (5, 2) = -1.8198845045220444, (5, 3) = .0, (6, 1) = .28407192525759983, (6, 2) = -1.9797230881632033, (6, 3) = .0, (7, 1) = -.2840719252576249, (7, 2) = -1.9797230881631998, (7, 3) = .0, (8, 1) = -.8294701310035693, (8, 2) = -1.8198845045220349, (8, 3) = .0, (9, 1) = -1.3084483640516273, (9, 2) = -1.5126014317682515, (9, 3) = .0, (10, 1) = -1.6819789296308194, (10, 2) = -1.0821030399982663, (10, 3) = .0, (11, 1) = -1.9190589270059732, (11, 2) = -.5632165340117244, (11, 3) = .0, (12, 1) = -2.0, (12, 2) = -.0, (12, 3) = .0}, datatype = float[8], order = C_order); errproc := proc (x_bvp) local outpoint, X, Y, yout, L, V, i; option `Copyright (c) 2000 by Waterloo Maple Inc. All rights reserved.`; Digits := 15; outpoint := evalf(x_bvp); X := Vector(12, {(1) = .0, (2) = .2854697839639028, (3) = .5716869140590551, (4) = .8576399682948581, (5) = 1.1431446984501143, (6) = 1.4282783984068121, (7) = 1.7133142551830007, (8) = 1.9984479551396972, (9) = 2.283952685294967, (10) = 2.5699057395307716, (11) = 2.856122869625927, (12) = 3.1415926535898}, datatype = float[8], order = C_order); Y := Matrix(12, 3, {(1, 1) = .0, (1, 2) = .0, (1, 3) = -0.4703383008422516e-7, (2, 1) = 0.27897315929317813e-9, (2, 2) = 0.2446203143649674e-12, (2, 3) = -0.4703383008422516e-7, (3, 1) = 0.5492851275585263e-9, (3, 2) = -0.1611040329481231e-11, (3, 3) = -0.4703383008422516e-7, (4, 1) = 0.7672502368736449e-9, (4, 2) = -0.3836837816343793e-11, (4, 3) = -0.4703383008422516e-7, (5, 1) = 0.9160198947078643e-9, (5, 2) = -0.3994484080689554e-11, (5, 3) = -0.4703383008422516e-7, (6, 1) = 0.9906530258627258e-9, (6, 2) = -0.16167198311477401e-11, (6, 3) = -0.4703383008422516e-7, (7, 1) = 0.9906530258627258e-9, (7, 2) = 0.16171830229009114e-11, (7, 3) = -0.4703383008422516e-7, (8, 1) = 0.9160204919792234e-9, (8, 2) = 0.3995586315024278e-11, (8, 3) = -0.4703383008422516e-7, (9, 1) = 0.7672500099627146e-9, (9, 2) = 0.3835888733577452e-11, (9, 3) = -0.4703383008422516e-7, (10, 1) = 0.549285188177754e-9, (10, 2) = 0.16109158905706954e-11, (10, 3) = -0.4703383008422516e-7, (11, 1) = 0.27897380660131725e-9, (11, 2) = -0.24402293212529904e-12, (11, 3) = -0.4703383008422516e-7, (12, 1) = .0, (12, 2) = .0, (12, 3) = -0.4703383008422516e-7}, datatype = float[8], order = C_order); if not type(outpoint, 'numeric') then if outpoint = "start" or outpoint = "left" then return X[1] elif outpoint = "right" then return X[12] elif outpoint = "order" then return 6 elif outpoint = "error" then return HFloat(4.703383008422516e-8) elif outpoint = "errorproc" then error "this is already the error procedure" elif outpoint = "rawdata" then return [3, 12, [y(x), diff(y(x), x), a], X, Y] else return ('procname')(x_bvp) end if end if; if outpoint < X[1] or X[12] < outpoint then error "solution is only defined in the range %1..%2", X[1], X[12] end if; V := array([1 = 4, 2 = 0]); if Digits <= trunc(evalhf(Digits)) then L := Vector(4, 'datatype' = 'float'[8]); yout := Vector(3, 'datatype' = 'float'[8]); evalhf(`dsolve/numeric/lagrange`(12, 3, X, Y, outpoint, var(yout), var(L), var(V))) else L := Vector(4, 'datatype' = 'sfloat'); yout := Vector(3, 'datatype' = 'sfloat'); `dsolve/numeric/lagrange`(12, 3, X, Y, outpoint, yout, L, V) end if; [x = outpoint, seq('[y(x), diff(y(x), x), a]'[i] = yout[i], i = 1 .. 3)] end proc; if not type(outpoint, 'numeric') then if outpoint = "start" or outpoint = "left" then return X[1] elif outpoint = "method" then return "bvp" elif outpoint = "right" then return X[12] elif outpoint = "order" then return 6 elif outpoint = "error" then return HFloat(4.703383008422516e-8) elif outpoint = "errorproc" then return eval(errproc) elif outpoint = "rawdata" then return [3, 12, "depnames", X, Y, YP] else error "non-numeric value" end if end if; if outpoint < X[1] or X[12] < outpoint then error "solution is only defined in the range %1..%2", X[1], X[12] end if; if Digits <= trunc(evalhf(Digits)) and (_EnvInFsolve <> true or _EnvDSNumericSaveDigits <= trunc(evalhf(Digits))) then V := array( 1 .. 6, [( 1 ) = (7), ( 2 ) = (0), ( 3 ) = (false), ( 4 ) = (false), ( 5 ) = (false), ( 6 ) = (false)  ] ); L := Matrix(7, 2, {(1, 1) = .0, (1, 2) = .0, (2, 1) = .0, (2, 2) = .0, (3, 1) = .0, (3, 2) = .0, (4, 1) = .0, (4, 2) = .0, (5, 1) = .0, (5, 2) = .0, (6, 1) = .0, (6, 2) = .0, (7, 1) = .0, (7, 2) = .0}, datatype = float[8], order = C_order); yout := Vector(3, {(1) = .0, (2) = .0, (3) = .0}, datatype = float[8]); evalhf(`dsolve/numeric/hermite`(12, 3, X, Y, YP, outpoint, var(yout), var(L), var(V))) else if _EnvInFsolve = true then Digits := _EnvDSNumericSaveDigits end if; V := array( 1 .. 6, [( 1 ) = (7), ( 2 ) = (0), ( 3 ) = (false), ( 4 ) = (false), ( 5 ) = (false), ( 6 ) = (false)  ] ); L := Matrix(7, 2, {(1, 1) = 0., (1, 2) = 0., (2, 1) = 0., (2, 2) = 0., (3, 1) = 0., (3, 2) = 0., (4, 1) = 0., (4, 2) = 0., (5, 1) = 0., (5, 2) = 0., (6, 1) = 0., (6, 2) = 0., (7, 1) = 0., (7, 2) = 0.}, order = C_order); yout := Vector(3, {(1) = 0., (2) = 0., (3) = 0.}); `dsolve/numeric/hermite`(12, 3, X, Y, YP, outpoint, yout, L, V) end if; [outpoint, seq(yout[i], i = 1 .. 3)] end proc, (2) = Array(1..4, {(1) = 18446883910565447918, (2) = 18446883910565448358, (3) = 18446883910565448534, (4) = 18446883910565448710}), (3) = [x, y(x), diff(y(x), x), a], (4) = 0}); solnproc := data[1]; if not type(outpoint, 'numeric') then if outpoint = "solnprocedure" then return eval(solnproc) elif member(outpoint, ["start", "left", "right", "errorproc", "rawdata", "order", "error"]) then return solnproc(x) elif outpoint = "sysvars" then return data[3] elif procname <> unknown then return ('procname')(x) else a := pointto(data[2][4]); return ('a')(x) end if end if; try res := solnproc(outpoint); res[4] catch: error  end try end proc

plot([Y(x),A(x)], x=0..Pi, color=[blue,red], legend=[y(x),a]);


 

Download zz.mw

@jefryyhalim I see what you are attempting to do.  In your worksheet Longitudinal_ODE.mw you have a system of 5 fourth order differential equations and 20 boundary conditions.  All of these are linear and homogeneous.  Clearly there is a trivial solution consisting of all zeros.  (This was pointed out by mmcdara.)  Furthermore, from your original worksheet SP1JH1B1.mw I gather that you wish to introduce a parameter, sigma, into the coefficients of your system, and then you wish to determine sigma so that the system has a nontrivial solution.

I don't know the physical meanings of your variables Vlp1, Vup1, etc., but you know what they mean, and probably you can guess what a buckled configuration should look like.  Let's say that you expect that the solution Vp1(x) [you pick the right one] to be something like an arch, that is, zero at the endpoints and nonzero in between.  Then add an extra condition, V1p(L/2)=1 to your existing 20 conditions.  Then solve your system of differential equations together with the 21 conditions numerically, for the six unknowns consisting of your original five, plus the sigma, as in:
dsol := dsolve(
        { the five DEs } union {the 21 conditions},
        { Vup1(x),Vp1(x),Vp2(x),Vlp1(x),Vlp2(x), sigma },
        numeric, output=listprocedure);

If this succeeds, then sigma will be the desired buckling load.

Good luck!

 

@jefryyhalim I don't quite understand your mathematical model.  The buckling and deformation of a plate are customarily modeled as partial differential equations with x and y coordinates denoting the position on the plate.  Your equations are ordinary differential equations in terms of a single independent variable x.  Where is the plate's y coordinate in your model?

Question: To analyze the buckling, you need to specify boundary conditions all around the plate.  That involves both the x and y coordinates. What are the plate's boundary conditions?

Suggestion 1:  Before analyzing the buckling of  a plate, I suggest that you do the much simpler problem of buckling of a beam. Do you know how to do that?

Suggestion 2: The very last command in your Longitudinal_ODE.mw is:

sol_L:=evalf(value(dsolve(...)));

That composition of three commands obscures the ensuing error message since it is unclear which of the three commands has led to it.  Don't compound commands. Execute them one at a time to ensure the success of one before applying the next.  Thus, we begin with the innermost command:

dsolve(...);

and we immediately see that it returns nothing, indicating that there is something wrong with your system of differential equations.

 

@jefryyhalim Here is how one solves a differential equation along with initial conditions in Maple:

de := diff(y(x),x,x) + 9*y(x) = 0;
ic := y(0)=1, D(y)(0)=2;
dsolve({de,ic});

This yields:

                  y(x) = 2*sin(3*x)*(1/3)+cos(3*x)

This is illustrated in the very first example of Maple's help page on dsolve(). You should read that page.

You say you need the coefficients in order to form a matrix and then calculate eigenvalues.  That strikes me as a roundabout way of achieving something that may be doable in a shorter way.  If you explain your overall goal (rather than the steps toward it) someone may be able to offer constructive advice.

Another remark: In several places in your worksheet you have constructs similar to

f(x) := x^2;

That doesn't do what you want.  To see the problem, do f(7).  Do you get 49?  No!

To correct way is:

f := x -> x^2;

Try f(7) now.

 

 

I looked over your worksheet but couldn't make heads or tails of it.  If possible, just write down the complete set of your differential equations and boundary conditions clearly as plain mathematics (no Maple calculation).  Then someone here should be able to help you code that in Maple.

One observation: In your approach to solving a differential equation, you obtain the general solution first, and then apply the initial/boundary conditions in order to determine the integration constants.  Maple is capable of doing those two steps together.  Doing so will simplify your calculations significantly.

 

 

 

@Carl Love What you have written is correct, however it doesn't address the original poster's question who is asking why the limit of the difference quotient yields zero rather than 3.  I don't have a good explanation.  Is it perhaps due to a bug in Maple's limit()?

What you have shown looks good.  I suspect that the error is due to something else that you have not shown.

Consider posting your entire worksheet.  For that, click on the big fat green arrow which appears in the window where you type your message to MaplePrimes.

@verdin OK, I will do the calculations and post it as an Answer to close this thread.

@verdin Have a look at this modified worksheet where I have picked arbitrary parameter values and attempted to find the system's equilibria.  No equilibria are found.  That's because the parameter values have been picked blindly.  With your insight into the origins of the problem you should be able to come up with a meaningful set of parameters which might yield an equilibrium.

mw.mw

@tomleslie The OP did not ask for a path integral.  He wants to integrate the given expression over (p,q,w) ∈ R3×R3×R3, where p=⟨p1,p2,p2⟩, etc., are independent variables. Thus, we have a nine-fold integral over R9.  I haven't attempted doing that but just from the looks of it I expect it to be complicated.

 

@tdavid I have fixed a few errors in your worksheet.  Here is what we get now.

restart; rho := proc (phi) options operator, arrow; chi/(1-e*cos(2*phi)) end proc

e := .29

chi := .5

de := diff(L(phi), phi) = sqrt(rho(phi)^2+(D(rho))(phi)^2)

diff(L(phi), phi) = (.25/(1-.29*cos(2*phi))^2+0.84100e-1*sin(2*phi)^2/(1-.29*cos(2*phi))^4)^(1/2)

(1)

ic := L(0) = 0

L(0) = 0

(2)

dsol := dsolve({de, ic}, numeric, range = 0 .. 2*Pi)

proc (x_rkf45) local _res, _dat, _vars, _solnproc, _xout, _ndsol, _pars, _n, _i; option `Copyright (c) 2000 by Waterloo Maple Inc. All rights reserved.`; if 1 < nargs then error "invalid input: too many arguments" end if; _EnvDSNumericSaveDigits := Digits; Digits := 15; if _EnvInFsolve = true then _xout := evalf[_EnvDSNumericSaveDigits](x_rkf45) else _xout := evalf(x_rkf45) end if; _dat := Array(1..4, {(1) = proc (_xin) local _xout, _dtbl, _dat, _vmap, _x0, _y0, _val, _dig, _n, _ne, _nd, _nv, _pars, _ini, _par, _i, _j, _k, _src; option `Copyright (c) 2002 by Waterloo Maple Inc. All rights reserved.`; table( [( "right" ) = 6.28318530717958, ( "left" ) = 0., ( "complex" ) = false ] ) _xout := _xin; _pars := []; _dtbl := array( 1 .. 4, [( 1 ) = (array( 1 .. 26, [( 1 ) = (datatype = float[8], order = C_order, storage = rectangular), ( 2 ) = (datatype = float[8], order = C_order, storage = rectangular), ( 3 ) = ([0, 0, 0, Array(1..0, 1..2, {}, datatype = float[8], order = C_order)]), ( 4 ) = (Array(1..63, {(1) = 1, (2) = 1, (3) = 0, (4) = 0, (5) = 0, (6) = 0, (7) = 1, (8) = 0, (9) = 0, (10) = 1, (11) = 0, (12) = 0, (13) = 0, (14) = 0, (15) = 0, (16) = 0, (17) = 0, (18) = 1, (19) = 30000, (20) = 0, (21) = 0, (22) = 1, (23) = 4, (24) = 0, (25) = 1, (26) = 15, (27) = 1, (28) = 0, (29) = 1, (30) = 3, (31) = 3, (32) = 0, (33) = 1, (34) = 0, (35) = 0, (36) = 0, (37) = 0, (38) = 0, (39) = 0, (40) = 0, (41) = 0, (42) = 0, (43) = 1, (44) = 0, (45) = 0, (46) = 0, (47) = 0, (48) = 0, (49) = 0, (50) = 50, (51) = 1, (52) = 0, (53) = 0, (54) = 0, (55) = 0, (56) = 0, (57) = 0, (58) = 0, (59) = 10000, (60) = 0, (61) = 1000, (62) = 0, (63) = 0}, datatype = integer[8])), ( 5 ) = (Array(1..28, {(1) = 6.28318530717958, (2) = 0.10e-5, (3) = .0, (4) = 0.500001e-14, (5) = .0, (6) = 0.7167675433294995e-2, (7) = .0, (8) = 0.10e-5, (9) = .0, (10) = .0, (11) = .0, (12) = .0, (13) = 1.0, (14) = .0, (15) = .49999999999999, (16) = .0, (17) = 1.0, (18) = 1.0, (19) = .0, (20) = .0, (21) = 1.0, (22) = 1.0, (23) = .0, (24) = .0, (25) = 0.10e-14, (26) = .0, (27) = .0, (28) = .0}, datatype = float[8], order = C_order)), ( 6 ) = (Array(1..1, {(1) = .0}, datatype = float[8], order = C_order)), ( 7 ) = ([Array(1..4, 1..7, {(1, 1) = .0, (1, 2) = .203125, (1, 3) = .3046875, (1, 4) = .75, (1, 5) = .8125, (1, 6) = .40625, (1, 7) = .8125, (2, 1) = 0.6378173828125e-1, (2, 2) = .0, (2, 3) = .279296875, (2, 4) = .27237892150878906, (2, 5) = -0.9686851501464844e-1, (2, 6) = 0.1956939697265625e-1, (2, 7) = .5381584167480469, (3, 1) = 0.31890869140625e-1, (3, 2) = .0, (3, 3) = -.34375, (3, 4) = -.335235595703125, (3, 5) = .2296142578125, (3, 6) = .41748046875, (3, 7) = 11.480712890625, (4, 1) = 0.9710520505905151e-1, (4, 2) = .0, (4, 3) = .40350341796875, (4, 4) = 0.20297467708587646e-1, (4, 5) = -0.6054282188415527e-2, (4, 6) = -0.4770040512084961e-1, (4, 7) = .77858567237854}, datatype = float[8], order = C_order), Array(1..6, 1..6, {(1, 1) = .0, (1, 2) = .0, (1, 3) = .0, (1, 4) = .0, (1, 5) = .0, (1, 6) = 1.0, (2, 1) = .25, (2, 2) = .0, (2, 3) = .0, (2, 4) = .0, (2, 5) = .0, (2, 6) = 1.0, (3, 1) = .1875, (3, 2) = .5625, (3, 3) = .0, (3, 4) = .0, (3, 5) = .0, (3, 6) = 2.0, (4, 1) = .23583984375, (4, 2) = -.87890625, (4, 3) = .890625, (4, 4) = .0, (4, 5) = .0, (4, 6) = .2681884765625, (5, 1) = .1272735595703125, (5, 2) = -.5009765625, (5, 3) = .44921875, (5, 4) = -0.128936767578125e-1, (5, 5) = .0, (5, 6) = 0.626220703125e-1, (6, 1) = -0.927734375e-1, (6, 2) = .626220703125, (6, 3) = -.4326171875, (6, 4) = .1418304443359375, (6, 5) = -0.861053466796875e-1, (6, 6) = .3131103515625}, datatype = float[8], order = C_order), Array(1..6, {(1) = .0, (2) = .386, (3) = .21, (4) = .63, (5) = 1.0, (6) = 1.0}, datatype = float[8], order = C_order), Array(1..6, {(1) = .25, (2) = -.1043, (3) = .1035, (4) = -0.362e-1, (5) = .0, (6) = .0}, datatype = float[8], order = C_order), Array(1..6, 1..5, {(1, 1) = .0, (1, 2) = .0, (1, 3) = .0, (1, 4) = .0, (1, 5) = .0, (2, 1) = 1.544, (2, 2) = .0, (2, 3) = .0, (2, 4) = .0, (2, 5) = .0, (3, 1) = .9466785280815533, (3, 2) = .25570116989825814, (3, 3) = .0, (3, 4) = .0, (3, 5) = .0, (4, 1) = 3.3148251870684886, (4, 2) = 2.896124015972123, (4, 3) = .9986419139977808, (4, 4) = .0, (4, 5) = .0, (5, 1) = 1.2212245092262748, (5, 2) = 6.019134481287752, (5, 3) = 12.537083329320874, (5, 4) = -.687886036105895, (5, 5) = .0, (6, 1) = 1.2212245092262748, (6, 2) = 6.019134481287752, (6, 3) = 12.537083329320874, (6, 4) = -.687886036105895, (6, 5) = 1.0}, datatype = float[8], order = C_order), Array(1..6, 1..5, {(1, 1) = .0, (1, 2) = .0, (1, 3) = .0, (1, 4) = .0, (1, 5) = .0, (2, 1) = -5.6688, (2, 2) = .0, (2, 3) = .0, (2, 4) = .0, (2, 5) = .0, (3, 1) = -2.4300933568337584, (3, 2) = -.20635991570891224, (3, 3) = .0, (3, 4) = .0, (3, 5) = .0, (4, 1) = -.10735290581452621, (4, 2) = -9.594562251021896, (4, 3) = -20.470286148096154, (4, 4) = .0, (4, 5) = .0, (5, 1) = 7.496443313968615, (5, 2) = -10.246804314641219, (5, 3) = -33.99990352819906, (5, 4) = 11.708908932061595, (5, 5) = .0, (6, 1) = 8.083246795922411, (6, 2) = -7.981132988062785, (6, 3) = -31.52159432874373, (6, 4) = 16.319305431231363, (6, 5) = -6.0588182388340535}, datatype = float[8], order = C_order), Array(1..3, 1..5, {(1, 1) = .0, (1, 2) = .0, (1, 3) = .0, (1, 4) = .0, (1, 5) = .0, (2, 1) = 10.126235083446911, (2, 2) = -7.487995877607633, (2, 3) = -34.800918615557414, (2, 4) = -7.9927717075687275, (2, 5) = 1.0251377232956207, (3, 1) = -.6762803392806898, (3, 2) = 6.087714651678606, (3, 3) = 16.43084320892463, (3, 4) = 24.767225114183653, (3, 5) = -6.5943891257167815}, datatype = float[8], order = C_order)]), ( 9 ) = ([Array(1..1, {(1) = .1}, datatype = float[8], order = C_order), Array(1..1, {(1) = 3.615400797110011}, datatype = float[8], order = C_order), Array(1..1, {(1) = .0}, datatype = float[8], order = C_order), Array(1..1, {(1) = .7098385115080822}, datatype = float[8], order = C_order), Array(1..1, {(1) = .0}, datatype = float[8], order = C_order), Array(1..1, 1..1, {(1, 1) = .0}, datatype = float[8], order = C_order), Array(1..1, 1..1, {(1, 1) = .0}, datatype = float[8], order = C_order), Array(1..1, 1..6, {(1, 1) = .7098385115080822, (1, 2) = .7042821826761728, (1, 3) = .7046200317368113, (1, 4) = .708997841928018, (1, 5) = .7098385115080822, (1, 6) = .7052461897764069}, datatype = float[8], order = C_order), Array(1..1, {(1) = 0}, datatype = integer[8]), Array(1..1, {(1) = 3.565978698997918}, datatype = float[8], order = C_order), Array(1..1, {(1) = 3.6620152268172546}, datatype = float[8], order = C_order), Array(1..1, {(1) = 0.14382618571673333e-5}, datatype = float[8], order = C_order), Array(1..1, {(1) = .0}, datatype = float[8], order = C_order), Array(1..1, {(1) = .706129929097878}, datatype = float[8], order = C_order), Array(1..2, {(1) = .0, (2) = .0}, datatype = float[8], order = C_order)]), ( 8 ) = ([Array(1..1, {(1) = .0}, datatype = float[8], order = C_order), Array(1..1, {(1) = .0}, datatype = float[8], order = C_order), Array(1..1, {(1) = .7042253521126761}, datatype = float[8], order = C_order), 0, 0]), ( 11 ) = (Array(1..6, 0..1, {(1, 1) = .0, (2, 0) = .0, (2, 1) = .0, (3, 0) = .0, (3, 1) = .0, (4, 0) = .0, (4, 1) = .0, (5, 0) = .0, (5, 1) = .0, (6, 0) = .0, (6, 1) = .0}, datatype = float[8], order = C_order)), ( 10 ) = ([proc (N, X, Y, YP) option `[Y[1] = L(phi)]`; if .25/(1-.29*cos(2*X))^2+0.84100e-1*sin(2*X)^2/(1-.29*cos(2*X))^4 < 0 then YP[1] := undefined; return 0 end if; YP[1] := evalf((.25/(1-.29*cos(2*X))^2+0.84100e-1*sin(2*X)^2/(1-.29*cos(2*X))^4)^(1/2)); 0 end proc, -1, 0, 0, 0, 0, 0, 0]), ( 13 ) = (), ( 12 ) = (), ( 15 ) = ("rkf45"), ( 14 ) = ([0, 0]), ( 18 ) = ([]), ( 19 ) = (0), ( 16 ) = ([0, 0, 0, []]), ( 17 ) = ([proc (N, X, Y, YP) option `[Y[1] = L(phi)]`; if .25/(1-.29*cos(2*X))^2+0.84100e-1*sin(2*X)^2/(1-.29*cos(2*X))^4 < 0 then YP[1] := undefined; return 0 end if; YP[1] := evalf((.25/(1-.29*cos(2*X))^2+0.84100e-1*sin(2*X)^2/(1-.29*cos(2*X))^4)^(1/2)); 0 end proc, -1, 0, 0, 0, 0, 0, 0]), ( 22 ) = (0), ( 23 ) = (0), ( 20 ) = ([]), ( 21 ) = (0), ( 26 ) = (Array(1..0, {})), ( 25 ) = (Array(1..0, {})), ( 24 ) = (0)  ] )), ( 3 ) = (array( 1 .. 26, [( 1 ) = (datatype = float[8], order = C_order, storage = rectangular), ( 2 ) = (datatype = float[8], order = C_order, storage = rectangular), ( 3 ) = ([0, 0, 0, Array(1..0, 1..2, {}, datatype = float[8], order = C_order)]), ( 4 ) = (Array(1..63, {(1) = 1, (2) = 1, (3) = 0, (4) = 0, (5) = 0, (6) = 0, (7) = 1, (8) = 1, (9) = 0, (10) = 1, (11) = 149, (12) = 149, (13) = 0, (14) = 0, (15) = 0, (16) = 0, (17) = 0, (18) = 288, (19) = 30000, (20) = 5, (21) = 0, (22) = 1, (23) = 4, (24) = 0, (25) = 1, (26) = 15, (27) = 1, (28) = 0, (29) = 1, (30) = 3, (31) = 3, (32) = 0, (33) = 1, (34) = 0, (35) = 0, (36) = 0, (37) = 0, (38) = 0, (39) = 0, (40) = 0, (41) = 0, (42) = 0, (43) = 1, (44) = 0, (45) = 0, (46) = 0, (47) = 0, (48) = 0, (49) = 0, (50) = 50, (51) = 1, (52) = 0, (53) = 0, (54) = 0, (55) = 0, (56) = 0, (57) = 0, (58) = 0, (59) = 10000, (60) = 0, (61) = 1000, (62) = 0, (63) = 0}, datatype = integer[8])), ( 5 ) = (Array(1..28, {(1) = 6.28318530717958, (2) = 0.10e-5, (3) = .15585861275759516, (4) = 0.500001e-14, (5) = .0, (6) = 0.7167675433294995e-2, (7) = .0, (8) = 0.10e-5, (9) = .0, (10) = .0, (11) = .0, (12) = .0, (13) = 1.0, (14) = .0, (15) = .49999999999999, (16) = .0, (17) = 1.0, (18) = 1.0, (19) = .0, (20) = .0, (21) = 1.0, (22) = 1.0, (23) = .0, (24) = .0, (25) = 0.10e-14, (26) = .0, (27) = .0, (28) = .0}, datatype = float[8], order = C_order)), ( 6 ) = (Array(1..1, {(1) = .0}, datatype = float[8], order = C_order)), ( 7 ) = ([Array(1..4, 1..7, {(1, 1) = .0, (1, 2) = .203125, (1, 3) = .3046875, (1, 4) = .75, (1, 5) = .8125, (1, 6) = .40625, (1, 7) = .8125, (2, 1) = 0.6378173828125e-1, (2, 2) = .0, (2, 3) = .279296875, (2, 4) = .27237892150878906, (2, 5) = -0.9686851501464844e-1, (2, 6) = 0.1956939697265625e-1, (2, 7) = .5381584167480469, (3, 1) = 0.31890869140625e-1, (3, 2) = .0, (3, 3) = -.34375, (3, 4) = -.335235595703125, (3, 5) = .2296142578125, (3, 6) = .41748046875, (3, 7) = 11.480712890625, (4, 1) = 0.9710520505905151e-1, (4, 2) = .0, (4, 3) = .40350341796875, (4, 4) = 0.20297467708587646e-1, (4, 5) = -0.6054282188415527e-2, (4, 6) = -0.4770040512084961e-1, (4, 7) = .77858567237854}, datatype = float[8], order = C_order), Array(1..6, 1..6, {(1, 1) = .0, (1, 2) = .0, (1, 3) = .0, (1, 4) = .0, (1, 5) = .0, (1, 6) = 1.0, (2, 1) = .25, (2, 2) = .0, (2, 3) = .0, (2, 4) = .0, (2, 5) = .0, (2, 6) = 1.0, (3, 1) = .1875, (3, 2) = .5625, (3, 3) = .0, (3, 4) = .0, (3, 5) = .0, (3, 6) = 2.0, (4, 1) = .23583984375, (4, 2) = -.87890625, (4, 3) = .890625, (4, 4) = .0, (4, 5) = .0, (4, 6) = .2681884765625, (5, 1) = .1272735595703125, (5, 2) = -.5009765625, (5, 3) = .44921875, (5, 4) = -0.128936767578125e-1, (5, 5) = .0, (5, 6) = 0.626220703125e-1, (6, 1) = -0.927734375e-1, (6, 2) = .626220703125, (6, 3) = -.4326171875, (6, 4) = .1418304443359375, (6, 5) = -0.861053466796875e-1, (6, 6) = .3131103515625}, datatype = float[8], order = C_order), Array(1..6, {(1) = .0, (2) = .386, (3) = .21, (4) = .63, (5) = 1.0, (6) = 1.0}, datatype = float[8], order = C_order), Array(1..6, {(1) = .25, (2) = -.1043, (3) = .1035, (4) = -0.362e-1, (5) = .0, (6) = .0}, datatype = float[8], order = C_order), Array(1..6, 1..5, {(1, 1) = .0, (1, 2) = .0, (1, 3) = .0, (1, 4) = .0, (1, 5) = .0, (2, 1) = 1.544, (2, 2) = .0, (2, 3) = .0, (2, 4) = .0, (2, 5) = .0, (3, 1) = .9466785280815533, (3, 2) = .25570116989825814, (3, 3) = .0, (3, 4) = .0, (3, 5) = .0, (4, 1) = 3.3148251870684886, (4, 2) = 2.896124015972123, (4, 3) = .9986419139977808, (4, 4) = .0, (4, 5) = .0, (5, 1) = 1.2212245092262748, (5, 2) = 6.019134481287752, (5, 3) = 12.537083329320874, (5, 4) = -.687886036105895, (5, 5) = .0, (6, 1) = 1.2212245092262748, (6, 2) = 6.019134481287752, (6, 3) = 12.537083329320874, (6, 4) = -.687886036105895, (6, 5) = 1.0}, datatype = float[8], order = C_order), Array(1..6, 1..5, {(1, 1) = .0, (1, 2) = .0, (1, 3) = .0, (1, 4) = .0, (1, 5) = .0, (2, 1) = -5.6688, (2, 2) = .0, (2, 3) = .0, (2, 4) = .0, (2, 5) = .0, (3, 1) = -2.4300933568337584, (3, 2) = -.20635991570891224, (3, 3) = .0, (3, 4) = .0, (3, 5) = .0, (4, 1) = -.10735290581452621, (4, 2) = -9.594562251021896, (4, 3) = -20.470286148096154, (4, 4) = .0, (4, 5) = .0, (5, 1) = 7.496443313968615, (5, 2) = -10.246804314641219, (5, 3) = -33.99990352819906, (5, 4) = 11.708908932061595, (5, 5) = .0, (6, 1) = 8.083246795922411, (6, 2) = -7.981132988062785, (6, 3) = -31.52159432874373, (6, 4) = 16.319305431231363, (6, 5) = -6.0588182388340535}, datatype = float[8], order = C_order), Array(1..3, 1..5, {(1, 1) = .0, (1, 2) = .0, (1, 3) = .0, (1, 4) = .0, (1, 5) = .0, (2, 1) = 10.126235083446911, (2, 2) = -7.487995877607633, (2, 3) = -34.800918615557414, (2, 4) = -7.9927717075687275, (2, 5) = 1.0251377232956207, (3, 1) = -.6762803392806898, (3, 2) = 6.087714651678606, (3, 3) = 16.43084320892463, (3, 4) = 24.767225114183653, (3, 5) = -6.5943891257167815}, datatype = float[8], order = C_order)]), ( 9 ) = ([Array(1..1, {(1) = .1}, datatype = float[8], order = C_order), Array(1..1, {(1) = 3.615400797110011}, datatype = float[8], order = C_order), Array(1..1, {(1) = .0}, datatype = float[8], order = C_order), Array(1..1, {(1) = .7098385115080822}, datatype = float[8], order = C_order), Array(1..1, {(1) = .0}, datatype = float[8], order = C_order), Array(1..1, 1..1, {(1, 1) = .0}, datatype = float[8], order = C_order), Array(1..1, 1..1, {(1, 1) = .0}, datatype = float[8], order = C_order), Array(1..1, 1..6, {(1, 1) = .7098385115080822, (1, 2) = .7042821826761728, (1, 3) = .7046200317368113, (1, 4) = .708997841928018, (1, 5) = .7098385115080822, (1, 6) = .7052461897764069}, datatype = float[8], order = C_order), Array(1..1, {(1) = 0}, datatype = integer[8]), Array(1..1, {(1) = 3.565978698997918}, datatype = float[8], order = C_order), Array(1..1, {(1) = 3.6620152268172546}, datatype = float[8], order = C_order), Array(1..1, {(1) = 0.14382618571673333e-5}, datatype = float[8], order = C_order), Array(1..1, {(1) = .0}, datatype = float[8], order = C_order), Array(1..1, {(1) = .706129929097878}, datatype = float[8], order = C_order), Array(1..2, {(1) = .0, (2) = .0}, datatype = float[8], order = C_order)]), ( 8 ) = ([Array(1..1, {(1) = .0}, datatype = float[8], order = C_order), Array(1..1, {(1) = .0}, datatype = float[8], order = C_order), Array(1..1, {(1) = .7098385115080822}, datatype = float[8], order = C_order), 0, 0]), ( 11 ) = (Array(1..6, 0..1, {(1, 1) = 6.254516841243197, (2, 0) = 6.254516841243197, (2, 1) = 3.5457876846501035, (3, 0) = 3.5457876846501035, (3, 1) = 6.295679285466243, (4, 0) = 6.295679285466243, (4, 1) = 3.5747770839010773, (5, 0) = 3.5747770839010773, (5, 1) = 6.33684172968929, (6, 0) = 6.33684172968929, (6, 1) = 3.603783018620303}, datatype = float[8], order = C_order)), ( 10 ) = ([proc (N, X, Y, YP) option `[Y[1] = L(phi)]`; if .25/(1-.29*cos(2*X))^2+0.84100e-1*sin(2*X)^2/(1-.29*cos(2*X))^4 < 0 then YP[1] := undefined; return 0 end if; YP[1] := evalf((.25/(1-.29*cos(2*X))^2+0.84100e-1*sin(2*X)^2/(1-.29*cos(2*X))^4)^(1/2)); 0 end proc, -1, 0, 0, 0, 0, 0, 0]), ( 13 ) = (), ( 12 ) = (Array(1..149, 0..1, {(1, 1) = .0, (2, 0) = .0, (2, 1) = .0, (3, 0) = .0, (3, 1) = 0.17919188583237486e-2, (4, 0) = 0.17919188583237486e-2, (4, 1) = 0.1261915388010641e-2, (5, 0) = 0.1261915388010641e-2, (5, 1) = 0.35838377166474973e-2, (6, 0) = 0.35838377166474973e-2, (6, 1) = 0.25238349717486798e-2, (7, 0) = 0.25238349717486798e-2, (7, 1) = 0.5375756574971246e-2, (8, 0) = 0.5375756574971246e-2, (8, 1) = 0.3785762945054912e-2, (9, 0) = 0.3785762945054912e-2, (9, 1) = 0.7167675433294995e-2, (10, 0) = 0.7167675433294995e-2, (10, 1) = 0.5047703498304082e-2, (11, 0) = 0.5047703498304082e-2, (11, 1) = 0.2510997698305082e-1, (12, 0) = 0.2510997698305082e-1, (12, 1) = 0.17684977182963853e-1, (13, 0) = 0.17684977182963853e-1, (13, 1) = 0.43052278532806645e-1, (14, 0) = 0.43052278532806645e-1, (14, 1) = 0.303280797936866e-1, (15, 0) = 0.303280797936866e-1, (15, 1) = 0.6099458008256247e-1, (16, 0) = 0.6099458008256247e-1, (16, 1) = 0.42980918175561496e-1, (17, 0) = 0.42980918175561496e-1, (17, 1) = 0.789368816323183e-1, (18, 0) = 0.789368816323183e-1, (18, 1) = 0.5564700694222825e-1, (19, 0) = 0.5564700694222825e-1, (19, 1) = 0.9829355951318804e-1, (20, 0) = 0.9829355951318804e-1, (20, 1) = 0.6932991573550168e-1, (21, 0) = 0.6932991573550168e-1, (21, 1) = .11765023739405778, (22, 0) = .11765023739405778, (22, 1) = 0.8303485184119341e-1, (23, 0) = 0.8303485184119341e-1, (23, 1) = .13700691527492753, (24, 0) = .13700691527492753, (24, 1) = 0.9676386040071333e-1, (25, 0) = 0.9676386040071333e-1, (25, 1) = .1563635931557973, (26, 0) = .1563635931557973, (26, 1) = .11051788877692886, (27, 0) = .11051788877692886, (27, 1) = .18144834219022418, (28, 0) = .18144834219022418, (28, 1) = .12837886329175235, (29, 0) = .12837886329175235, (29, 1) = .20653309122465108, (30, 0) = .20653309122465108, (30, 1) = .14627803554919377, (31, 0) = .14627803554919377, (31, 1) = .231617840259078, (32, 0) = .231617840259078, (32, 1) = .16420871647465346, (33, 0) = .16420871647465346, (33, 1) = .25670258929350487, (34, 0) = .25670258929350487, (34, 1) = .1821611348906259, (35, 0) = .1821611348906259, (35, 1) = .2833990491017713, (36, 0) = .2833990491017713, (36, 1) = .20127666105030256, (37, 0) = .20127666105030256, (37, 1) = .3100955089100378, (38, 0) = .3100955089100378, (38, 1) = .22038387747241667, (39, 0) = .22038387747241667, (39, 1) = .3367919687183042, (40, 0) = .3367919687183042, (40, 1) = .23946189461790265, (41, 0) = .23946189461790265, (41, 1) = .36348842852657065, (42, 0) = .36348842852657065, (42, 1) = .2584880815129111, (43, 0) = .2584880815129111, (43, 1) = .3885460856631372, (44, 0) = .3885460856631372, (44, 1) = .2762777439730961, (45, 0) = .2762777439730961, (45, 1) = .4136037427997038, (46, 0) = .4136037427997038, (46, 1) = .29398010459096496, (47, 0) = .29398010459096496, (47, 1) = .43866139993627035, (48, 0) = .43866139993627035, (48, 1) = .3115748394851139, (49, 0) = .3115748394851139, (49, 1) = .4637190570728369, (50, 0) = .4637190570728369, (50, 1) = .32904209155170816, (51, 0) = .32904209155170816, (51, 1) = .49162905516102373, (52, 0) = .49162905516102373, (52, 1) = .3483241289109127, (53, 0) = .3483241289109127, (53, 1) = .5195390532492106, (54, 0) = .5195390532492106, (54, 1) = .36739906352171653, (55, 0) = .36739906352171653, (55, 1) = .5474490513373974, (56, 0) = .5474490513373974, (56, 1) = .3862438435822327, (57, 0) = .3862438435822327, (57, 1) = .5753590494255842, (58, 0) = .5753590494255842, (58, 1) = .4048377200987912, (59, 0) = .4048377200987912, (59, 1) = .6109479480837657, (60, 0) = .6109479480837657, (60, 1) = .4281545521555197, (61, 0) = .4281545521555197, (61, 1) = .6465368467419472, (62, 0) = .6465368467419472, (62, 1) = .451001856555099, (63, 0) = .451001856555099, (63, 1) = .6821257454001288, (64, 0) = .6821257454001288, (64, 1) = .4733545835508299, (65, 0) = .4733545835508299, (65, 1) = .7177146440583103, (66, 0) = .7177146440583103, (66, 1) = .49519437768567, (67, 0) = .49519437768567, (67, 1) = .7616352788990067, (68, 0) = .7616352788990067, (68, 1) = .5214227216894736, (69, 0) = .5214227216894736, (69, 1) = .8055559137397033, (70, 0) = .8055559137397033, (70, 1) = .5468428175292931, (71, 0) = .5468428175292931, (71, 1) = .8494765485803997, (72, 0) = .8494765485803997, (72, 1) = .5714572478306521, (73, 0) = .5714572478306521, (73, 1) = .8933971834210961, (74, 0) = .8933971834210961, (74, 1) = .5952790045305293, (75, 0) = .5952790045305293, (75, 1) = .9330981434373031, (76, 0) = .9330981434373031, (76, 1) = .6161486815022182, (77, 0) = .6161486815022182, (77, 1) = .9727991034535102, (78, 0) = .9727991034535102, (78, 1) = .6364113694268018, (79, 0) = .6364113694268018, (79, 1) = 1.0125000634697172, (80, 0) = 1.0125000634697172, (80, 1) = .6560933102021922, (81, 0) = .6560933102021922, (81, 1) = 1.0522010234859245, (82, 0) = 1.0522010234859245, (82, 1) = .675224062264651, (83, 0) = .675224062264651, (83, 1) = 1.096130720114795, (84, 0) = 1.096130720114795, (84, 1) = .6957894851969014, (85, 0) = .6957894851969014, (85, 1) = 1.1400604167436654, (86, 0) = 1.1400604167436654, (86, 1) = .7157673530832585, (87, 0) = .7157673530832585, (87, 1) = 1.1839901133725357, (88, 0) = 1.1839901133725357, (88, 1) = .7352074091785712, (89, 0) = .7352074091785712, (89, 1) = 1.2279198100014062, (90, 0) = 1.2279198100014062, (90, 1) = .7541612058266236, (91, 0) = .7541612058266236, (91, 1) = 1.2801574484661535, (92, 0) = 1.2801574484661535, (92, 1) = .776140192672645, (93, 0) = .776140192672645, (93, 1) = 1.3323950869309007, (94, 0) = 1.3323950869309007, (94, 1) = .7975980152789942, (95, 0) = .7975980152789942, (95, 1) = 1.384632725395648, (96, 0) = 1.384632725395648, (96, 1) = .818627104504992, (97, 0) = .818627104504992, (97, 1) = 1.4368703638603955, (98, 0) = 1.4368703638603955, (98, 1) = .8393206803738085, (99, 0) = .8393206803738085, (99, 1) = 1.5053848523744444, (100, 0) = 1.5053848523744444, (100, 1) = .8661106836887517, (101, 0) = .8661106836887517, (101, 1) = 1.5738993408884934, (102, 0) = 1.5738993408884934, (102, 1) = .8926975691491561, (103, 0) = .8926975691491561, (103, 1) = 1.642413829402542, (104, 0) = 1.642413829402542, (104, 1) = .9192941432606554, (105, 0) = .9192941432606554, (105, 1) = 1.710928317916591, (106, 0) = 1.710928317916591, (106, 1) = .9461131141135576, (107, 0) = .9461131141135576, (107, 1) = 1.770416795424343, (108, 0) = 1.770416795424343, (108, 1) = .9697439915929793, (109, 0) = .9697439915929793, (109, 1) = 1.8299052729320948, (110, 0) = 1.8299052729320948, (110, 1) = .9938413132187462, (111, 0) = .9938413132187462, (111, 1) = 1.8893937504398468, (112, 0) = 1.8893937504398468, (112, 1) = 1.0185425037951046, (113, 0) = 1.0185425037951046, (113, 1) = 1.9488822279475988, (114, 0) = 1.9488822279475988, (114, 1) = 1.0439829871871116, (115, 0) = 1.0439829871871116, (115, 1) = 2.008370705455351, (116, 0) = 2.008370705455351, (116, 1) = 1.0702951560701477, (117, 0) = 1.0702951560701477, (117, 1) = 2.067859182963103, (118, 0) = 2.067859182963103, (118, 1) = 1.0976084950292055, (119, 0) = 1.0976084950292055, (119, 1) = 2.1273476604708548, (120, 0) = 2.1273476604708548, (120, 1) = 1.1260444092586759, (121, 0) = 1.1260444092586759, (121, 1) = 2.1868361379786068, (122, 0) = 2.1868361379786068, (122, 1) = 1.1557134295120322, (123, 0) = 1.1557134295120322, (123, 1) = 2.2378830745870273, (124, 0) = 2.2378830745870273, (124, 1) = 1.1822297775720965, (125, 0) = 1.1822297775720965, (125, 1) = 2.2889300111954483, (126, 0) = 2.2889300111954483, (126, 1) = 1.2097776909314513, (127, 0) = 1.2097776909314513, (127, 1) = 2.3399769478038692, (128, 0) = 2.3399769478038692, (128, 1) = 1.2383943456326099, (129, 0) = 1.2383943456326099, (129, 1) = 2.3910238844122897, (130, 0) = 2.3910238844122897, (130, 1) = 1.2680996719340796, (131, 0) = 1.2680996719340796, (131, 1) = 2.436897845827173, (132, 0) = 2.436897845827173, (132, 1) = 1.2957249105920197, (133, 0) = 1.2957249105920197, (133, 1) = 2.482771807242056, (134, 0) = 2.482771807242056, (134, 1) = 1.3242156028383298, (135, 0) = 1.3242156028383298, (135, 1) = 2.5286457686569395, (136, 0) = 2.5286457686569395, (136, 1) = 1.3535393207216249, (137, 0) = 1.3535393207216249, (137, 1) = 2.5745197300718226, (138, 0) = 2.5745197300718226, (138, 1) = 1.3836451308024564, (139, 0) = 1.3836451308024564, (139, 1) = 2.6118432972988703, (140, 0) = 2.6118432972988703, (140, 1) = 1.4086692443958522, (141, 0) = 1.4086692443958522, (141, 1) = 2.649166864525918, (142, 0) = 2.649166864525918, (142, 1) = 1.43411848443778, (143, 0) = 1.43411848443778, (143, 1) = 2.686490431752966, (144, 0) = 2.686490431752966, (144, 1) = 1.4599388011357382, (145, 0) = 1.4599388011357382, (145, 1) = 2.7238139989800136, (146, 0) = 2.7238139989800136, (146, 1) = 1.486070258569666, (147, 0) = 1.486070258569666, (147, 1) = 2.7611375662070614, (148, 0) = 2.7611375662070614, (148, 1) = 1.5124483134989704, (149, 0) = 1.5124483134989704, (149, 1) = 2.798461133434109}, datatype = float[8], order = C_order)), ( 15 ) = ("rkf45"), ( 14 ) = ([0, 0]), ( 19 ) = (0), ( 16 ) = ([0, 0, 0, []]), ( 17 ) = ([proc (N, X, Y, YP) option `[Y[1] = L(phi)]`; if .25/(1-.29*cos(2*X))^2+0.84100e-1*sin(2*X)^2/(1-.29*cos(2*X))^4 < 0 then YP[1] := undefined; return 0 end if; YP[1] := evalf((.25/(1-.29*cos(2*X))^2+0.84100e-1*sin(2*X)^2/(1-.29*cos(2*X))^4)^(1/2)); 0 end proc, -1, 0, 0, 0, 0, 0, 0]), ( 22 ) = (0), ( 23 ) = (0), ( 20 ) = ([]), ( 21 ) = (0), ( 26 ) = (Array(1..0, {})), ( 25 ) = (Array(1..0, {})), ( 24 ) = (0)  ] )), ( 4 ) = (3)  ] ); _y0 := Array(0..1, {(1) = 0.}); _vmap := array( 1 .. 1, [( 1 ) = (1)  ] ); _x0 := _dtbl[1][5][5]; _n := _dtbl[1][4][1]; _ne := _dtbl[1][4][3]; _nd := _dtbl[1][4][4]; _nv := _dtbl[1][4][16]; if not type(_xout, 'numeric') then if member(_xout, ["start", "left", "right"]) then if _Env_smart_dsolve_numeric = true or _dtbl[1][4][10] = 1 then if _xout = "left" then if type(_dtbl[2], 'table') then return _dtbl[2][5][1] end if elif _xout = "right" then if type(_dtbl[3], 'table') then return _dtbl[3][5][1] end if end if end if; return _dtbl[1][5][5] elif _xout = "method" then return _dtbl[1][15] elif _xout = "storage" then return evalb(_dtbl[1][4][10] = 1) elif _xout = "leftdata" then if not type(_dtbl[2], 'array') then return NULL else return eval(_dtbl[2]) end if elif _xout = "rightdata" then if not type(_dtbl[3], 'array') then return NULL else return eval(_dtbl[3]) end if elif _xout = "enginedata" then return eval(_dtbl[1]) elif _xout = "enginereset" then _dtbl[2] := evaln(_dtbl[2]); _dtbl[3] := evaln(_dtbl[3]); return NULL elif _xout = "initial" then return procname(_y0[0]) elif _xout = "laxtol" then return _dtbl[`if`(member(_dtbl[4], {2, 3}), _dtbl[4], 1)][5][18] elif _xout = "numfun" then return `if`(member(_dtbl[4], {2, 3}), _dtbl[_dtbl[4]][4][18], 0) elif _xout = "parameters" then return [seq(_y0[_n+_i], _i = 1 .. nops(_pars))] elif _xout = "initial_and_parameters" then return procname(_y0[0]), [seq(_y0[_n+_i], _i = 1 .. nops(_pars))] elif _xout = "last" then if _dtbl[4] <> 2 and _dtbl[4] <> 3 or _x0-_dtbl[_dtbl[4]][5][1] = 0. then error "no information is available on last computed point" else _xout := _dtbl[_dtbl[4]][5][1] end if elif _xout = "function" then if _dtbl[1][4][33]-2. = 0 then return eval(_dtbl[1][10], 1) else return eval(_dtbl[1][10][1], 1) end if elif _xout = "map" then return copy(_vmap) elif type(_xin, `=`) and type(rhs(_xin), 'list') and member(lhs(_xin), {"initial", "parameters", "initial_and_parameters"}) then _ini, _par := [], []; if lhs(_xin) = "initial" then _ini := rhs(_xin) elif lhs(_xin) = "parameters" then _par := rhs(_xin) elif select(type, rhs(_xin), `=`) <> [] then _par, _ini := selectremove(type, rhs(_xin), `=`) elif nops(rhs(_xin)) < nops(_pars)+1 then error "insufficient data for specification of initial and parameters" else _par := rhs(_xin)[-nops(_pars) .. -1]; _ini := rhs(_xin)[1 .. -nops(_pars)-1] end if; _xout := lhs(_xout); if _par <> [] then `dsolve/numeric/process_parameters`(_n, _pars, _par, _y0) end if; if _ini <> [] then `dsolve/numeric/process_initial`(_n-_ne, _ini, _y0, _pars, _vmap) end if; `dsolve/numeric/SC/reinitialize`(_dtbl, _y0, _n, procname, _pars); if _Env_smart_dsolve_numeric = true and type(_y0[0], 'numeric') and _dtbl[1][4][10] <> 1 then procname("right") := _y0[0]; procname("left") := _y0[0] end if; if _xout = "initial" then return [_y0[0], seq(_y0[_vmap[_i]], _i = 1 .. _n-_ne)] elif _xout = "parameters" then return [seq(_y0[_n+_i], _i = 1 .. nops(_pars))] else return [_y0[0], seq(_y0[_vmap[_i]], _i = 1 .. _n-_ne)], [seq(_y0[_n+_i], _i = 1 .. nops(_pars))] end if elif _xin = "eventstop" then if _nv = 0 then error "this solution has no events" end if; _i := _dtbl[4]; if _i <> 2 and _i <> 3 then return 0 end if; if _dtbl[_i][4][10] = 1 and assigned(_dtbl[5-_i]) and _dtbl[_i][4][9] < 100 and 100 <= _dtbl[5-_i][4][9] then _i := 5-_i; _dtbl[4] := _i; _j := round(_dtbl[_i][4][17]); return round(_dtbl[_i][3][1][_j, 1]) elif 100 <= _dtbl[_i][4][9] then _j := round(_dtbl[_i][4][17]); return round(_dtbl[_i][3][1][_j, 1]) else return 0 end if elif _xin = "eventstatus" then if _nv = 0 then error "this solution has no events" end if; _i := [selectremove(proc (a) options operator, arrow; _dtbl[1][3][1][a, 7] = 1 end proc, {seq(_j, _j = 1 .. round(_dtbl[1][3][1][_nv+1, 1]))})]; return ':-enabled' = _i[1], ':-disabled' = _i[2] elif _xin = "eventclear" then if _nv = 0 then error "this solution has no events" end if; _i := _dtbl[4]; if _i <> 2 and _i <> 3 then error "no events to clear" end if; if _dtbl[_i][4][10] = 1 and assigned(_dtbl[5-_i]) and _dtbl[_i][4][9] < 100 and 100 < _dtbl[5-_i][4][9] then _dtbl[4] := 5-_i; _i := 5-_i end if; if _dtbl[_i][4][9] < 100 then error "no events to clear" elif _nv < _dtbl[_i][4][9]-100 then error "event error condition cannot be cleared" else _j := _dtbl[_i][4][9]-100; if irem(round(_dtbl[_i][3][1][_j, 4]), 2) = 1 then error "retriggerable events cannot be cleared" end if; _j := round(_dtbl[_i][3][1][_j, 1]); for _k to _nv do if _dtbl[_i][3][1][_k, 1] = _j then if _dtbl[_i][3][1][_k, 2] = 3 then error "range events cannot be cleared" end if; _dtbl[_i][3][1][_k, 8] := _dtbl[_i][3][1][_nv+1, 8] end if end do; _dtbl[_i][4][17] := 0; _dtbl[_i][4][9] := 0; if _dtbl[1][4][10] = 1 then if _i = 2 then try procname(procname("left")) catch:  end try else try procname(procname("right")) catch:  end try end if end if end if; return  elif type(_xin, `=`) and member(lhs(_xin), {"eventdisable", "eventenable"}) then if _nv = 0 then error "this solution has no events" end if; if type(rhs(_xin), {('list')('posint'), ('set')('posint')}) then _i := {op(rhs(_xin))} elif type(rhs(_xin), 'posint') then _i := {rhs(_xin)} else error "event identifiers must be integers in the range 1..%1", round(_dtbl[1][3][1][_nv+1, 1]) end if; if select(proc (a) options operator, arrow; _nv < a end proc, _i) <> {} then error "event identifiers must be integers in the range 1..%1", round(_dtbl[1][3][1][_nv+1, 1]) end if; _k := {}; for _j to _nv do if member(round(_dtbl[1][3][1][_j, 1]), _i) then _k := `union`(_k, {_j}) end if end do; _i := _k; if lhs(_xin) = "eventdisable" then _dtbl[4] := 0; _j := [evalb(assigned(_dtbl[2]) and member(_dtbl[2][4][17], _i)), evalb(assigned(_dtbl[3]) and member(_dtbl[3][4][17], _i))]; for _k in _i do _dtbl[1][3][1][_k, 7] := 0; if assigned(_dtbl[2]) then _dtbl[2][3][1][_k, 7] := 0 end if; if assigned(_dtbl[3]) then _dtbl[3][3][1][_k, 7] := 0 end if end do; if _j[1] then for _k to _nv+1 do if _k <= _nv and not type(_dtbl[2][3][4][_k, 1], 'undefined') then userinfo(3, {'events', 'eventreset'}, `reinit #2, event code `, _k, ` to defined init `, _dtbl[2][3][4][_k, 1]); _dtbl[2][3][1][_k, 8] := _dtbl[2][3][4][_k, 1] elif _dtbl[2][3][1][_k, 2] = 0 and irem(iquo(round(_dtbl[2][3][1][_k, 4]), 32), 2) = 1 then userinfo(3, {'events', 'eventreset'}, `reinit #2, event code `, _k, ` to rate hysteresis init `, _dtbl[2][5][24]); _dtbl[2][3][1][_k, 8] := _dtbl[2][5][24] elif _dtbl[2][3][1][_k, 2] = 0 and irem(iquo(round(_dtbl[2][3][1][_k, 4]), 2), 2) = 0 then userinfo(3, {'events', 'eventreset'}, `reinit #2, event code `, _k, ` to initial init `, _x0); _dtbl[2][3][1][_k, 8] := _x0 else userinfo(3, {'events', 'eventreset'}, `reinit #2, event code `, _k, ` to fireinitial init `, _x0-1); _dtbl[2][3][1][_k, 8] := _x0-1 end if end do; _dtbl[2][4][17] := 0; _dtbl[2][4][9] := 0; if _dtbl[1][4][10] = 1 then procname(procname("left")) end if end if; if _j[2] then for _k to _nv+1 do if _k <= _nv and not type(_dtbl[3][3][4][_k, 2], 'undefined') then userinfo(3, {'events', 'eventreset'}, `reinit #3, event code `, _k, ` to defined init `, _dtbl[3][3][4][_k, 2]); _dtbl[3][3][1][_k, 8] := _dtbl[3][3][4][_k, 2] elif _dtbl[3][3][1][_k, 2] = 0 and irem(iquo(round(_dtbl[3][3][1][_k, 4]), 32), 2) = 1 then userinfo(3, {'events', 'eventreset'}, `reinit #3, event code `, _k, ` to rate hysteresis init `, _dtbl[3][5][24]); _dtbl[3][3][1][_k, 8] := _dtbl[3][5][24] elif _dtbl[3][3][1][_k, 2] = 0 and irem(iquo(round(_dtbl[3][3][1][_k, 4]), 2), 2) = 0 then userinfo(3, {'events', 'eventreset'}, `reinit #3, event code `, _k, ` to initial init `, _x0); _dtbl[3][3][1][_k, 8] := _x0 else userinfo(3, {'events', 'eventreset'}, `reinit #3, event code `, _k, ` to fireinitial init `, _x0+1); _dtbl[3][3][1][_k, 8] := _x0+1 end if end do; _dtbl[3][4][17] := 0; _dtbl[3][4][9] := 0; if _dtbl[1][4][10] = 1 then procname(procname("right")) end if end if else for _k in _i do _dtbl[1][3][1][_k, 7] := 1 end do; _dtbl[2] := evaln(_dtbl[2]); _dtbl[3] := evaln(_dtbl[3]); _dtbl[4] := 0; if _dtbl[1][4][10] = 1 then if _x0 <= procname("right") then try procname(procname("right")) catch:  end try end if; if procname("left") <= _x0 then try procname(procname("left")) catch:  end try end if end if end if; return  elif type(_xin, `=`) and lhs(_xin) = "eventfired" then if not type(rhs(_xin), 'list') then error "'eventfired' must be specified as a list" end if; if _nv = 0 then error "this solution has no events" end if; if _dtbl[4] <> 2 and _dtbl[4] <> 3 then error "'direction' must be set prior to calling/setting 'eventfired'" end if; _i := _dtbl[4]; _val := NULL; if not assigned(_EnvEventRetriggerWarned) then _EnvEventRetriggerWarned := false end if; for _k in rhs(_xin) do if type(_k, 'integer') then _src := _k elif type(_k, 'integer' = 'anything') and type(evalf(rhs(_k)), 'numeric') then _k := lhs(_k) = evalf[max(Digits, 18)](rhs(_k)); _src := lhs(_k) else error "'eventfired' entry is not valid: %1", _k end if; if _src < 1 or round(_dtbl[1][3][1][_nv+1, 1]) < _src then error "event identifiers must be integers in the range 1..%1", round(_dtbl[1][3][1][_nv+1, 1]) end if; _src := {seq(`if`(_dtbl[1][3][1][_j, 1]-_src = 0., _j, NULL), _j = 1 .. _nv)}; if nops(_src) <> 1 then error "'eventfired' can only be set/queried for root-finding events and time/interval events" end if; _src := _src[1]; if _dtbl[1][3][1][_src, 2] <> 0. and _dtbl[1][3][1][_src, 2]-2. <> 0. then error "'eventfired' can only be set/queried for root-finding events and time/interval events" elif irem(round(_dtbl[1][3][1][_src, 4]), 2) = 1 then if _EnvEventRetriggerWarned = false then WARNING(`'eventfired' has no effect on events that retrigger`) end if; _EnvEventRetriggerWarned := true end if; if _dtbl[_i][3][1][_src, 2] = 0 and irem(iquo(round(_dtbl[_i][3][1][_src, 4]), 32), 2) = 1 then _val := _val, undefined elif type(_dtbl[_i][3][4][_src, _i-1], 'undefined') or _i = 2 and _dtbl[2][3][1][_src, 8] < _dtbl[2][3][4][_src, 1] or _i = 3 and _dtbl[3][3][4][_src, 2] < _dtbl[3][3][1][_src, 8] then _val := _val, _dtbl[_i][3][1][_src, 8] else _val := _val, _dtbl[_i][3][4][_src, _i-1] end if; if type(_k, `=`) then if _dtbl[_i][3][1][_src, 2] = 0 and irem(iquo(round(_dtbl[_i][3][1][_src, 4]), 32), 2) = 1 then error "cannot set event code for a rate hysteresis event" end if; userinfo(3, {'events', 'eventreset'}, `manual set event code `, _src, ` to value `, rhs(_k)); _dtbl[_i][3][1][_src, 8] := rhs(_k); _dtbl[_i][3][4][_src, _i-1] := rhs(_k) end if end do; return [_val] elif type(_xin, `=`) and lhs(_xin) = "direction" then if not member(rhs(_xin), {-1, 1, ':-left', ':-right'}) then error "'direction' must be specified as either '1' or 'right' (positive) or '-1' or 'left' (negative)" end if; _src := `if`(_dtbl[4] = 2, -1, `if`(_dtbl[4] = 3, 1, undefined)); _i := `if`(member(rhs(_xin), {1, ':-right'}), 3, 2); _dtbl[4] := _i; _dtbl[_i] := `dsolve/numeric/SC/IVPdcopy`(_dtbl[1], `if`(assigned(_dtbl[_i]), _dtbl[_i], NULL)); if 0 < _nv then for _j to _nv+1 do if _j <= _nv and not type(_dtbl[_i][3][4][_j, _i-1], 'undefined') then userinfo(3, {'events', 'eventreset'}, `reinit #4, event code `, _j, ` to defined init `, _dtbl[_i][3][4][_j, _i-1]); _dtbl[_i][3][1][_j, 8] := _dtbl[_i][3][4][_j, _i-1] elif _dtbl[_i][3][1][_j, 2] = 0 and irem(iquo(round(_dtbl[_i][3][1][_j, 4]), 32), 2) = 1 then userinfo(3, {'events', 'eventreset'}, `reinit #4, event code `, _j, ` to rate hysteresis init `, _dtbl[_i][5][24]); _dtbl[_i][3][1][_j, 8] := _dtbl[_i][5][24] elif _dtbl[_i][3][1][_j, 2] = 0 and irem(iquo(round(_dtbl[_i][3][1][_j, 4]), 2), 2) = 0 then userinfo(3, {'events', 'eventreset'}, `reinit #4, event code `, _j, ` to initial init `, _x0); _dtbl[_i][3][1][_j, 8] := _x0 else userinfo(3, {'events', 'eventreset'}, `reinit #4, event code `, _j, ` to fireinitial init `, _x0-2*_i+5.0); _dtbl[_i][3][1][_j, 8] := _x0-2*_i+5.0 end if end do end if; return _src elif _xin = "eventcount" then if _dtbl[1][3][1] = 0 or _dtbl[4] <> 2 and _dtbl[4] <> 3 then return 0 else return round(_dtbl[_dtbl[4]][3][1][_nv+1, 12]) end if else return "procname" end if end if; if _xout = _x0 then return [_x0, seq(evalf(_dtbl[1][6][_vmap[_i]]), _i = 1 .. _n-_ne)] end if; _i := `if`(_x0 <= _xout, 3, 2); if _xin = "last" and 0 < _dtbl[_i][4][9] and _dtbl[_i][4][9] < 100 then _dat := eval(_dtbl[_i], 2); _j := _dat[4][20]; return [_dat[11][_j, 0], seq(_dat[11][_j, _vmap[_i]], _i = 1 .. _n-_ne-_nd), seq(_dat[8][1][_vmap[_i]], _i = _n-_ne-_nd+1 .. _n-_ne)] end if; if not type(_dtbl[_i], 'array') then _dtbl[_i] := `dsolve/numeric/SC/IVPdcopy`(_dtbl[1], `if`(assigned(_dtbl[_i]), _dtbl[_i], NULL)); if 0 < _nv then for _j to _nv+1 do if _j <= _nv and not type(_dtbl[_i][3][4][_j, _i-1], 'undefined') then userinfo(3, {'events', 'eventreset'}, `reinit #5, event code `, _j, ` to defined init `, _dtbl[_i][3][4][_j, _i-1]); _dtbl[_i][3][1][_j, 8] := _dtbl[_i][3][4][_j, _i-1] elif _dtbl[_i][3][1][_j, 2] = 0 and irem(iquo(round(_dtbl[_i][3][1][_j, 4]), 32), 2) = 1 then userinfo(3, {'events', 'eventreset'}, `reinit #5, event code `, _j, ` to rate hysteresis init `, _dtbl[_i][5][24]); _dtbl[_i][3][1][_j, 8] := _dtbl[_i][5][24] elif _dtbl[_i][3][1][_j, 2] = 0 and irem(iquo(round(_dtbl[_i][3][1][_j, 4]), 2), 2) = 0 then userinfo(3, {'events', 'eventreset'}, `reinit #5, event code `, _j, ` to initial init `, _x0); _dtbl[_i][3][1][_j, 8] := _x0 else userinfo(3, {'events', 'eventreset'}, `reinit #5, event code `, _j, ` to fireinitial init `, _x0-2*_i+5.0); _dtbl[_i][3][1][_j, 8] := _x0-2*_i+5.0 end if end do end if end if; if _xin <> "last" then if 0 < 0 then if `dsolve/numeric/checkglobals`(op(_dtbl[1][14]), _pars, _n, _y0) then `dsolve/numeric/SC/reinitialize`(_dtbl, _y0, _n, procname, _pars, _i) end if end if; if _dtbl[1][4][7] = 0 then error "parameters must be initialized before solution can be computed" end if end if; _dat := eval(_dtbl[_i], 2); _dtbl[4] := _i; try _src := `dsolve/numeric/SC/IVPrun`(_dat, _xout) catch: userinfo(2, `dsolve/debug`, print(`Exception in solnproc:`, [lastexception][2 .. -1])); error  end try; if _dat[17] <> _dtbl[1][17] then _dtbl[1][17] := _dat[17]; _dtbl[1][10] := _dat[10] end if; if _src = 0 and 100 < _dat[4][9] then _val := _dat[3][1][_nv+1, 8] else _val := _dat[11][_dat[4][20], 0] end if; if _src <> 0 or _dat[4][9] <= 0 then _dtbl[1][5][1] := _xout else _dtbl[1][5][1] := _val end if; if _i = 3 and _val < _xout then Rounding := -infinity; if _dat[4][9] = 1 then error "cannot evaluate the solution further right of %1, probably a singularity", evalf[8](_val) elif _dat[4][9] = 2 then error "cannot evaluate the solution further right of %1, maxfun limit exceeded (see ?dsolve,maxfun for details)", evalf[8](_val) elif _dat[4][9] = 3 then if _dat[4][25] = 3 then error "cannot evaluate the solution past the initial point, problem may be initially singular or improperly set up" else error "cannot evaluate the solution past the initial point, problem may be complex, initially singular or improperly set up" end if elif _dat[4][9] = 4 then error "cannot evaluate the solution further right of %1, accuracy goal cannot be achieved with specified 'minstep'", evalf[8](_val) elif _dat[4][9] = 5 then error "cannot evaluate the solution further right of %1, too many step failures, tolerances may be too loose for problem", evalf[8](_val) elif _dat[4][9] = 6 then error "cannot evaluate the solution further right of %1, cannot downgrade delay storage for problems with delay derivative order > 1, try increasing delaypts", evalf[8](_val) elif _dat[4][9] = 10 then error "cannot evaluate the solution further right of %1, interrupt requested", evalf[8](_val) elif 100 < _dat[4][9] then if _dat[4][9]-100 = _nv+1 then error "constraint projection failure on event at t=%1", evalf[8](_val) elif _dat[4][9]-100 = _nv+2 then error "index-1 and derivative evaluation failure on event at t=%1", evalf[8](_val) elif _dat[4][9]-100 = _nv+3 then error "maximum number of event iterations reached (%1) at t=%2", round(_dat[3][1][_nv+1, 3]), evalf[8](_val) else if _Env_dsolve_nowarnstop <> true then `dsolve/numeric/warning`(StringTools:-FormatMessage("cannot evaluate the solution further right of %1, event #%2 triggered a halt", evalf[8](_val), round(_dat[3][1][_dat[4][9]-100, 1]))) end if; Rounding := 'nearest'; _xout := _val end if else error "cannot evaluate the solution further right of %1", evalf[8](_val) end if elif _i = 2 and _xout < _val then Rounding := infinity; if _dat[4][9] = 1 then error "cannot evaluate the solution further left of %1, probably a singularity", evalf[8](_val) elif _dat[4][9] = 2 then error "cannot evaluate the solution further left of %1, maxfun limit exceeded (see ?dsolve,maxfun for details)", evalf[8](_val) elif _dat[4][9] = 3 then if _dat[4][25] = 3 then error "cannot evaluate the solution past the initial point, problem may be initially singular or improperly set up" else error "cannot evaluate the solution past the initial point, problem may be complex, initially singular or improperly set up" end if elif _dat[4][9] = 4 then error "cannot evaluate the solution further left of %1, accuracy goal cannot be achieved with specified 'minstep'", evalf[8](_val) elif _dat[4][9] = 5 then error "cannot evaluate the solution further left of %1, too many step failures, tolerances may be too loose for problem", evalf[8](_val) elif _dat[4][9] = 6 then error "cannot evaluate the solution further left of %1, cannot downgrade delay storage for problems with delay derivative order > 1, try increasing delaypts", evalf[8](_val) elif _dat[4][9] = 10 then error "cannot evaluate the solution further right of %1, interrupt requested", evalf[8](_val) elif 100 < _dat[4][9] then if _dat[4][9]-100 = _nv+1 then error "constraint projection failure on event at t=%1", evalf[8](_val) elif _dat[4][9]-100 = _nv+2 then error "index-1 and derivative evaluation failure on event at t=%1", evalf[8](_val) elif _dat[4][9]-100 = _nv+3 then error "maximum number of event iterations reached (%1) at t=%2", round(_dat[3][1][_nv+1, 3]), evalf[8](_val) else if _Env_dsolve_nowarnstop <> true then `dsolve/numeric/warning`(StringTools:-FormatMessage("cannot evaluate the solution further left of %1, event #%2 triggered a halt", evalf[8](_val), round(_dat[3][1][_dat[4][9]-100, 1]))) end if; Rounding := 'nearest'; _xout := _val end if else error "cannot evaluate the solution further left of %1", evalf[8](_val) end if end if; if _EnvInFsolve = true then _dig := _dat[4][26]; _dat[4][26] := _EnvDSNumericSaveDigits; _Env_dsolve_SC_native := true; if _dat[4][25] = 1 then _i := 1; _dat[4][25] := 2 else _i := _dat[4][25] end if; _val := `dsolve/numeric/SC/IVPval`(_dat, _xout, _src); _dat[4][25] := _i; _dat[4][26] := _dig; [_xout, seq(_val[_vmap[_i]], _i = 1 .. _n-_ne)] else Digits := _dat[4][26]; _val := `dsolve/numeric/SC/IVPval`(eval(_dat, 2), _xout, _src); [_xout, seq(_val[_vmap[_i]], _i = 1 .. _n-_ne)] end if end proc, (2) = Array(0..0, {}), (3) = [phi, L(phi)], (4) = []}); _vars := _dat[3]; _pars := map(rhs, _dat[4]); _n := nops(_vars)-1; _solnproc := _dat[1]; if not type(_xout, 'numeric') then if member(x_rkf45, ["start", 'start', "method", 'method', "left", 'left', "right", 'right', "leftdata", "rightdata", "enginedata", "eventstop", 'eventstop', "eventclear", 'eventclear', "eventstatus", 'eventstatus', "eventcount", 'eventcount', "laxtol", 'laxtol', "numfun", 'numfun', NULL]) then _res := _solnproc(convert(x_rkf45, 'string')); if 1 < nops([_res]) then return _res elif type(_res, 'array') then return eval(_res, 1) elif _res <> "procname" then return _res end if elif member(x_rkf45, ["last", 'last', "initial", 'initial', "parameters", 'parameters', "initial_and_parameters", 'initial_and_parameters', NULL]) then _xout := convert(x_rkf45, 'string'); _res := _solnproc(_xout); if _xout = "parameters" then return [seq(_pars[_i] = _res[_i], _i = 1 .. nops(_pars))] elif _xout = "initial_and_parameters" then return [seq(_vars[_i+1] = [_res][1][_i+1], _i = 0 .. _n), seq(_pars[_i] = [_res][2][_i], _i = 1 .. nops(_pars))] else return [seq(_vars[_i+1] = _res[_i+1], _i = 0 .. _n)] end if elif type(_xout, `=`) and member(lhs(_xout), ["initial", 'initial', "parameters", 'parameters', "initial_and_parameters", 'initial_and_parameters', NULL]) then _xout := convert(lhs(x_rkf45), 'string') = rhs(x_rkf45); if type(rhs(_xout), 'list') then _res := _solnproc(_xout) else error "initial and/or parameter values must be specified in a list" end if; if lhs(_xout) = "initial" then return [seq(_vars[_i+1] = _res[_i+1], _i = 0 .. _n)] elif lhs(_xout) = "parameters" then return [seq(_pars[_i] = _res[_i], _i = 1 .. nops(_pars))] else return [seq(_vars[_i+1] = [_res][1][_i+1], _i = 0 .. _n), seq(_pars[_i] = [_res][2][_i], _i = 1 .. nops(_pars))] end if elif type(_xout, `=`) and member(lhs(_xout), ["eventdisable", 'eventdisable', "eventenable", 'eventenable', "eventfired", 'eventfired', "direction", 'direction', NULL]) then return _solnproc(convert(lhs(x_rkf45), 'string') = rhs(x_rkf45)) elif _xout = "solnprocedure" then return eval(_solnproc) elif _xout = "sysvars" then return _vars end if; if procname <> unknown then return ('procname')(x_rkf45) else _ndsol := 1; _ndsol := _ndsol; _ndsol := pointto(_dat[2][0]); return ('_ndsol')(x_rkf45) end if end if; try _res := _solnproc(_xout); [seq(_vars[_i+1] = _res[_i+1], _i = 0 .. _n)] catch: error  end try end proc

(3)

dsol(4)

[phi = 4., L(phi) = HFloat(2.35935387314392)]

(4)

plots:-odeplot(dsol, phi = 0 .. 2*Pi) 

Download mw.mw

@verdin It appears that the steady-states of your system are expressed through the roots of a complicated transcendental equation.  I am afraid that there are no analytic expressions for the roots.  You may have to analyze stability for specific numerical choices of the problem's parameters.

 

First 55 56 57 58 59 60 61 Last Page 57 of 99