MaplePrimes Questions

Hey everybody I am trying to get maple to do some partial differention for me. 

Where 

 

I have PDEtools on but, it doesnt return an expression correctly. It's I think the problem is because Ψ is a function of (x,y) and f is a function of η and η is a function of x and y . U and ν are constants. vand vy are the x and y velocites. 

 

What I would like the program to return when I write 

is something along the lines of 

 

could someone give me a hand on this. I would really apperciate it. 

 

Best Regards, 

Kyle 

Hi Guys,

I am trying to do the following and here is the issue:

> System*Transfer*Functions;
Power Stage Transfer Function:
> He := s^2/`ωn`^2+s/(`ωn`*Qn)+1;
>
Compensation Netwrok Transfer Function:
> Av := gm*(1+s/`ωcz1`)(1+s/`ωcz2`)/((Cc+Rc)*s*(1+s/`ωcp`));

>
Loop Transfer Function:
> Loop := Vref*RL*(1+s/`ωesr`)*Av/(Vout*Ri*(1+s/`ωp1`)*He);

> sys3 := TransferFunction(Loop);

Warning, transfer-function(s) are not rational-polynomial(s) in s

 

I want to do the TF and Bode Plot for this complex system... 

I am having trouble getting a certain Maple worksheet to execute.  Using both Maple17 (I think it is 17.02) installed on two separate PC's at home (XP), and using Maple15 via Citrix from a server maintained by my employer, I get a long error message.  It starts:    "Kernel connection has been lost.  You should save this worksheet and restart Maple.  Executing commands in Maple requires a connection to the Maple kernel.  Firewalls have been known to cause problems with kernel connections in Maple.".  If anyone wants, I can add the entire error message to this question. I don't think I actually have a firewall at home, and this error message doesn't seem to explain why my local copy of Maple is having trouble.

I think I updated my home copy of Maple to Maple 17.02 after I started writing the worksheet and before this problem appeared, so there may be an issue with Maple 17.02.  But this would not seem to explain the trouble I have executing the worksheet using Maple15 via Citrix.

I have uploaded the file.  I removed the output to make it a reasonable length.  I created a "toy" file that plots x^2 from x = 1 to x = 4, and does nothing else, and it works just fine.  I apologize for the length of the file I uploaded, but I don't know exactly what is causing  the error.

NewPicture.mw

 

GS

I copied and pasted this from the example page and I have to get this same graph for an assignment

im using maple 17

 

Tangent(x^3-x, -.432, view = [-2 .. 1, DEFAULT], output = plot)

 

when i hit enter the return was

 


Tangent(x^3-x, -.432, view = [-2 .. 1, DEFAULT], output = plot)                       (1)

 

Hi,

I'm having some difficulty in figureing our how to store the results of an fsolve computation in an indexed variable that I can access subsequently to perform plots and do other calculations.  I have a do loop that, for every increment, has fsolve calculate five variable  (x,y,z.. )from a set of equations that have been entered.  It does the calculations just fine.  What I can't seem to do is set up an array variable (or other indexed variable like a vector) so that with every increment of the loop the values that fsolve generates for x, y, z  ect. can be stored.  That just doesn't seem to work, what am I getting wrong? Any help would be most appreciated.

 

Al Stiegman

Hi,

 

I need help formulating a biased coin toss.

 

I want to toss a coin 0 being heads and 1 being tails with probabilty 0.495 of getting heads, how do I show whether heads or tails wins??

 

Thanks

I tried

solve(log[3+sqrt(8)](3-x)-log[17-6*sqrt(8)](4*x^2+20*x+25)+log[3-sqrt(8)](x^2+x-2)>=0,x);

and got 

Warning, solutions may have been lost

RealRange(-infinity,Open(-5/2)), RealRange(Open(-5/2),Open(-2)), RealRange(Open(1),Open(3))

How can I get the exact the solution?

Good morning sir.

 

I request your kind support to the above cited query.

 

 

With thanks & Regards

 

M.Anand

Assistant Professor in Mathematics

SR International Institute of Technology,

Hyderabad, Andhra Pradesh, INDIA.

Good morning sir.

 

I request your kind support to the above cited question.

 

 

With thanks & Regards

 

M.Anand

Assistant Professor in Mathematics

SR International Institute of Technology,

Hyderabad, Andhra Pradesh, INDIA.

Dear All,

please help me with my problem. i have quite a big program all parts of which are distributed in the several code edit regions and in the main text. i'd like to find all occurenses of gven text in all open documents including code edit regions. i know how to do it manually by openening each code edit regiong and pressing Ctrl-F. however it is very time consuming and defocuses me apart from my main tasks. i'd prefer to use some combinations of 'hot keys' on the keybord or one or two mouse clicks as for example in MS Visual Studio.  

4(x-7) =6

 

