tomleslie

5323 Reputation

15 Badges

9 years, 271 days

MaplePrimes Activity


These are answers submitted by tomleslie

I'm sure that I have and if I could be bothered to search, I could probably find my previous answer - but it is faster just to fix your current worksheet.

You appear not to appreciate the fundamental difference between quantities such as B[0] and B(0). (Same problem with C(0) and C[0],  P(0) and P[0],  G(0)and G[0], H(0) and H[0] etc, etc)

As example,

  1. B[0] is the zeroth entry of the indexable quantity (table/array) named 'B'
  2. B(0) is the value of the function B() given the argument '0'
  3. These are two completely different entities - and you have two choieces: either understand such distinctions or do something else for a living

Anyhow for what it is worth, the attached is my 'guess' at what you probably meant

  restart:

  with(plots):
  interface(version);
  local gamma:

`Standard Worksheet Interface, Maple 18.02, Windows 7, October 20 2014 Build ID 991181`

(1)

#
# Define parameters
#
  psi:= 0.79e-3:      beta[1]:= .198: A[p]:= .352:     mu[r]:= 0.352e-1:
  sigma:= .7902:      alpha:= .65:    xi:= .324:       chi:= 0.5e-1:
  beta[o]:= 0.123e-1: A[b]:= .144:    mu[b]:= 0.68e-1: varpi:= .134:
  t:=1: tau[1]:= .1:  tau[2]:=.2:     tau[3]:=.3:      e:=0.5:

#
# Define ODEs, initial values  and solve
#
  ODEs:= { diff(B(T), T) = A[p]-(psi*beta[1]*B(T)*(t-tau[1])*H(T)*(t-tau[1]))*e^(-mu[r]*tau[1])-mu[r]*B(T)+sigma*psi*H(T)*P(T)*e^(-mu[r]*tau[2]),
           diff(C(T), T) = (psi*beta[1]*B(T)*(t-tau[1])*C(T)*(t-tau[1]))*e^(-mu[r]*tau[1])-(alpha+xi+mu[r])*C(T),
           diff(P(T), T) = alpha*C(T)-mu[r]*P(T)-sigma*psi*H(T)*P(T)*e^(-mu[r]*tau[2]),
           diff(G(T), T) = A[b]-(psi*beta[o]*G(T)*(t-tau[3])*C(T)*(t-tau[3]))*e^(-mu[b]*tau[3])-mu[b]*G(T),
           diff(H(T), T) = (psi*beta[o]*G(T)*(t-tau[3])*C(T)*(t-tau[3]))*e^(-mu[b]*tau[3])-mu[b]*H(T)
         }:
  ic1:={B(0)= 70, C(0)= 45, P(0)= 30, G(0)= 25, H(0)= 15}:
  sol1:= dsolve( `union`(ODEs, ic1),
                  numeric
               );

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( [( "complex" ) = false ] ) _xout := _xin; _pars := []; _dtbl := array( 1 .. 4, [( 1 ) = (array( 1 .. 20, [( 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..53, {(1) = 5, (2) = 5, (3) = 0, (4) = 0, (5) = 0, (6) = 0, (7) = 1, (8) = 0, (9) = 0, (10) = 0, (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}, datatype = integer[8])), ( 5 ) = (Array(1..28, {(1) = .0, (2) = 0.10e-5, (3) = .0, (4) = 0.500001e-14, (5) = .0, (6) = 0.50573114463821886e-1, (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..5, {(1) = 70.0, (2) = 45.0, (3) = 25.0, (4) = 15.0, (5) = 30.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..5, {(1) = .1, (2) = .1, (3) = .1, (4) = .1, (5) = .1}, datatype = float[8], order = C_order), Array(1..5, {(1) = .0, (2) = .0, (3) = .0, (4) = .0, (5) = .0}, datatype = float[8], order = C_order), Array(1..5, {(1) = .0, (2) = .0, (3) = .0, (4) = .0, (5) = .0}, datatype = float[8], order = C_order), Array(1..5, {(1) = .0, (2) = .0, (3) = .0, (4) = .0, (5) = .0}, datatype = float[8], order = C_order), Array(1..5, {(1) = .0, (2) = .0, (3) = .0, (4) = .0, (5) = .0}, datatype = float[8], order = C_order), Array(1..5, 1..5, {(1, 1) = .0, (1, 2) = .0, (1, 3) = .0, (1, 4) = .0, (1, 5) = .0, (2, 1) = .0, (2, 2) = .0, (2, 3) = .0, (2, 4) = .0, (2, 5) = .0, (3, 1) = .0, (3, 2) = .0, (3, 3) = .0, (3, 4) = .0, (3, 5) = .0, (4, 1) = .0, (4, 2) = .0, (4, 3) = .0, (4, 4) = .0, (4, 5) = .0, (5, 1) = .0, (5, 2) = .0, (5, 3) = .0, (5, 4) = .0, (5, 5) = .0}, datatype = float[8], order = C_order), Array(1..5, 1..5, {(1, 1) = .0, (1, 2) = .0, (1, 3) = .0, (1, 4) = .0, (1, 5) = .0, (2, 1) = .0, (2, 2) = .0, (2, 3) = .0, (2, 4) = .0, (2, 5) = .0, (3, 1) = .0, (3, 2) = .0, (3, 3) = .0, (3, 4) = .0, (3, 5) = .0, (4, 1) = .0, (4, 2) = .0, (4, 3) = .0, (4, 4) = .0, (4, 5) = .0, (5, 1) = .0, (5, 2) = .0, (5, 3) = .0, (5, 4) = .0, (5, 5) = .0}, datatype = float[8], order = C_order), Array(1..5, 1..6, {(1, 1) = .0, (1, 2) = .0, (1, 3) = .0, (1, 4) = .0, (1, 5) = .0, (1, 6) = .0, (2, 1) = .0, (2, 2) = .0, (2, 3) = .0, (2, 4) = .0, (2, 5) = .0, (2, 6) = .0, (3, 1) = .0, (3, 2) = .0, (3, 3) = .0, (3, 4) = .0, (3, 5) = .0, (3, 6) = .0, (4, 1) = .0, (4, 2) = .0, (4, 3) = .0, (4, 4) = .0, (4, 5) = .0, (4, 6) = .0, (5, 1) = .0, (5, 2) = .0, (5, 3) = .0, (5, 4) = .0, (5, 5) = .0, (5, 6) = .0}, datatype = float[8], order = C_order), Array(1..5, {(1) = 0, (2) = 0, (3) = 0, (4) = 0, (5) = 0}, datatype = integer[8]), Array(1..5, {(1) = .0, (2) = .0, (3) = .0, (4) = .0, (5) = .0}, datatype = float[8], order = C_order), Array(1..5, {(1) = .0, (2) = .0, (3) = .0, (4) = .0, (5) = .0}, datatype = float[8], order = C_order), Array(1..5, {(1) = .0, (2) = .0, (3) = .0, (4) = .0, (5) = .0}, datatype = float[8], order = C_order), Array(1..5, {(1) = .0, (2) = .0, (3) = .0, (4) = .0, (5) = .0}, datatype = float[8], order = C_order), Array(1..5, {(1) = .0, (2) = .0, (3) = .0, (4) = .0, (5) = .0}, datatype = float[8], order = C_order)]), ( 8 ) = ([Array(1..5, {(1) = 70.0, (2) = 45.0, (3) = 25.0, (4) = 15.0, (5) = 30.0}, datatype = float[8], order = C_order), Array(1..5, {(1) = .0, (2) = .0, (3) = .0, (4) = .0, (5) = .0}, datatype = float[8], order = C_order), Array(1..5, {(1) = -1.963069943805, (2) = -45.013919411925, (3) = -1.5614327762281253, (4) = -1.014567223771875, (5) = 27.911709747779998}, datatype = float[8], order = C_order)]), ( 11 ) = (Array(1..6, 0..5, {(1, 1) = .0, (1, 2) = .0, (1, 3) = .0, (1, 4) = .0, (1, 5) = .0, (2, 0) = .0, (2, 1) = .0, (2, 2) = .0, (2, 3) = .0, (2, 4) = .0, (2, 5) = .0, (3, 0) = .0, (3, 1) = .0, (3, 2) = .0, (3, 3) = .0, (3, 4) = .0, (3, 5) = .0, (4, 0) = .0, (4, 1) = .0, (4, 2) = .0, (4, 3) = .0, (4, 4) = .0, (4, 5) = .0, (5, 0) = .0, (5, 1) = .0, (5, 2) = .0, (5, 3) = .0, (5, 4) = .0, (5, 5) = .0, (6, 0) = .0, (6, 1) = .0, (6, 2) = .0, (6, 3) = .0, (6, 4) = .0, (6, 5) = .0}, datatype = float[8], order = C_order)), ( 10 ) = ([proc (N, X, Y, YP) option `[Y[1] = B(T), Y[2] = C(T), Y[3] = G(T), Y[4] = H(T), Y[5] = P(T)]`; YP[1] := .352-0.1270097105e-3*Y[1]*Y[4]-0.352e-1*Y[1]+0.6273116716e-3*Y[4]*Y[5]; YP[2] := 0.1270097105e-3*Y[1]*Y[2]-1.0092*Y[2]; YP[3] := .144-0.4829134425e-5*Y[3]*Y[2]-0.68e-1*Y[3]; YP[4] := 0.4829134425e-5*Y[3]*Y[2]-0.68e-1*Y[4]; YP[5] := .65*Y[2]-0.352e-1*Y[5]-0.6273116716e-3*Y[4]*Y[5]; 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] = B(T), Y[2] = C(T), Y[3] = G(T), Y[4] = H(T), Y[5] = P(T)]`; YP[1] := .352-0.1270097105e-3*Y[1]*Y[4]-0.352e-1*Y[1]+0.6273116716e-3*Y[4]*Y[5]; YP[2] := 0.1270097105e-3*Y[1]*Y[2]-1.0092*Y[2]; YP[3] := .144-0.4829134425e-5*Y[3]*Y[2]-0.68e-1*Y[3]; YP[4] := 0.4829134425e-5*Y[3]*Y[2]-0.68e-1*Y[4]; YP[5] := .65*Y[2]-0.352e-1*Y[5]-0.6273116716e-3*Y[4]*Y[5]; 0 end proc, -1, 0, 0, 0, 0, 0, 0]), ( 20 ) = ([])  ] ))  ] ); _y0 := Array(0..5, {(1) = 0., (2) = 70., (3) = 45., (4) = 25., (5) = 15.}); _vmap := array( 1 .. 5, [( 1 ) = (1), ( 2 ) = (2), ( 3 ) = (3), ( 4 ) = (4), ( 5 ) = (5)  ] ); _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] < 10 and 10 <= _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 10 <= _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] < 10 and 10 < _dtbl[5-_i][4][9] then _dtbl[4] := 5-_i; _i := 5-_i end if; if _dtbl[_i][4][9] < 10 then error "no events to clear" elif _nv < _dtbl[_i][4][9]-10 then error "event error condition cannot be cleared" else _j := _dtbl[_i][4][9]-10; 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] < 10 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 _src = 0 and 10 < _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 10 < _dat[4][9] then if _dat[4][9]-10 = _nv+1 then error "constraint projection failure on event at t=%1", evalf[8](_val) elif _dat[4][9]-10 = _nv+2 then error "index-1 and derivative evaluation failure on event at t=%1", evalf[8](_val) elif _dat[4][9]-10 = _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]-10, 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 10 < _dat[4][9] then if _dat[4][9]-10 = _nv+1 then error "constraint projection failure on event at t=%1", evalf[8](_val) elif _dat[4][9]-10 = _nv+2 then error "index-1 and derivative evaluation failure on event at t=%1", evalf[8](_val) elif _dat[4][9]-10 = _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]-10, 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) = [T, B(T), C(T), G(T), H(T), P(T)], (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; _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

(2)

#
# Generate a simple display of numerical results
# from the above calculation
#
# Need to juggle the default display limits
# (and then reset them to defaults)
#

  interface(displayprecision = 4):
  interface(rtablesize = 20):
  M:= Matrix( [ lhs~(sol1(0)),
                seq( rhs~(sol1(j)),
                     j = 0 .. 10
                   )
              ]
            );
  interface(displayprecision = -1):
  interface(rtablesize = 10):

M := Matrix(12, 6, {(1, 1) = T, (1, 2) = B(T), (1, 3) = C(T), (1, 4) = G(T), (1, 5) = H(T), (1, 6) = P(T), (2, 1) = 0., (2, 2) = 70.0000, (2, 3) = 45.0000, (2, 4) = 25.0000, (2, 5) = 15.0000, (2, 6) = 30.0000, (3, 1) = 1.0000, (3, 2) = 68.1563, (3, 3) = 16.5475, (3, 4) = 23.4925, (3, 5) = 14.0171, (3, 6) = 46.7184, (4, 1) = 2.0000, (4, 2) = 66.4452, (4, 3) = 6.0835, (4, 4) = 22.0862, (4, 5) = 13.0968, (4, 6) = 51.3481, (5, 1) = 3.0000, (5, 2) = 64.7925, (5, 3) = 2.2361, (5, 4) = 20.7731, (5, 5) = 12.2362, (5, 6) = 51.6170, (6, 1) = 4.0000, (6, 2) = 63.1752, (6, 3) = .8217, (6, 4) = 19.5466, (6, 5) = 11.4319, (6, 6) = 50.3592, (7, 1) = 5.0000, (7, 2) = 61.5871, (7, 3) = .3019, (7, 4) = 18.4008, (7, 5) = 10.6804, (7, 6) = 48.6108, (8, 1) = 6.0000, (8, 2) = 60.0279, (8, 3) = .1109, (8, 4) = 17.3303, (8, 5) = 9.9783, (8, 6) = 46.7475, (9, 1) = 7.0000, (9, 2) = 58.4987, (9, 3) = 0.407e-1, (9, 4) = 16.3302, (9, 5) = 9.3223, (9, 6) = 44.9028, (10, 1) = 8.0000, (10, 2) = 57.0007, (10, 3) = 0.150e-1, (10, 4) = 15.3959, (10, 5) = 8.7095, (10, 6) = 43.1216, (11, 1) = 9.0000, (11, 2) = 55.5353, (11, 3) = 0.55e-2, (11, 4) = 14.5230, (11, 5) = 8.1369, (11, 6) = 41.4168, (12, 1) = 10.0000, (12, 2) = 54.1034, (12, 3) = 0.20e-2, (12, 4) = 13.7075, (12, 5) = 7.6020, (12, 6) = 39.7897})

(3)

a__n

a__n

(4)

 

Download fixODE2.mw

 


 

If I strip out all the useless redundant crap in your worksheet and just plot the expressions you appear to want, it becomes obvious that, outside a rather narrow range of values for the independent variable 'sigma', the expressions you wish to plot are in fact complex.

Complex values will not be plotted

See the attached

restart; eqs := {1.079801433*10^(-25)*(-6.465854665*10^71+1.058832302*10^46*sqrt(-2.057991547*10^56*sigma^3+3.729044048*10^51))^(1/3)+3.074042610*10^24*sigma/(-6.465854665*10^71+1.058832302*10^46*sqrt(-2.057991547*10^56*sigma^3+3.729044048*10^51))^(1/3), 1.079801433*10^(-25)*(6.465854665*10^71+1.058832302*10^46*sqrt(-2.057991547*10^56*sigma^3+3.729044048*10^51))^(1/3)+3.074042610*10^24*sigma/(6.465854665*10^71+1.058832302*10^46*sqrt(-2.057991547*10^56*sigma^3+3.729044048*10^51))^(1/3)}; plot(eqs, sigma = -.2 .. .2, view = [-.25 .. 1.25, 0 .. 1]); eval(eqs, sigma = .2); eval(eqs, sigma = 0.)

 

{.4421299352-0.15e-8*I, .4503075840-0.14e-8*I}

 

{.1176420393, 0.2505997125e-4+0.4340514343e-4*I}

(1)

NULL

Download complPlt.mw

and use list declarations for the various options, like 'color' etc. As in the attached

PS The plot renders better in a MAple worksheet than it does on this webpage - honest!

  restart;
  with(plots):
  implicitplot
  ( eval( [ x^3+y^3-3*a*x*y=0,
            x+y+a=0
          ],
          a=1
        ),
    x=-3..3,
    y=-3..3,
    color=[red, blue],
    linestyle=[1, 6],
    thickness=[2, 2],
    numpoints=10000
  )

 

 

 

Download folium.mw

in Maple 2019. I can reproduce the same error in Maple18. It has something(?) to do with how 'Pi' is treated in some expressions - which I haven't fully diagnosed.

I can make the problem "go away" by including the statement

myPi:=evalf(Pi)

and replacing all occurrences of 'Pi' in the worksheet with 'myPi'. This now gives the same solution in Maple 18 as your original (unaltered) worksheet provides in Maple 2019. Check the attached

restart

mbal := 0.28e-2:

rbal := 0.2e-1:

Cw := .47:

g := 9.81:

myPi := evalf(Pi)

3.141592654

(1)

A := myPi*rbal^2:

beta := 3.33*myPi*(1/180):

s0x := .2:

s0y := .25:

rho := 1.293:

l := 2:

vx := diff(sx(t), t);

diff(sx(t), t)

(2)

vy := diff(sy(t), t);

diff(sy(t), t)

(3)

ax := diff(sx(t), `$`(t, 2));

diff(diff(sx(t), t), t)

(4)

ay := diff(sy(t), `$`(t, 2));

diff(diff(sy(t), t), t)

(5)

v0x := cos(beta)*v0;

.9983115393*v0

(6)

v0y := sin(beta)*v0;

0.5808674961e-1*v0

(7)

`&Sigma;Fx` := -Fdx = mbal*ax;

-Fdx = 0.28e-2*(diff(diff(sx(t), t), t))

(8)

`&Sigma;Fy` := -Fz-Fdy = mbal*ay;

-Fz-Fdy = 0.28e-2*(diff(diff(sy(t), t), t))

(9)

Fz := mbal*g;

0.27468e-1

(10)

Fdx := .5*rho*vx^2*A*Cw;

0.3818354544e-3*(diff(sx(t), t))^2

(11)

Fdy := .5*rho*vy^2*A*Cw;

0.3818354544e-3*(diff(sy(t), t))^2

(12)

ics1 := sx(0) = s0x, (D(sx))(0) = v0x;

sx(0) = .2, (D(sx))(0) = .9983115393*v0

(13)

ics2 := sy(0) = s0y, (D(sy))(0) = v0y;

sy(0) = .25, (D(sy))(0) = 0.5808674961e-1*v0

(14)

verplaatsingx := dsolve({ics1, `&Sigma;Fx`}, sx(t));

sx(t) = (1750000000/238647159)*ln((2382442126508618487/17500000000000000000)*v0*exp(238647159/8750000000)*t+exp(238647159/8750000000))

(15)

verplaatsingy := dsolve({ics2, `&Sigma;Fy`});

sy(t) = 1/4+(875000000/238647159)*ln((1/505799395325000000000000000000000000000)*(154024864110787311*sin((9/3500000)*202319758130^(1/2)*t)*v0+50000000000000*202319758130^(1/2)*cos((9/3500000)*202319758130^(1/2)*t))^2)

(16)

eindy := rhs(verplaatsingy) = rbal;

1/4+(875000000/238647159)*ln((1/505799395325000000000000000000000000000)*(154024864110787311*sin((9/3500000)*202319758130^(1/2)*t)*v0+50000000000000*202319758130^(1/2)*cos((9/3500000)*202319758130^(1/2)*t))^2) = 0.2e-1

(17)

eindx := rhs(verplaatsingx) = l;

(1750000000/238647159)*ln((2382442126508618487/17500000000000000000)*v0*exp(238647159/8750000000)*t+exp(238647159/8750000000)) = 2

(18)

t := solve(eindy, t);

.8645823917*arctan(0.4101936496e16*((0.1966873837e28*v0^2+0.1314851828e31+18.*(0.1192836232e53*v0^4+0.1546333077e56*v0^2)^(1/2))/(0.8004529672e54*v0^4+0.3413205617e59*v0^2+0.3638556250e63))^(1/2), 0.4755738338e-18*(0.3833525074e60*v0^4+0.1634650611e65*v0^2+0.1742575415e69)*((0.1966873837e28*v0^2+0.1314851828e31+18.*(0.1192836232e53*v0^4+0.1546333077e56*v0^2)^(1/2))/(0.8004529672e54*v0^4+0.3413205617e59*v0^2+0.3638556250e63))^(3/2)/v0+0.2826442056e-49*(-0.3219605325e65*v0^2-0.1059539541e68)*((0.1966873837e28*v0^2+0.1314851828e31+18.*(0.1192836232e53*v0^4+0.1546333077e56*v0^2)^(1/2))/(0.8004529672e54*v0^4+0.3413205617e59*v0^2+0.3638556250e63))^(1/2)/v0), .8645823917*arctan(-0.4101936496e16*((0.1966873837e28*v0^2+0.1314851828e31+18.*(0.1192836232e53*v0^4+0.1546333077e56*v0^2)^(1/2))/(0.8004529672e54*v0^4+0.3413205617e59*v0^2+0.3638556250e63))^(1/2), -0.4755738338e-18*(0.3833525074e60*v0^4+0.1634650611e65*v0^2+0.1742575415e69)*((0.1966873837e28*v0^2+0.1314851828e31+18.*(0.1192836232e53*v0^4+0.1546333077e56*v0^2)^(1/2))/(0.8004529672e54*v0^4+0.3413205617e59*v0^2+0.3638556250e63))^(3/2)/v0-0.2826442056e-49*(-0.3219605325e65*v0^2-0.1059539541e68)*((0.1966873837e28*v0^2+0.1314851828e31+18.*(0.1192836232e53*v0^4+0.1546333077e56*v0^2)^(1/2))/(0.8004529672e54*v0^4+0.3413205617e59*v0^2+0.3638556250e63))^(1/2)/v0), .8645823917*arctan(0.4695984595e14*(-1.*(-0.1500724738e32*v0^2-0.1003231945e35+137340.*(0.1192836232e53*v0^4+0.1546333077e56*v0^2)^(1/2))/(0.8004529672e54*v0^4+0.3413205617e59*v0^2+0.3638556250e63))^(1/2), 0.7135610645e-24*(0.3833525074e60*v0^4+0.1634650611e65*v0^2+0.1742575415e69)*(-1.*(-0.1500724738e32*v0^2-0.1003231945e35+137340.*(0.1192836232e53*v0^4+0.1546333077e56*v0^2)^(1/2))/(0.8004529672e54*v0^4+0.3413205617e59*v0^2+0.3638556250e63))^(3/2)/v0+0.3235771292e-51*(-0.3219605325e65*v0^2-0.1059539541e68)*(-1.*(-0.1500724738e32*v0^2-0.1003231945e35+137340.*(0.1192836232e53*v0^4+0.1546333077e56*v0^2)^(1/2))/(0.8004529672e54*v0^4+0.3413205617e59*v0^2+0.3638556250e63))^(1/2)/v0), .8645823917*arctan(-0.4695984595e14*(-1.*(-0.1500724738e32*v0^2-0.1003231945e35+137340.*(0.1192836232e53*v0^4+0.1546333077e56*v0^2)^(1/2))/(0.8004529672e54*v0^4+0.3413205617e59*v0^2+0.3638556250e63))^(1/2), -0.7135610645e-24*(0.3833525074e60*v0^4+0.1634650611e65*v0^2+0.1742575415e69)*(-1.*(-0.1500724738e32*v0^2-0.1003231945e35+137340.*(0.1192836232e53*v0^4+0.1546333077e56*v0^2)^(1/2))/(0.8004529672e54*v0^4+0.3413205617e59*v0^2+0.3638556250e63))^(3/2)/v0-0.3235771292e-51*(-0.3219605325e65*v0^2-0.1059539541e68)*(-1.*(-0.1500724738e32*v0^2-0.1003231945e35+137340.*(0.1192836232e53*v0^4+0.1546333077e56*v0^2)^(1/2))/(0.8004529672e54*v0^4+0.3413205617e59*v0^2+0.3638556250e63))^(1/2)/v0)

(19)

t := evalf(t[1]);

.8645823917*arctan(0.4101936496e16*((0.1966873837e28*v0^2+0.1314851828e31+18.*(0.1192836232e53*v0^4+0.1546333077e56*v0^2)^(1/2))/(0.8004529672e54*v0^4+0.3413205617e59*v0^2+0.3638556250e63))^(1/2), 0.4755738338e-18*(0.3833525074e60*v0^4+0.1634650611e65*v0^2+0.1742575415e69)*((0.1966873837e28*v0^2+0.1314851828e31+18.*(0.1192836232e53*v0^4+0.1546333077e56*v0^2)^(1/2))/(0.8004529672e54*v0^4+0.3413205617e59*v0^2+0.3638556250e63))^(3/2)/v0+0.2826442056e-49*(-0.3219605325e65*v0^2-0.1059539541e68)*((0.1966873837e28*v0^2+0.1314851828e31+18.*(0.1192836232e53*v0^4+0.1546333077e56*v0^2)^(1/2))/(0.8004529672e54*v0^4+0.3413205617e59*v0^2+0.3638556250e63))^(1/2)/v0)

(20)

v0 := fsolve(eindx, v0);

7.694586915

(21)

``

``


 

Download piProb.mw

is an "element" of the Maplet() - not of the Window(). So the following will work,

  restart;
  with(Maplets):
  with(Maplets[Elements]):

  mpt:= Maplet
        ( Window
          ( 'title' ="Точка выше или ниже прямой" ,
            [ ToggleButton[TB1]("Ta", 'group' = 'tb1'),
              ToggleButton[TB2]("Tb", 'group' = 'tb1')
            ]
          ),
          ButtonGroup['tb1']()
        ):
  Display(mpt);

 

Download mplt.mw

but something like

plot( diff( rhs(sol), x), x=0..10)

ought to get you close - depending on other "unknowns" which might appear in "sol". If you have other variables/parameters, say a, b, t then

plot( eval( diff( rhs(sol), x), [a=whatever1, b=whatever2, t=whatever3]), x=0..10)

If neither of the above solves your problem, then use the big green up-arrow in the Mapleprimes toolbar to upload a worksheet

is shown in the attached

eq1:=(1/2)*y*exp(-y)+2*y^3 - x*ln(x) +x^2 = 10:
eq2:=(1/2)*y*exp(-y)+2*y^3 +x^2 = 10 + x*ln(x):
eq3:=y*exp(-y)+4*y^3 - 2*x*ln(x) +2*x^2 = 20:

g:= z-> simplify( (lhs(z)-rhs(z))):
isEquiv:= (x,y)-> type(simplify(g(x)/g(y)),numeric):

isEquiv(eq1, eq2);
isEquiv(eq1, eq3);
isEquiv(eq2, eq3);

true

 

true

 

true

(1)

 


 

Download checkEquiv.mw

like this

`mod`~(<8, 9 ,9 ,7 ,9 ,10 ,5>^~(-1),11);

 

you have two lists, not two vectors. However the techniques for elementwise multiplication is pretty much the same for both, as shown in the attached


 

#
# Elementwise multiplication with lists
#
  X:=[x1 ,x2,x3];
  G:=[g1,g2,g3];
  X*~G

[x1, x2, x3]

 

[g1, g2, g3]

 

[x1*g1, x2*g2, x3*g3]

(1)

#
# Elementwise multiplication with vectors
#
  X:=<x1 ,x2,x3>;
  G:=<g1,g2,g3>;
  X*~G

Vector(3, {(1) = x1, (2) = x2, (3) = x3})

 

Vector(3, {(1) = g1, (2) = g2, (3) = g3})

 

Vector[column](%id = 18446744074778350406)

(2)

 


 

Download LorV.mw

if you really want to know about the methods used by Maple to factor large integers, then a good place to start is the help page for the command ?ifactor. Amongst other things, this will tell you

  1. when the quadratic sieve method is used and which other methods can be invoked
  2. where to find an explanation of the quadratic sieve (in the References, sub-section)

You appear to believe that the "prettyprinted" version of Maple's 2D-input bears a simple relationship to underlying ASCII characters - not true.

If you select the input argument to the Explode() command and then, from the Maple toolbar, you use

Format->Convert To->1-D Math Input,

then you will observe that your "input" string is actually

"1&le; n&le;m"

which the Explode() command explodes "correctly"

 

 

Ths problem has existed for the past couple of days :-(

NLPSolve() (usually) requires that the objective function be differentiable, o that it can figure out which direction represents "downhill". The "Error Message" just says that around the iniitial point the objective function is "flat". This *might* be a maximum, a minimum, or indeed just a region where your objective function is "flat", ie doesn't change value when the independent variables are changed

If you are supplying an initial point, change it

If you are not supplying an initial point, then try supplying a few different ones

Alternatively use the big green up-arrow in the MaplePrimes toolbar to upload your worksheet

You have defined 'Sol' as a set - ie using curly braces {}.

Sets have no concept of order - you cannot guarantee which element  will occur where. Whatever you may think, the set {3,2,1} is absolutely identical to {1, 2, 3}.

The simplest way to fix your immediate problem is to change the definition of 'Sol' from a set to a list. Although it defeats me why you should want to loop through the elements of either the list or the set, why not just apply the 'assign()' command elementwise??

Both options are shown in the attached

restart

N := 3; L := 0; R := 1; T := 1; NN := 4; Mx := NN; My := NN; Mz := NN; `&Delta;x` := (R-L)/Mx; `&Delta;y` := (R-L)/My; `&Delta;z` := (R-L)/Mz; `&Delta;t` := T/N; n := 0

1/4

 

1/4

 

1/4

 

1/3

(1)

Sol := [u[1, 1, 1, 1] = 0.14578485742667928362e-1, u[1, 1, 2, 1] = 0.29548584487036957497e-1, u[1, 1, 3, 1] = 0.44323688168892291723e-1, u[1, 2, 1, 1] = 0.29548584487036957496e-1, u[1, 2, 2, 1] = 0.59949352480274039874e-1, u[1, 2, 3, 1] = 0.90261881648876334312e-1, u[1, 3, 1, 1] = 0.44323688168892291724e-1, u[1, 3, 2, 1] = 0.90261881648876334322e-1, u[1, 3, 3, 1] = .13752578451379877709, u[2, 1, 1, 1] = 0.26717348328676609020e-1, u[2, 1, 2, 1] = 0.54613563612919064759e-1, u[2, 1, 3, 1] = 0.83815829643036530661e-1, u[2, 2, 1, 1] = 0.54613563612919064757e-1, u[2, 2, 2, 1] = .11170063733186747631, u[2, 2, 3, 1] = .17183586485000930908, u[2, 3, 1, 1] = 0.83815829643036530657e-1, u[2, 3, 2, 1] = .17183586485000930908, u[2, 3, 3, 1] = .26633149533104995811, u[3, 1, 1, 1] = 0.39827755588924378576e-1, u[3, 1, 2, 1] = 0.81803408890300879260e-1, u[3, 1, 3, 1] = .12733149048832359596, u[3, 2, 1, 1] = 0.81803408890300879254e-1, u[3, 2, 2, 1] = .16807855529017971428, u[3, 2, 3, 1] = .26194706234064804568, u[3, 3, 1, 1] = .12733149048832359595, u[3, 3, 2, 1] = .26194706234064804570, u[3, 3, 3, 1] = .40978986410708023066]

[u[1, 1, 1, 1] = 0.14578485742667928362e-1, u[1, 1, 2, 1] = 0.29548584487036957497e-1, u[1, 1, 3, 1] = 0.44323688168892291723e-1, u[1, 2, 1, 1] = 0.29548584487036957496e-1, u[1, 2, 2, 1] = 0.59949352480274039874e-1, u[1, 2, 3, 1] = 0.90261881648876334312e-1, u[1, 3, 1, 1] = 0.44323688168892291724e-1, u[1, 3, 2, 1] = 0.90261881648876334322e-1, u[1, 3, 3, 1] = .13752578451379877709, u[2, 1, 1, 1] = 0.26717348328676609020e-1, u[2, 1, 2, 1] = 0.54613563612919064759e-1, u[2, 1, 3, 1] = 0.83815829643036530661e-1, u[2, 2, 1, 1] = 0.54613563612919064757e-1, u[2, 2, 2, 1] = .11170063733186747631, u[2, 2, 3, 1] = .17183586485000930908, u[2, 3, 1, 1] = 0.83815829643036530657e-1, u[2, 3, 2, 1] = .17183586485000930908, u[2, 3, 3, 1] = .26633149533104995811, u[3, 1, 1, 1] = 0.39827755588924378576e-1, u[3, 1, 2, 1] = 0.81803408890300879260e-1, u[3, 1, 3, 1] = .12733149048832359596, u[3, 2, 1, 1] = 0.81803408890300879254e-1, u[3, 2, 2, 1] = .16807855529017971428, u[3, 2, 3, 1] = .26194706234064804568, u[3, 3, 1, 1] = .12733149048832359595, u[3, 3, 2, 1] = .26194706234064804570, u[3, 3, 3, 1] = .40978986410708023066]

(2)

for i while i <= Mx-1 do for j while j <= My-1 do for k while k <= Mz-1 do u[i, j, k, n+1] := rhs(op((Mz-1)*((My-1)*(i-1)+j-1)+k, Sol)) end do end do end do

u[3, 2, 3, 1]

.26194706234064804568

(3)

restart;

N := 3: L := 0: R := 1: T := 1:
NN := 4: Mx := NN: My := NN: Mz := NN:
Delta__x := (R - L)/Mx; Delta__y := (R - L)/My;
Delta__z := (R - L)/Mz; Delta__t := T/N;
n := 0:
Sol := [u[1, 1, 1, 1] = 0.014578485742667928362, u[1, 1, 2, 1] = 0.029548584487036957497, u[1, 1, 3, 1] = 0.044323688168892291723,
        u[1, 2, 1, 1] = 0.029548584487036957496, u[1, 2, 2, 1] = 0.059949352480274039874, u[1, 2, 3, 1] = 0.090261881648876334312,
        u[1, 3, 1, 1] = 0.044323688168892291724, u[1, 3, 2, 1] = 0.090261881648876334322, u[1, 3, 3, 1] = 0.13752578451379877709,
        u[2, 1, 1, 1] = 0.026717348328676609020, u[2, 1, 2, 1] = 0.054613563612919064759, u[2, 1, 3, 1] = 0.083815829643036530661,
        u[2, 2, 1, 1] = 0.054613563612919064757, u[2, 2, 2, 1] = 0.11170063733186747631,  u[2, 2, 3, 1] = 0.17183586485000930908,
        u[2, 3, 1, 1] = 0.083815829643036530657, u[2, 3, 2, 1] = 0.17183586485000930908,  u[2, 3, 3, 1] = 0.26633149533104995811,
        u[3, 1, 1, 1] = 0.039827755588924378576, u[3, 1, 2, 1] = 0.081803408890300879260, u[3, 1, 3, 1] = 0.12733149048832359596,
        u[3, 2, 1, 1] = 0.081803408890300879254, u[3, 2, 2, 1] = 0.16807855529017971428,  u[3, 2, 3, 1] = 0.26194706234064804568,
        u[3, 3, 1, 1] = 0.12733149048832359595,  u[3, 3, 2, 1] = 0.26194706234064804570,  u[3, 3, 3, 1] = 0.40978986410708023066];

1/4

 

1/4

 

1/4

 

1/3

 

[u[1, 1, 1, 1] = 0.14578485742667928362e-1, u[1, 1, 2, 1] = 0.29548584487036957497e-1, u[1, 1, 3, 1] = 0.44323688168892291723e-1, u[1, 2, 1, 1] = 0.29548584487036957496e-1, u[1, 2, 2, 1] = 0.59949352480274039874e-1, u[1, 2, 3, 1] = 0.90261881648876334312e-1, u[1, 3, 1, 1] = 0.44323688168892291724e-1, u[1, 3, 2, 1] = 0.90261881648876334322e-1, u[1, 3, 3, 1] = .13752578451379877709, u[2, 1, 1, 1] = 0.26717348328676609020e-1, u[2, 1, 2, 1] = 0.54613563612919064759e-1, u[2, 1, 3, 1] = 0.83815829643036530661e-1, u[2, 2, 1, 1] = 0.54613563612919064757e-1, u[2, 2, 2, 1] = .11170063733186747631, u[2, 2, 3, 1] = .17183586485000930908, u[2, 3, 1, 1] = 0.83815829643036530657e-1, u[2, 3, 2, 1] = .17183586485000930908, u[2, 3, 3, 1] = .26633149533104995811, u[3, 1, 1, 1] = 0.39827755588924378576e-1, u[3, 1, 2, 1] = 0.81803408890300879260e-1, u[3, 1, 3, 1] = .12733149048832359596, u[3, 2, 1, 1] = 0.81803408890300879254e-1, u[3, 2, 2, 1] = .16807855529017971428, u[3, 2, 3, 1] = .26194706234064804568, u[3, 3, 1, 1] = .12733149048832359595, u[3, 3, 2, 1] = .26194706234064804570, u[3, 3, 3, 1] = .40978986410708023066]

(4)

  assign~(Sol):
#
# A test
#
  u[3, 2, 3, 1];

.26194706234064804568

(5)

 

 

 

Download listNotSet.mw

Force the timestep option to be 1/2 of the spacestep option, and it always seems to "work", irrespective of the magnitude of the latter.

The attached works for all values of "myStep" which I have tried.

I could speculate on why - so (at the risk of being completely wrong). SInce the spatial domain is symmetrical wrt 0, a spacestep setting of 0.1, would give 20 intervals. To guarantee 20 intervals in time, the timestep has to be set to 0.05. Maybe when computing a "default" timestep, Maple just uses the spacestep setting (ie 0.1), ignoring the spatial range, and thus ends up with 10 time intervals?

In general things seem to work better if the number of time intervals = number of spatial intervals

PS I also "corrected" the definition of the piecewise function used for the initial conditions, because I didin't understand wht yo menat by the condition 'true', and it was undefined for x=0

Anyhow for what it is worth the attached seems to work OK.


 

restart;
pde := diff(u(x,t),t$2)=diff(u(x,t),x$2):
bc  := u(-1,t)=u(1,t),D[1](u)(-1,t)=D[1](u)(1,t):
f:=x->piecewise( -1/2<x and x<0,
                 x+1/2,
                 x=0,
                 1/2,
                 0<x and x<1/2,
                 1/2-x,
                 0
               ):
plot(f(x),x=-1..1):
ic  := u(x,0)=f(x),D[2](u)(x,0)=0:
myStep:=1/100:
sol:=pdsolve( pde,
              { bc, ic },
              u(x,t),
              numeric,
              timestep=myStep/2,
              spacestep=myStep
            ):
sol:-animate(frames=50,t=0..1,title="time = %f");

 

 


 

Download pdeProb.mw

 

1 2 3 4 5 6 7 Last Page 2 of 118