(2x+3)(2x2-5x-3)=0

Kepler_Gravitatio.mw

restart; Digits := 64; assume(r > 0); epsilon := 0.167e-1; AE := 149597870700; mu := 1; v_T := 30290; r_0 := .983*AE; M_0 := 0.; GM := 132712440018*10^9; L_0 := sqrt(GM*mu^2*r_0*(1+epsilon)); d := 86400; ode := diff(r(t), t, t)+(-(L_0+M_0*t)^2/(mu^2*r(t)^3)+GM/r(t)^2)*d^2 = 0

diff(diff(r(t), t), t)-148119034496962719477804289013145600000000.0000000000000000000000/r(t)^3+990693056236769280000000000000/r(t)^2 = 0

(1)

sol := dsolve({ode, r(0) = r_0, (D(r))(0) = 0}, r(t), 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 := 64; 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 = sfloat, order = C_order, storage = rectangular), ( 2 ) = (datatype = sfloat, order = C_order, storage = rectangular), ( 3 ) = ([0, 0, 0, Array(1..0, 1..2, {}, order = C_order)]), ( 4 ) = (Array(1..53, {(1) = 2, (2) = 2, (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) = 1, (22) = 1, (23) = 4, (24) = 0, (25) = 2, (26) = 64, (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.1e-5, (3) = 0., (4) = 0.500001e-63, (5) = 0., (6) = 0.6597695327722120288470717489122650270807917992426865066545877176e-8, (7) = 0., (8) = 0.1e-5, (9) = 0., (10) = 0., (11) = 0., (12) = 0., (13) = 1., (14) = 0., (15) = .49999999999999, (16) = 0., (17) = 1., (18) = 1., (19) = 0., (20) = 0., (21) = 1., (22) = 1., (23) = 0., (24) = 0., (25) = 0.1e-14, (26) = 0., (27) = 0., (28) = 0.}, order = C_order)), ( 6 ) = (Array(1..2, {(1) = 147054706898.100, (2) = 0.}, order = C_order)), ( 7 ) = ([Array(1..4, 1..7, {(1, 1) = 0., (1, 2) = 26., (1, 3) = 39., (1, 4) = 96., (1, 5) = 104., (1, 6) = 52., (1, 7) = 104., (2, 1) = 33440., (2, 2) = 0., (2, 3) = 146432., (2, 4) = 142805., (2, 5) = -50787., (2, 6) = 10260., (2, 7) = 282150., (3, 1) = 1045., (3, 2) = 0., (3, 3) = -11264., (3, 4) = -10985., (3, 5) = 7524., (3, 6) = 13680., (3, 7) = 376200., (4, 1) = 1629155., (4, 2) = 0., (4, 3) = 6769664., (4, 4) = 340535., (4, 5) = -101574., (4, 6) = -800280., (4, 7) = 13062500.}, 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., (2, 1) = 1., (2, 2) = 0., (2, 3) = 0., (2, 4) = 0., (2, 5) = 0., (2, 6) = 4., (3, 1) = 3., (3, 2) = 9., (3, 3) = 0., (3, 4) = 0., (3, 5) = 0., (3, 6) = 32., (4, 1) = 1932., (4, 2) = -7200., (4, 3) = 7296., (4, 4) = 0., (4, 5) = 0., (4, 6) = 2197., (5, 1) = 8341., (5, 2) = -32832., (5, 3) = 29440., (5, 4) = -845., (5, 5) = 0., (5, 6) = 4104., (6, 1) = -6080., (6, 2) = 41040., (6, 3) = -28352., (6, 4) = 9295., (6, 5) = -5643., (6, 6) = 20520.}, order = C_order), Array(1..6, {(1) = 0., (2) = .386, (3) = .210, (4) = .630, (5) = 1., (6) = 1.}, order = C_order), Array(1..6, {(1) = .25, (2) = -.1043, (3) = .1035, (4) = -0.362e-1, (5) = 0., (6) = 0.}, 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.544000000000000000000000000000000000000000000000000000000000000, (2, 2) = 0., (2, 3) = 0., (2, 4) = 0., (2, 5) = 0., (3, 1) = .9466785280815532861490926711419656433490789577360894528339016974, (3, 2) = .2557011698982581163688702568119981863592496590030907306661114512, (3, 3) = 0., (3, 4) = 0., (3, 5) = 0., (4, 1) = 3.314825187068488558786396153365059307030768681751721871755670487, (4, 2) = 2.896124015972123152514909728232581075175490361163408082084725849, (4, 3) = .9986419139977807257073047952984867573247485432986762804108143415, (4, 4) = 0., (4, 5) = 0., (5, 1) = 1.221224509226274823647507441203991684270141900788934785460003179, (5, 2) = 6.019134481287752905493183656137098641751723314760608648041583581, (5, 3) = 12.53708332932087457217734498320706156564427350079582065129891877, (5, 4) = -.6878860361058951356548892064135523542261590939207278512789580012, (5, 5) = 0., (6, 1) = 1.221224509226274823647507441203991684270141900788934785460003179, (6, 2) = 6.019134481287752905493183656137098641751723314760608648041583581, (6, 3) = 12.53708332932087457217734498320706156564427350079582065129891877, (6, 4) = -.6878860361058951356548892064135523542261590939207278512789580012, (6, 5) = 1.}, 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.668800000000000000000000000000000000000000000000000000000000000, (2, 2) = 0., (2, 3) = 0., (2, 4) = 0., (2, 5) = 0., (3, 1) = -2.430093356833758185127687948588976454404005541631312071262454980, (3, 2) = -.2063599157089122366435473360234334956951235417816684354325383024, (3, 3) = 0., (3, 4) = 0., (3, 5) = 0., (4, 1) = -.1073529058145262184538714363347072593003701641367435326353413741, (4, 2) = -9.594562251021894319543276722003535660080344141196410019145778438, (4, 3) = -20.47028614809615481077194109199315898088200340959033509022289225, (4, 4) = 0., (4, 5) = 0., (5, 1) = 7.496443313968615025810288671343666721107285253609248916258059945, (5, 2) = -10.24680431464121831828006273262229471844131638878149504437463203, (5, 3) = -33.99990352819906349940544178176705831322109246890624991406278439, (5, 4) = 11.70890893206159543814142227722462662960960061382390320683124096, (5, 5) = 0., (6, 1) = 8.083246795922410929084950629679305621594132916599038753844513444, (6, 2) = -7.981132988062785478298820042190340977772368320604888739105933358, (6, 3) = -31.52159432874372905443421457849868522633084388636090049512840108, (6, 4) = 16.31930543123136189292440273330566432195991444062144703602452206, (6, 5) = -6.058818238834053763270465539455565917330674970761091397715427530}, 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.12623508344691205709134621774984940971246648780715943495568939, (2, 2) = -7.487995877607633133323634619894111057620617838846132481585712194, (2, 3) = -34.80091861555741139791663438824603908149631772071391291518811903, (2, 4) = -7.992771707568727337179005908592456055163586230675373208664590868, (2, 5) = 1.025137723295620644395805647149506134746459271098695362956446239, (3, 1) = -.6762803392806897770286597359671161843340859823664459332682862303, (3, 2) = 6.087714651678606446194334691957369595295881130569613544529189196, (3, 3) = 16.43084320892463064688438342967802054358092944228249438052416001, (3, 4) = 24.76722511418365125296407852510338208253437292171867382245261245, (3, 5) = -6.594389125716781611244460448890686707490924770268209274199463125}, order = C_order)]), ( 9 ) = ([Array(1..2, {(1) = .1000000000000000000000000000000000000000000000000000000000000000, (2) = .1000000000000000000000000000000000000000000000000000000000000000}, order = C_order), Array(1..2, {(1) = 0., (2) = 0.}, order = C_order), Array(1..2, {(1) = 0., (2) = 0.}, order = C_order), Array(1..2, {(1) = 0., (2) = 0.}, order = C_order), Array(1..2, {(1) = 0., (2) = 0.}, order = C_order), Array(1..2, 1..2, {(1, 1) = 0., (1, 2) = 0., (2, 1) = 0., (2, 2) = 0.}, order = C_order), Array(1..2, 1..2, {(1, 1) = 0., (1, 2) = 0., (2, 1) = 0., (2, 2) = 0.}, order = C_order), Array(1..2, 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.}, order = C_order), Array(1..2, {(1) = 0, (2) = 0}, datatype = integer[8]), Array(1..2, {(1) = 147054706898.100, (2) = 0.}, order = C_order), Array(1..2, {(1) = 0., (2) = 0.}, order = C_order), Array(1..2, {(1) = 0., (2) = 0.}, order = C_order), Array(1..2, {(1) = 0., (2) = 0.}, order = C_order)]), ( 8 ) = ([Array(1..2, {(1) = 0., (2) = 0.}, order = C_order), Array(1..2, {(1) = 0., (2) = 0.}, order = C_order), Array(1..2, {(1) = 0., (2) = 765063.93598266830142830178632448711598260465229563475092800565}, order = C_order)]), ( 11 ) = (Array(1..6, 0..2, {(1, 1) = 0., (1, 2) = 0., (2, 0) = 0., (2, 1) = 0., (2, 2) = 0., (3, 0) = 0., (3, 1) = 0., (3, 2) = 0., (4, 0) = 0., (4, 1) = 0., (4, 2) = 0., (5, 0) = 0., (5, 1) = 0., (5, 2) = 0., (6, 0) = 0., (6, 1) = 0., (6, 2) = 0.}, order = C_order)), ( 10 ) = ([proc (N, X, Y, YP) option `[Y[1] = r(t), Y[2] = diff(r(t),t)]`; YP[2] := 148119034496962719477804289013145600000000.0000000000000000000000/Y[1]^3-990693056236769280000000000000/Y[1]^2; YP[1] := Y[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] = r(t), Y[2] = diff(r(t),t)]`; YP[2] := 148119034496962719477804289013145600000000.0000000000000000000000/Y[1]^3-990693056236769280000000000000/Y[1]^2; YP[1] := Y[2]; 0 end proc, -1, 0, 0, 0, 0, 0, 0]), ( 20 ) = ([])  ] ))  ] ); _y0 := Array(0..2, {(1) = 0., (2) = 147054706898.100}); _vmap := array( 1 .. 2, [( 1 ) = (1), ( 2 ) = (2)  ] ); _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 <a href='http://www.maplesoft.com/support/help/search.aspx?term=dsolve,maxfun' target='_new'>?dsolve,maxfun</a> 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 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 <a href='http://www.maplesoft.com/support/help/search.aspx?term=dsolve,maxfun' target='_new'>?dsolve,maxfun</a> 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 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, r(t), diff(r(t), 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)

sol(182)

[t = 182., r(t) = 152049647052.7850981852952995533786837204381025832707997878034578, diff(r(t), t) = 389930.6771708058608633758773386707775821562141034647310382334420]

(3)

rt := proc (t) options operator, arrow; rhs(op(2, sol(t))) end proc

proc (t) options operator, arrow; rhs(op(2, sol(t))) end proc

(4)

plot(rt/AE, 0 .. 400)

 

``

restart; Digits := 64; assume(r > 0); epsilon := 0.167e-1; AE := 149597870700; mu := 1; v_T := 30290; r_0 := .983*AE; GM := 132712440018*10^9; L_0 := sqrt(GM*mu^2*r_0); d := 86400; M_0 := 10*Heaviside(365.25-t); ode := diff(r(t), t, t)+(-(L_0+M_0*t)^2/(mu^2*r(t)^3)+GM/r(t)^2)*d^2 = 0

diff(diff(r(t), t), t)-7464960000*(10*Heaviside(365.25-t)*t+4417690456401248.026238441367771530784192296996671291816290374426)^2/r(t)^3+990693056236769280000000000000/r(t)^2 = 0

(5)

sol := dsolve({ode, r(0) = r_0, (D(r))(0) = 0}, r(t), numeric);

proc (t) options operator, arrow; rhs(op(3, sol(t))) end proc

(6)

plot({rt/AE}, 0 .. 800)

 

plot({(1/86400)*rpt}, 0 .. 800)

 

(D(rpt))(t)

(D(rpt))(t)

(7)



Download Kepler_Gravitatio.mw

 

Now, don't worry about the upper part ending with the first plot, this was just for startup.

I tried to emulate an external moment of force which acts tangential on a particle of unit mass. After one year = 365,25 days I switch of the force which was done via heaviside function.

I'm wondering about the results. Shouldn't the function r(t) be constant for t>365.25 since D(r)(365.25) and the also the second derivative vanishes. Unfortunately this is not represented by the results of the ode for t>365,25

What problems do occur here and how can I omit them?

BTW: how do I derive the numeric function rt or rpt with respect to t

e.g. D(rpt)(10) does not work

The question of how to do matrix operations over a finite field with p^k elements k>1 was raised in this forum in April 27 2010. I wonder if there has been any progress since then for recent versions of Maple.

I am expecially interested in finding the rank of a matrix over a field of order p^k, k > 1.

 

Hello all, 

During my last attempt to solve ODE system (autonomous system which includes 3 first order diff. equations) with initial conditions, Maple had performed the solution which includes d_z1 parameter as follows below (I present the solution of one of the equations):

S(t)=S(0)∫(QN_z1+A)d_z1, where integral ∫ is defined integral from 0 to t, S(0) is the initial value of S, Q, N and A are the parameters. I would like to ask, what does it mean _z1 and d_z1? Why if the ODE system is only time dependent, I received the integral with other differential, that is d_z1? Does it mean that the integral can't be evaluated or maybe something else?

Thanks in advance,

Dmitry

 

 

Hello,

I am trying to find all the roots of this equation and to solve it:

exp(x)*cos(x)+1=0

but doing fsolve(exp(x)*cos(x)+1,x=0..10) it gives me only one solution, while I know that there is more than one solution. How can I do in order to solve this equation and have all the roots in the range 0..10?

I really can't figure it out!

Thank you

 

Giulia

First 1506 1507 1508 1509 1510 1511 1512 Last Page 1508 of 2427