MaplePrimes Questions

So I have the following:

restart;
with(Physics):
Setup(mathematicalnotation=true,coordinatesystems=cartesian);
Define(A[mu](X));

First of all X ist defined in terms of (x,y,z,t). Is is also possible to define it in terms of (t,x,y,z) with t being mu=0.

When I do

alias(X=(t,x,y,z))

this applies only to this one vector and

d_[4] is still the time differentiation, right?

 

Then I wanted to construct the divergence

d_[`~mu`] A[mu](X);
TensorArray(%,performsumoverrepeatedindices=true);

 

This should give me sth like d1 A1 + ... + d4 A4, but it stays with d_mu A_mu ?!?

Why?

Is there also a "function" which does the contraction?

So if I have

f[mu,nu]=d_[mu] A[nu](X)

eval(f[mu,nu],nu=mu)

contract(%)

??

evalf(Int(x*(1-2*x^(3/10))^(10./3),x=0..1));  # Crashes Maple

Note that:

int(x*(1-2*x^(3/10))^(10./3),x=0..1);
int(x*(1-2*x^(3/10))^(10/3),x=0..1);

are OK.

(Windows 7, Maple 2017.3, 64 bit)

lambda:=unapply(5*Pi*sqrt((m^2)/16+(n^2)/4),m,n):'lambda[m,n]'=lambda(m,n);
                     
 u:=(x,y,t)->0.426050*sum(sum((1/(m^3*n^3))*cos(lambda*t)*sin(m*Pi*x/4)*sin(n*Pi*y/2),m=1..infinity),n=1...infinity);
 
lambda value depends on m and n. m and n are odd numbers. We write 2 * m-1 and 2 * n-1 instead of m and n. x = 0: 0.01: 4 and y = 0: 0.01: 2 and t = 0.01.
How can I draw a 3D plot?
Where do we  write 0.01 in increments of amount?   in the Grid command?Or how do we plot for the direct x = 0 ... 4 and y = 0 .... 2 and t = 0.01?
 

Hi everyone,

I'm looking for some way to simplify the following procedure:

 

scm := proc(X, x) global xx;

if 1 <= X and X < 10 then xx := cat(x)

elif 10 <= X and X < 100 then if 1 <= x and x < 10 then xx := cat(0, x) else xx := cat(x) end if

elif 100 <= X and X < 1000 then if 1 <= x and x < 10 then xx := cat(0, 0, x) elif 10 <= x and x < 100 then xx := cat(0, x) else xx := cat(x) end if

elif 1000 <= X and X < 10000 then if 1 <= x and x < 10 then xx := cat(0, 0, 0, x) elif 10 <= x and x < 100 then xx := cat(0, 0, x) elif 100 <= x and x < 1000 then xx := cat(0, x) else xx := cat(x) end if

elif 10000 <= X and X < 100000 then if 1 <= x and x < 10 then xx := cat(0, 0, 0, 0, x) elif 10 <= x and x < 100 then xx := cat(0, 0, 0, x) elif 100 <= x and x < 1000 then xx := cat(0, 0, x) elif 1000 <= x and x < 10000 then xx := cat(0, x) else xx := cat(x) end if

end if

end proc

 

Any tips? Thank you in advance.

Hi 

I want to solve these equations in MAPLE, but something goes wrong. 


 

``

restart

``

NULL

NULL

NULL

phi[j] := sin(j*Pi*x)

sin(j*Pi*x)

(1)

phi[i] := sin(i*Pi*x)

sin(i*Pi*x)

(2)

phi[k] := sin(k*Pi*x)

sin(k*Pi*x)

(3)

phi[l] := sin(l*Pi*x)

sin(l*Pi*x)

(4)

phi[1] := sin(Pi*x)

sin(Pi*x)

(5)

NULL

pp1 := sum((int(phi[i]*phi[j], x = 0 .. 1, numeric))*(diff(p(t), t, t))[j], j = 1 .. 8)-beta^2*(sum((int(phi[i]*(diff(phi[j], x, x)), x = 0 .. 1, numeric))*p(t)[j], j = 1 .. 8)+sum((int(AA0*(diff(phi[1], x, x))*phi[i]*(diff(phi[j], x)), x = 0 .. 1, numeric))*q[j], j = 1 .. 7)+sum((int(AA0*(diff(phi[1], x))*phi[i]*(diff(phi[j], x, x)), x = 0 .. 1, numeric))*q[j], j = 1 .. 7)+sum(sum((int(phi[i]*(diff(phi[j], x))*(diff(phi[k], x, x)), x = 0 .. 1, numeric))*q[j]*q[k], k = 1 .. 7), j = 1 .. 7))+Cd*(sum((int(phi[i]*phi[j], x = 0 .. 1, numeric))*(diff(p(t), t))[j], j = 1 .. 8)):

NULL

NULL

NULL

for z to 8 do limit(pp1, i = z) end do

limit(.1591549431*(sin(3.141592654*i-3.141592654)*i-1.*sin(3.141592654*i+3.141592654)*i+sin(3.141592654*i-3.141592654)+sin(3.141592654*i+3.141592654))*(diff(diff(p(t), t), t))[1]/((i-1.)*(i+1.))+.1591549431*(sin(3.141592654*i-6.283185308)*i-1.*sin(3.141592654*i+6.283185308)*i+2.*sin(3.141592654*i-6.283185308)+2.*sin(3.141592654*i+6.283185308))*(diff(diff(p(t), t), t))[2]/((i-2.)*(i+2.))+.1591549431*(sin(3.141592654*i-9.424777962)*i-1.*sin(3.141592654*i+9.424777962)*i+3.*sin(3.141592654*i-9.424777962)+3.*sin(3.141592654*i+9.424777962))*(diff(diff(p(t), t), t))[3]/((i-3.)*(i+3.))+.1591549431*(sin(3.141592654*i-12.56637062)*i-1.*sin(3.141592654*i+12.56637062)*i+4.*sin(3.141592654*i-12.56637062)+4.*sin(3.141592654*i+12.56637062))*(diff(diff(p(t), t), t))[4]/((i-4.)*(i+4.))+.1591549431*(sin(3.141592654*i-15.70796327)*i-1.*sin(3.141592654*i+15.70796327)*i+5.*sin(3.141592654*i-15.70796327)+5.*sin(3.141592654*i+15.70796327))*(diff(diff(p(t), t), t))[5]/((i-5.)*(i+5.))+.1591549431*(sin(3.141592654*i-18.84955592)*i-1.*sin(3.141592654*i+18.84955592)*i+6.*sin(3.141592654*i-18.84955592)+6.*sin(3.141592654*i+18.84955592))*(diff(diff(p(t), t), t))[6]/((i-6.)*(i+6.))+.1591549431*(sin(3.141592654*i-21.99114858)*i-1.*sin(3.141592654*i+21.99114858)*i+7.*sin(3.141592654*i-21.99114858)+7.*sin(3.141592654*i+21.99114858))*(diff(diff(p(t), t), t))[7]/((i-7.)*(i+7.))+.1591549431*(sin(3.141592654*i-25.13274123)*i-1.*sin(3.141592654*i+25.13274123)*i+8.*sin(3.141592654*i-25.13274123)+8.*sin(3.141592654*i+25.13274123))*(diff(diff(p(t), t), t))[8]/((i-8.)*(i+8.))-beta^2*(-1.570796327*(sin(3.141592654*i-3.141592654)*i-1.*sin(3.141592654*i+3.141592654)*i+sin(3.141592654*i-3.141592654)+sin(3.141592654*i+3.141592654))*p(t)[1]/((i-1.)*(i+1.))-6.283185308*(sin(3.141592654*i-6.283185308)*i-1.*sin(3.141592654*i+6.283185308)*i+2.*sin(3.141592654*i-6.283185308)+2.*sin(3.141592654*i+6.283185308))*p(t)[2]/((i-2.)*(i+2.))-14.13716694*(sin(3.141592654*i-9.424777962)*i-1.*sin(3.141592654*i+9.424777962)*i+3.*sin(3.141592654*i-9.424777962)+3.*sin(3.141592654*i+9.424777962))*p(t)[3]/((i-3.)*(i+3.))-25.13274123*(sin(3.141592654*i-12.56637062)*i-1.*sin(3.141592654*i+12.56637062)*i+4.*sin(3.141592654*i-12.56637062)+4.*sin(3.141592654*i+12.56637062))*p(t)[4]/((i-4.)*(i+4.))-39.26990818*(sin(3.141592654*i-15.70796327)*i-1.*sin(3.141592654*i+15.70796327)*i+5.*sin(3.141592654*i-15.70796327)+5.*sin(3.141592654*i+15.70796327))*p(t)[5]/((i-5.)*(i+5.))-56.54866777*(sin(3.141592654*i-18.84955592)*i-1.*sin(3.141592654*i+18.84955592)*i+6.*sin(3.141592654*i-18.84955592)+6.*sin(3.141592654*i+18.84955592))*p(t)[6]/((i-6.)*(i+6.))-76.96902003*(sin(3.141592654*i-21.99114858)*i-1.*sin(3.141592654*i+21.99114858)*i+7.*sin(3.141592654*i-21.99114858)+7.*sin(3.141592654*i+21.99114858))*p(t)[7]/((i-7.)*(i+7.))-100.5309649*(sin(3.141592654*i-25.13274123)*i-1.*sin(3.141592654*i+25.13274123)*i+8.*sin(3.141592654*i-25.13274123)+8.*sin(3.141592654*i+25.13274123))*p(t)[8]/((i-8.)*(i+8.))-66.61982973*(sin(3.141592654*i-18.84955592)*i^3-1.*sin(3.141592654*i+18.84955592)*i^3+6.*sin(3.141592654*i-18.84955592)*i^2+6.*sin(3.141592654*i+18.84955592)*i^2)*q[3]^2/(i^2*(i+6.)*(i-6.))-157.9136704*(-64.*sin(-0.4000000000e-8+3.141592654*i)*i+64.*sin(0.4000000000e-8+3.141592654*i)*i+sin(-0.4000000000e-8+3.141592654*i)*i^3-1.*sin(25.13274124+3.141592654*i)*i^3+sin(-25.13274124+3.141592654*i)*i^3-1.*sin(0.4000000000e-8+3.141592654*i)*i^3+8.*sin(25.13274124+3.141592654*i)*i^2+8.*sin(-25.13274124+3.141592654*i)*i^2)*q[4]^2/(i^2*(i+8.)*(i-8.))+308.4251376*(-10.*sin(31.41592654+3.141592654*i)*i^2-10.*sin(-31.41592654+3.141592654*i)*i^2+sin(31.41592654+3.141592654*i)*i^3-1.*sin(-31.41592654+3.141592654*i)*i^3)*q[5]^2/(i^2*(10.+i)*(-10.+i))-532.9586378*(144.*sin(-0.4000000000e-8+3.141592654*i)*i-144.*sin(0.4000000000e-8+3.141592654*i)*i-1.*sin(-0.4000000000e-8+3.141592654*i)*i^3+sin(0.4000000000e-8+3.141592654*i)*i^3-1.*sin(37.69911184+3.141592654*i)*i^3+sin(-37.69911184+3.141592654*i)*i^3+12.*sin(37.69911184+3.141592654*i)*i^2+12.*sin(-37.69911184+3.141592654*i)*i^2)*q[6]^2/(i^2*(12.+i)*(-12.+i))-846.3185773*(sin(-43.98229716+3.141592654*i)*i^3-1.*sin(0.2000000000e-8+3.141592654*i)*i^3+14.*sin(43.98229716+3.141592654*i)*i^2+14.*sin(-43.98229716+3.141592654*i)*i^2-196.*sin(-0.2000000000e-8+3.141592654*i)*i+196.*sin(0.2000000000e-8+3.141592654*i)*i+sin(-0.2000000000e-8+3.141592654*i)*i^3-1.*sin(43.98229716+3.141592654*i)*i^3)*q[7]^2/(i^2*(14.+i)*(-14.+i))-19.73920881*(sin(3.141592654*i-12.56637062)*i^3-1.*sin(3.141592654*i+12.56637062)*i^3+4.*sin(3.141592654*i-12.56637062)*i^2+4.*sin(3.141592654*i+12.56637062)*i^2)*q[2]^2/(i^2*(i+4.)*(i-4.))-4.934802202*AA0*(sin(3.141592654*i-6.283185308)*i-1.*sin(3.141592654*i+6.283185308)*i+2.*sin(3.141592654*i-6.283185308)+2.*sin(3.141592654*i+6.283185308))*q[1]/((i-2.)*(i+2.))-2.467401101*(sin(3.141592654*i-6.283185308)*i^3-1.*sin(3.141592654*i+6.283185308)*i^3+2.*sin(3.141592654*i-6.283185308)*i^2+2.*sin(3.141592654*i+6.283185308)*i^2)*q[1]^2/(i^2*(i+2.)*(i-2.))-9.869604403*(sin(3.141592654*i-9.424777962)*i^3-1.*sin(3.141592654*i+3.141592654)*i^3+sin(3.141592654*i-3.141592654)*i^3-1.*sin(3.141592654*i+9.424777962)*i^3+3.*sin(3.141592654*i-9.424777962)*i^2+sin(3.141592654*i+3.141592654)*i^2+sin(3.141592654*i-3.141592654)*i^2+3.*sin(3.141592654*i+9.424777962)*i^2-1.*sin(3.141592654*i-9.424777962)*i+9.*sin(3.141592654*i+3.141592654)*i-9.*sin(3.141592654*i-3.141592654)*i+sin(3.141592654*i+9.424777962)*i-3.*sin(3.141592654*i-9.424777962)-9.*sin(3.141592654*i+3.141592654)-9.*sin(3.141592654*i-3.141592654)-3.*sin(3.141592654*i+9.424777962))*q[1]*q[2]/((i-1.)*(i+3.)*(i-3.)*(i+1.))-22.20660991*(sin(3.141592654*i-12.56637062)*i^3-1.*sin(3.141592654*i+12.56637062)*i^3+sin(3.141592654*i-6.283185308)*i^3-1.*sin(3.141592654*i+6.283185308)*i^3+4.*sin(3.141592654*i-12.56637062)*i^2+4.*sin(3.141592654*i+12.56637062)*i^2+2.*sin(3.141592654*i-6.283185308)*i^2+2.*sin(3.141592654*i+6.283185308)*i^2-4.*sin(3.141592654*i-12.56637062)*i+4.*sin(3.141592654*i+12.56637062)*i-16.*sin(3.141592654*i-6.283185308)*i+16.*sin(3.141592654*i+6.283185308)*i-16.*sin(3.141592654*i-12.56637062)-16.*sin(3.141592654*i+12.56637062)-32.*sin(3.141592654*i-6.283185308)-32.*sin(3.141592654*i+6.283185308))*q[1]*q[3]/((i-2.)*(i+4.)*(i-4.)*(i+2.))-39.47841761*(-25.*sin(-9.424777966+3.141592654*i)*i+9.*sin(3.141592654*i+15.70796327)*i-9.*sin(3.141592654*i-15.70796327)*i+25.*sin(9.424777966+3.141592654*i)*i+sin(-9.424777966+3.141592654*i)*i^3-1.*sin(3.141592654*i+15.70796327)*i^3+sin(3.141592654*i-15.70796327)*i^3-1.*sin(9.424777966+3.141592654*i)*i^3+3.*sin(-9.424777966+3.141592654*i)*i^2+5.*sin(3.141592654*i+15.70796327)*i^2+5.*sin(3.141592654*i-15.70796327)*i^2+3.*sin(9.424777966+3.141592654*i)*i^2-45.*sin(3.141592654*i+15.70796327)-45.*sin(3.141592654*i-15.70796327)-75.*sin(9.424777966+3.141592654*i)-75.*sin(-9.424777966+3.141592654*i))*q[1]*q[4]/((i-3.)*(i+5.)*(i-5.)*(i+3.))+61.68502752*(-1.*sin(3.141592654*i-18.84955592)*i^3+sin(3.141592654*i+18.84955592)*i^3-6.*sin(3.141592654*i-18.84955592)*i^2-6.*sin(3.141592654*i+18.84955592)*i^2+96.*sin(3.141592654*i-18.84955592)+96.*sin(3.141592654*i+18.84955592)+16.*sin(3.141592654*i-18.84955592)*i-16.*sin(3.141592654*i+18.84955592)*i-1.*sin(3.141592654*i-12.56637062)*i^3+sin(3.141592654*i+12.56637062)*i^3-4.*sin(3.141592654*i-12.56637062)*i^2-4.*sin(3.141592654*i+12.56637062)*i^2+144.*sin(3.141592654*i+12.56637062)+144.*sin(3.141592654*i-12.56637062)+36.*sin(3.141592654*i-12.56637062)*i-36.*sin(3.141592654*i+12.56637062)*i)*q[1]*q[5]/((i-4.)*(i+6.)*(i-6.)*(i+4.))-88.82643963*(-49.*sin(3.141592654*i-15.70796327)*i+25.*sin(21.99114857+3.141592654*i)*i-25.*sin(-21.99114857+3.141592654*i)*i+49.*sin(3.141592654*i+15.70796327)*i+sin(3.141592654*i-15.70796327)*i^3-1.*sin(21.99114857+3.141592654*i)*i^3+sin(-21.99114857+3.141592654*i)*i^3-1.*sin(3.141592654*i+15.70796327)*i^3+5.*sin(3.141592654*i-15.70796327)*i^2+7.*sin(21.99114857+3.141592654*i)*i^2+7.*sin(-21.99114857+3.141592654*i)*i^2+5.*sin(3.141592654*i+15.70796327)*i^2-245.*sin(3.141592654*i-15.70796327)-175.*sin(21.99114857+3.141592654*i)-175.*sin(-21.99114857+3.141592654*i)-245.*sin(3.141592654*i+15.70796327))*q[1]*q[6]/((i-5.)*(i+7.)*(i-7.)*(i+5.))-120.9026539*(sin(3.141592654*i-25.13274123)*i^3-1.*sin(18.84955593+3.141592654*i)*i^3+6.*sin(-18.84955593+3.141592654*i)*i^2+8.*sin(3.141592654*i+25.13274123)*i^2+8.*sin(3.141592654*i-25.13274123)*i^2+6.*sin(18.84955593+3.141592654*i)*i^2-64.*sin(-18.84955593+3.141592654*i)*i+36.*sin(3.141592654*i+25.13274123)*i-36.*sin(3.141592654*i-25.13274123)*i+64.*sin(18.84955593+3.141592654*i)*i+sin(-18.84955593+3.141592654*i)*i^3-1.*sin(3.141592654*i+25.13274123)*i^3-384.*sin(18.84955593+3.141592654*i)-384.*sin(-18.84955593+3.141592654*i)-288.*sin(3.141592654*i+25.13274123)-288.*sin(3.141592654*i-25.13274123))*q[1]*q[7]/((i-6.)*(i+8.)*(i-8.)*(i+6.))-69.08723082*(-1.*sin(3.141592654*i-15.70796327)*i^3+sin(3.141592654*i+15.70796327)*i^3-5.*sin(3.141592654*i-15.70796327)*i^2-5.*sin(3.141592654*i+15.70796327)*i^2+405.*sin(3.141592654*i+15.70796327)+405.*sin(3.141592654*i-15.70796327)+81.*sin(3.141592654*i-15.70796327)*i-81.*sin(3.141592654*i+15.70796327)*i+9.*sin(28.27433389+3.141592654*i)*i^2+9.*sin(-28.27433389+3.141592654*i)*i^2+25.*sin(28.27433389+3.141592654*i)*i-25.*sin(-28.27433389+3.141592654*i)*i-1.*sin(28.27433389+3.141592654*i)*i^3+sin(-28.27433389+3.141592654*i)*i^3-225.*sin(-28.27433389+3.141592654*i)-225.*sin(28.27433389+3.141592654*i))*q[7]*q[2]/((i+5.)*(9.+i)*(-9.+i)*(i-5.))-155.4462694*(-1.*sin(3.141592654*i-12.56637062)*i^3+sin(3.141592654*i+12.56637062)*i^3-4.*sin(3.141592654*i-12.56637062)*i^2-4.*sin(3.141592654*i+12.56637062)*i^2+400.*sin(3.141592654*i+12.56637062)+400.*sin(3.141592654*i-12.56637062)+100.*sin(3.141592654*i-12.56637062)*i-100.*sin(3.141592654*i+12.56637062)*i+10.*sin(31.41592654+3.141592654*i)*i^2+10.*sin(-31.41592654+3.141592654*i)*i^2+16.*sin(31.41592654+3.141592654*i)*i-16.*sin(-31.41592654+3.141592654*i)*i-1.*sin(31.41592654+3.141592654*i)*i^3+sin(-31.41592654+3.141592654*i)*i^3-160.*sin(31.41592654+3.141592654*i)-160.*sin(-31.41592654+3.141592654*i))*q[7]*q[3]/((i+4.)*(10.+i)*(-10.+i)*(i-4.))-276.3489233*(121.*sin(-9.424777958+3.141592654*i)*i-121.*sin(9.424777958+3.141592654*i)*i-1.*sin(-9.424777958+3.141592654*i)*i^3+sin(9.424777958+3.141592654*i)*i^3-3.*sin(-9.424777958+3.141592654*i)*i^2-3.*sin(9.424777958+3.141592654*i)*i^2+9.*sin(34.55751920+3.141592654*i)*i-9.*sin(-34.55751920+3.141592654*i)*i-1.*sin(34.55751920+3.141592654*i)*i^3+sin(-34.55751920+3.141592654*i)*i^3+11.*sin(34.55751920+3.141592654*i)*i^2+11.*sin(-34.55751920+3.141592654*i)*i^2-99.*sin(34.55751920+3.141592654*i)-99.*sin(-34.55751920+3.141592654*i)+363.*sin(-9.424777958+3.141592654*i)+363.*sin(9.424777958+3.141592654*i))*q[7]*q[4]/((i+3.)*(11.+i)*(-11.+i)*(i-3.))+431.7951926*(sin(3.141592654*i-6.283185308)*i^3-1.*sin(3.141592654*i+6.283185308)*i^3+2.*sin(3.141592654*i-6.283185308)*i^2+2.*sin(3.141592654*i+6.283185308)*i^2-288.*sin(3.141592654*i+6.283185308)-288.*sin(3.141592654*i-6.283185308)+144.*sin(3.141592654*i+6.283185308)*i-144.*sin(3.141592654*i-6.283185308)*i-12.*sin(37.69911185+3.141592654*i)*i^2-12.*sin(-37.69911185+3.141592654*i)*i^2-4.*sin(37.69911185+3.141592654*i)*i+4.*sin(-37.69911185+3.141592654*i)*i+sin(37.69911185+3.141592654*i)*i^3-1.*sin(-37.69911185+3.141592654*i)*i^3+48.*sin(-37.69911185+3.141592654*i)+48.*sin(37.69911185+3.141592654*i))*q[7]*q[5]/((i+2.)*(12.+i)*(-12.+i)*(i-2.))-4.934802201*AA0*(sin(3.141592654*i-9.424777962)*i^3+sin(3.141592654*i+3.141592654)*i^3-1.*sin(3.141592654*i-3.141592654)*i^3-1.*sin(3.141592654*i+9.424777962)*i^3+3.*sin(3.141592654*i-9.424777962)*i^2-1.*sin(3.141592654*i+3.141592654)*i^2-1.*sin(3.141592654*i-3.141592654)*i^2+3.*sin(3.141592654*i+9.424777962)*i^2-1.*sin(3.141592654*i-9.424777962)*i-9.*sin(3.141592654*i+3.141592654)*i+9.*sin(3.141592654*i-3.141592654)*i+sin(3.141592654*i+9.424777962)*i-3.*sin(3.141592654*i-9.424777962)+9.*sin(3.141592654*i+3.141592654)+9.*sin(3.141592654*i-3.141592654)-3.*sin(3.141592654*i+9.424777962))*q[2]/((i-3.)*(i+1.)*(i-1.)*(i+3.))-7.402203302*AA0*(-1.*sin(3.141592654*i-6.283185308)*i^3+sin(3.141592654*i+6.283185308)*i^3+sin(3.141592654*i-12.56637062)*i^3-1.*sin(3.141592654*i+12.56637062)*i^3-2.*sin(3.141592654*i-6.283185308)*i^2-2.*sin(3.141592654*i+6.283185308)*i^2+4.*sin(3.141592654*i-12.56637062)*i^2+4.*sin(3.141592654*i+12.56637062)*i^2+16.*sin(3.141592654*i-6.283185308)*i-16.*sin(3.141592654*i+6.283185308)*i-4.*sin(3.141592654*i-12.56637062)*i+4.*sin(3.141592654*i+12.56637062)*i+32.*sin(3.141592654*i-6.283185308)+32.*sin(3.141592654*i+6.283185308)-16.*sin(3.141592654*i-12.56637062)-16.*sin(3.141592654*i+12.56637062))*q[3]/((i-4.)*(i+2.)*(i-2.)*(i+4.))+9.869604403*AA0*(sin(3.141592654*i-9.424777962)*i^3-1.*sin(3.141592654*i+9.424777962)*i^3-1.*sin(3.141592654*i-15.70796327)*i^3+sin(3.141592654*i+15.70796327)*i^3+3.*sin(3.141592654*i-9.424777962)*i^2+3.*sin(3.141592654*i+9.424777962)*i^2-5.*sin(3.141592654*i-15.70796327)*i^2-5.*sin(3.141592654*i+15.70796327)*i^2-25.*sin(3.141592654*i-9.424777962)*i+25.*sin(3.141592654*i+9.424777962)*i+9.*sin(3.141592654*i-15.70796327)*i-9.*sin(3.141592654*i+15.70796327)*i-75.*sin(3.141592654*i-9.424777962)-75.*sin(3.141592654*i+9.424777962)+45.*sin(3.141592654*i-15.70796327)+45.*sin(3.141592654*i+15.70796327))*q[4]/((i-5.)*(i+3.)*(i-3.)*(i+5.))-12.33700550*AA0*(sin(3.141592654*i-18.84955592)*i^3-1.*sin(3.141592654*i+18.84955592)*i^3-1.*sin(3.141592654*i-12.56637062)*i^3+sin(3.141592654*i+12.56637062)*i^3+6.*sin(3.141592654*i-18.84955592)*i^2+6.*sin(3.141592654*i+18.84955592)*i^2-4.*sin(3.141592654*i-12.56637062)*i^2-4.*sin(3.141592654*i+12.56637062)*i^2-16.*sin(3.141592654*i-18.84955592)*i+16.*sin(3.141592654*i+18.84955592)*i+36.*sin(3.141592654*i-12.56637062)*i-36.*sin(3.141592654*i+12.56637062)*i-96.*sin(3.141592654*i-18.84955592)-96.*sin(3.141592654*i+18.84955592)+144.*sin(3.141592654*i-12.56637062)+144.*sin(3.141592654*i+12.56637062))*q[5]/((i-6.)*(i+4.)*(i-4.)*(i+6.))-14.80440660*AA0*(sin(3.141592654*i-21.99114858)*i^3-1.*sin(3.141592654*i+21.99114858)*i^3-1.*sin(3.141592654*i-15.70796327)*i^3+sin(3.141592654*i+15.70796327)*i^3+7.*sin(3.141592654*i-21.99114858)*i^2+7.*sin(3.141592654*i+21.99114858)*i^2-5.*sin(3.141592654*i-15.70796327)*i^2-5.*sin(3.141592654*i+15.70796327)*i^2-25.*sin(3.141592654*i-21.99114858)*i+25.*sin(3.141592654*i+21.99114858)*i+49.*sin(3.141592654*i-15.70796327)*i-49.*sin(3.141592654*i+15.70796327)*i-175.*sin(3.141592654*i-21.99114858)-175.*sin(3.141592654*i+21.99114858)+245.*sin(3.141592654*i-15.70796327)+245.*sin(3.141592654*i+15.70796327))*q[6]/((i-7.)*(i+5.)*(i-5.)*(i+7.))+17.27180770*AA0*(sin(3.141592654*i-18.84955592)*i^3-1.*sin(3.141592654*i+18.84955592)*i^3-1.*sin(3.141592654*i-25.13274123)*i^3+sin(3.141592654*i+25.13274123)*i^3+6.*sin(3.141592654*i-18.84955592)*i^2+6.*sin(3.141592654*i+18.84955592)*i^2-8.*sin(3.141592654*i-25.13274123)*i^2-8.*sin(3.141592654*i+25.13274123)*i^2-64.*sin(3.141592654*i-18.84955592)*i+64.*sin(3.141592654*i+18.84955592)*i+36.*sin(3.141592654*i-25.13274123)*i-36.*sin(3.141592654*i+25.13274123)*i-384.*sin(3.141592654*i-18.84955592)-384.*sin(3.141592654*i+18.84955592)+288.*sin(3.141592654*i-25.13274123)+288.*sin(3.141592654*i+25.13274123))*q[7]/((i-8.)*(i+6.)*(i-6.)*(i+8.))-621.7850774*(169.*sin(-3.141592658+3.141592654*i)*i-169.*sin(3.141592658+3.141592654*i)*i-1.*sin(-3.141592658+3.141592654*i)*i^3+sin(3.141592658+3.141592654*i)*i^3-1.*sin(-3.141592658+3.141592654*i)*i^2-1.*sin(3.141592658+3.141592654*i)*i^2+sin(40.84070450+3.141592654*i)*i-1.*sin(-40.84070450+3.141592654*i)*i-1.*sin(40.84070450+3.141592654*i)*i^3+sin(-40.84070450+3.141592654*i)*i^3+13.*sin(40.84070450+3.141592654*i)*i^2+13.*sin(-40.84070450+3.141592654*i)*i^2-13.*sin(-40.84070450+3.141592654*i)-13.*sin(40.84070450+3.141592654*i)+169.*sin(3.141592658+3.141592654*i)+169.*sin(-3.141592658+3.141592654*i))*q[7]*q[6]/((i+1.)*(13.+i)*(-13.+i)*(i-1.))-133.2396595*(-1.*sin(3.141592654*i-9.424777962)*i^3+sin(3.141592654*i+9.424777962)*i^3-3.*sin(3.141592654*i-9.424777962)*i^2-3.*sin(3.141592654*i+9.424777962)*i^2+9.*sin(28.27433389+3.141592654*i)*i^2+9.*sin(-28.27433389+3.141592654*i)*i^2+9.*sin(28.27433389+3.141592654*i)*i-9.*sin(-28.27433389+3.141592654*i)*i-1.*sin(28.27433389+3.141592654*i)*i^3+sin(-28.27433389+3.141592654*i)*i^3+243.*sin(3.141592654*i+9.424777962)+243.*sin(3.141592654*i-9.424777962)+81.*sin(3.141592654*i-9.424777962)*i-81.*sin(3.141592654*i+9.424777962)*i-81.*sin(-28.27433389+3.141592654*i)-81.*sin(28.27433389+3.141592654*i))*q[6]*q[3]/((i+3.)*(9.+i)*(-9.+i)*(i-3.))-236.8705057*(100.*sin(-6.283185304+3.141592654*i)*i-100.*sin(6.283185304+3.141592654*i)*i-1.*sin(-6.283185304+3.141592654*i)*i^3+sin(6.283185304+3.141592654*i)*i^3-2.*sin(-6.283185304+3.141592654*i)*i^2-2.*sin(6.283185304+3.141592654*i)*i^2+4.*sin(31.41592654+3.141592654*i)*i-4.*sin(-31.41592654+3.141592654*i)*i-1.*sin(31.41592654+3.141592654*i)*i^3+sin(-31.41592654+3.141592654*i)*i^3+10.*sin(31.41592654+3.141592654*i)*i^2+10.*sin(-31.41592654+3.141592654*i)*i^2-40.*sin(31.41592654+3.141592654*i)-40.*sin(-31.41592654+3.141592654*i)+200.*sin(6.283185304+3.141592654*i)+200.*sin(-6.283185304+3.141592654*i))*q[6]*q[4]/((i+2.)*(10.+i)*(-10.+i)*(i-2.))+370.1101651*(-1.*sin(3.141592654*i+3.141592654)*i^3+sin(3.141592654*i-3.141592654)*i^3+sin(3.141592654*i+3.141592654)*i^2+sin(3.141592654*i-3.141592654)*i^2-121.*sin(3.141592654*i+3.141592654)+121.*sin(3.141592654*i+3.141592654)*i-121.*sin(3.141592654*i-3.141592654)*i-121.*sin(3.141592654*i-3.141592654)-11.*sin(34.55751919+3.141592654*i)*i^2-11.*sin(-34.55751919+3.141592654*i)*i^2-1.*sin(34.55751919+3.141592654*i)*i+sin(-34.55751919+3.141592654*i)*i+sin(34.55751919+3.141592654*i)*i^3-1.*sin(-34.55751919+3.141592654*i)*i^3+11.*sin(34.55751919+3.141592654*i)+11.*sin(-34.55751919+3.141592654*i))*q[6]*q[5]/((i+1.)*(11.+i)*(-11.+i)*(i-1.))-725.4159234*(sin(-40.84070450+3.141592654*i)*i^3-1.*sin(3.141592656+3.141592654*i)*i^3+sin(-3.141592656+3.141592654*i)*i^2+13.*sin(40.84070450+3.141592654*i)*i^2+13.*sin(-40.84070450+3.141592654*i)*i^2+sin(3.141592656+3.141592654*i)*i^2-169.*sin(-3.141592656+3.141592654*i)*i+sin(40.84070450+3.141592654*i)*i-1.*sin(-40.84070450+3.141592654*i)*i+169.*sin(3.141592656+3.141592654*i)*i+sin(-3.141592656+3.141592654*i)*i^3-1.*sin(40.84070450+3.141592654*i)*i^3-169.*sin(3.141592656+3.141592654*i)-169.*sin(-3.141592656+3.141592654*i)-13.*sin(40.84070450+3.141592654*i)-13.*sin(-40.84070450+3.141592654*i))*q[6]*q[7]/((i-1.)*(13.+i)*(-13.+i)*(i+1.))-17.27180771*(-1.*sin(3.141592654*i-18.84955592)*i^3+sin(3.141592654*i+18.84955592)*i^3-6.*sin(3.141592654*i-18.84955592)*i^2-6.*sin(3.141592654*i+18.84955592)*i^2-288.*sin(3.141592654*i-25.13274123)-288.*sin(3.141592654*i+25.13274123)-36.*sin(3.141592654*i-25.13274123)*i+36.*sin(3.141592654*i+25.13274123)*i+384.*sin(3.141592654*i-18.84955592)+384.*sin(3.141592654*i+18.84955592)+64.*sin(3.141592654*i-18.84955592)*i-64.*sin(3.141592654*i+18.84955592)*i+sin(3.141592654*i-25.13274123)*i^3-1.*sin(3.141592654*i+25.13274123)*i^3+8.*sin(3.141592654*i-25.13274123)*i^2+8.*sin(3.141592654*i+25.13274123)*i^2)*q[7]*q[1]/((i+6.)*(i+8.)*(i-8.)*(i-6.))-12.33700550*(sin(3.141592654*i-18.84955592)*i^3-1.*sin(3.141592654*i+18.84955592)*i^3-1.*sin(3.141592654*i-12.56637062)*i^3+sin(3.141592654*i+12.56637062)*i^3+6.*sin(3.141592654*i-18.84955592)*i^2+6.*sin(3.141592654*i+18.84955592)*i^2-4.*sin(3.141592654*i-12.56637062)*i^2-4.*sin(3.141592654*i+12.56637062)*i^2-16.*sin(3.141592654*i-18.84955592)*i+16.*sin(3.141592654*i+18.84955592)*i+36.*sin(3.141592654*i-12.56637062)*i-36.*sin(3.141592654*i+12.56637062)*i-96.*sin(3.141592654*i-18.84955592)-96.*sin(3.141592654*i+18.84955592)+144.*sin(3.141592654*i-12.56637062)+144.*sin(3.141592654*i+12.56637062))*q[5]*q[1]/((i+4.)*(i+6.)*(i-6.)*(i-4.))-49.34802202*(sin(3.141592654*i-21.99114858)*i^3-1.*sin(3.141592654*i+21.99114858)*i^3+7.*sin(3.141592654*i-21.99114858)*i^2+7.*sin(3.141592654*i+21.99114858)*i^2-63.*sin(3.141592654*i-21.99114858)-63.*sin(3.141592654*i+21.99114858)-9.*sin(3.141592654*i-21.99114858)*i+9.*sin(3.141592654*i+21.99114858)*i-1.*sin(3.141592654*i-9.424777962)*i^3+sin(3.141592654*i+9.424777962)*i^3-3.*sin(3.141592654*i-9.424777962)*i^2-3.*sin(3.141592654*i+9.424777962)*i^2+147.*sin(3.141592654*i+9.424777962)+147.*sin(3.141592654*i-9.424777962)+49.*sin(3.141592654*i-9.424777962)*i-49.*sin(3.141592654*i+9.424777962)*i)*q[5]*q[2]/((i+3.)*(i+7.)*(i-7.)*(i-3.))-111.0330496*(-32.*sin(3.141592654*i-25.13274123)-32.*sin(3.141592654*i+25.13274123)-4.*sin(3.141592654*i-25.13274123)*i+4.*sin(3.141592654*i+25.13274123)*i-1.*sin(3.141592654*i-6.283185308)*i^3+sin(3.141592654*i+6.283185308)*i^3-2.*sin(3.141592654*i-6.283185308)*i^2-2.*sin(3.141592654*i+6.283185308)*i^2+128.*sin(3.141592654*i+6.283185308)+128.*sin(3.141592654*i-6.283185308)-64.*sin(3.141592654*i+6.283185308)*i+64.*sin(3.141592654*i-6.283185308)*i+sin(3.141592654*i-25.13274123)*i^3-1.*sin(3.141592654*i+25.13274123)*i^3+8.*sin(3.141592654*i-25.13274123)*i^2+8.*sin(3.141592654*i+25.13274123)*i^2)*q[5]*q[3]/((i+2.)*(i+8.)*(i-8.)*(i-2.))-197.3920880*(-81.*sin(3.141592650+3.141592654*i)*i+sin(28.27433389+3.141592654*i)*i-1.*sin(-28.27433389+3.141592654*i)*i+81.*sin(-3.141592650+3.141592654*i)*i+sin(3.141592650+3.141592654*i)*i^3-1.*sin(28.27433389+3.141592654*i)*i^3+sin(-28.27433389+3.141592654*i)*i^3-1.*sin(-3.141592650+3.141592654*i)*i^3-1.*sin(3.141592650+3.141592654*i)*i^2+9.*sin(28.27433389+3.141592654*i)*i^2+9.*sin(-28.27433389+3.141592654*i)*i^2-1.*sin(-3.141592650+3.141592654*i)*i^2+81.*sin(-3.141592650+3.141592654*i)+81.*sin(3.141592650+3.141592654*i)-9.*sin(28.27433389+3.141592654*i)-9.*sin(-28.27433389+3.141592654*i))*q[5]*q[4]/((i+1.)*(9.+i)*(-9.+i)*(i-1.))-444.1321982*(121.*sin(3.141592650+3.141592654*i)*i-121.*sin(-3.141592650+3.141592654*i)*i-1.*sin(3.141592650+3.141592654*i)*i^3+sin(-3.141592650+3.141592654*i)*i^3+sin(3.141592650+3.141592654*i)*i^2+sin(-3.141592650+3.141592654*i)*i^2+sin(34.55751919+3.141592654*i)*i-1.*sin(-34.55751919+3.141592654*i)*i-1.*sin(34.55751919+3.141592654*i)*i^3+sin(-34.55751919+3.141592654*i)*i^3+11.*sin(34.55751919+3.141592654*i)*i^2+11.*sin(-34.55751919+3.141592654*i)*i^2-11.*sin(34.55751919+3.141592654*i)-11.*sin(-34.55751919+3.141592654*i)-121.*sin(-3.141592650+3.141592654*i)-121.*sin(3.141592650+3.141592654*i))*q[5]*q[6]/((i-1.)*(11.+i)*(-11.+i)*(i+1.))-39.47841761*AA0*(sin(3.141592654*i-9.424777962)*i^3-1.*sin(3.141592654*i+9.424777962)*i^3+sin(3.141592654*i-15.70796327)*i^3-1.*sin(3.141592654*i+15.70796327)*i^3+3.*sin(3.141592654*i-9.424777962)*i^2+3.*sin(3.141592654*i+9.424777962)*i^2+5.*sin(3.141592654*i-15.70796327)*i^2+5.*sin(3.141592654*i+15.70796327)*i^2-25.*sin(3.141592654*i-9.424777962)*i+25.*sin(3.141592654*i+9.424777962)*i-9.*sin(3.141592654*i-15.70796327)*i+9.*sin(3.141592654*i+15.70796327)*i-75.*sin(3.141592654*i-9.424777962)-75.*sin(3.141592654*i+9.424777962)-45.*sin(3.141592654*i-15.70796327)-45.*sin(3.141592654*i+15.70796327))*q[4]/((i-5.)*(i+3.)*(i-3.)*(i+5.))-61.68502752*AA0*(sin(3.141592654*i-18.84955592)*i^3-1.*sin(3.141592654*i+18.84955592)*i^3+sin(3.141592654*i-12.56637062)*i^3-1.*sin(3.141592654*i+12.56637062)*i^3+6.*sin(3.141592654*i-18.84955592)*i^2+6.*sin(3.141592654*i+18.84955592)*i^2+4.*sin(3.141592654*i-12.56637062)*i^2+4.*sin(3.141592654*i+12.56637062)*i^2-16.*sin(3.141592654*i-18.84955592)*i+16.*sin(3.141592654*i+18.84955592)*i-36.*sin(3.141592654*i-12.56637062)*i+36.*sin(3.141592654*i+12.56637062)*i-96.*sin(3.141592654*i-18.84955592)-96.*sin(3.141592654*i+18.84955592)-144.*sin(3.141592654*i-12.56637062)-144.*sin(3.141592654*i+12.56637062))*q[5]/((i-6.)*(i+4.)*(i-4.)*(i+6.))-88.82643963*AA0*(sin(3.141592654*i-21.99114858)*i^3-1.*sin(3.141592654*i+21.99114858)*i^3+sin(3.141592654*i-15.70796327)*i^3-1.*sin(3.141592654*i+15.70796327)*i^3+7.*sin(3.141592654*i-21.99114858)*i^2+7.*sin(3.141592654*i+21.99114858)*i^2+5.*sin(3.141592654*i-15.70796327)*i^2+5.*sin(3.141592654*i+15.70796327)*i^2-25.*sin(3.141592654*i-21.99114858)*i+25.*sin(3.141592654*i+21.99114858)*i-49.*sin(3.141592654*i-15.70796327)*i+49.*sin(3.141592654*i+15.70796327)*i-175.*sin(3.141592654*i-21.99114858)-175.*sin(3.141592654*i+21.99114858)-245.*sin(3.141592654*i-15.70796327)-245.*sin(3.141592654*i+15.70796327))*q[6]/((i-7.)*(i+5.)*(i-5.)*(i+7.))-120.9026539*AA0*(sin(3.141592654*i-18.84955592)*i^3-1.*sin(3.141592654*i+18.84955592)*i^3+sin(3.141592654*i-25.13274123)*i^3-1.*sin(3.141592654*i+25.13274123)*i^3+6.*sin(3.141592654*i-18.84955592)*i^2+6.*sin(3.141592654*i+18.84955592)*i^2+8.*sin(3.141592654*i-25.13274123)*i^2+8.*sin(3.141592654*i+25.13274123)*i^2-64.*sin(3.141592654*i-18.84955592)*i+64.*sin(3.141592654*i+18.84955592)*i-36.*sin(3.141592654*i-25.13274123)*i+36.*sin(3.141592654*i+25.13274123)*i-384.*sin(3.141592654*i-18.84955592)-384.*sin(3.141592654*i+18.84955592)-288.*sin(3.141592654*i-25.13274123)-288.*sin(3.141592654*i+25.13274123))*q[7]/((i-8.)*(i+6.)*(i-6.)*(i+8.))-9.869604403*AA0*(sin(3.141592654*i-9.424777962)*i^3-1.*sin(3.141592654*i+3.141592654)*i^3+sin(3.141592654*i-3.141592654)*i^3-1.*sin(3.141592654*i+9.424777962)*i^3+3.*sin(3.141592654*i-9.424777962)*i^2+sin(3.141592654*i+3.141592654)*i^2+sin(3.141592654*i-3.141592654)*i^2+3.*sin(3.141592654*i+9.424777962)*i^2-1.*sin(3.141592654*i-9.424777962)*i+9.*sin(3.141592654*i+3.141592654)*i-9.*sin(3.141592654*i-3.141592654)*i+sin(3.141592654*i+9.424777962)*i-3.*sin(3.141592654*i-9.424777962)-9.*sin(3.141592654*i+3.141592654)-9.*sin(3.141592654*i-3.141592654)-3.*sin(3.141592654*i+9.424777962))*q[2]/((i-3.)*(i+1.)*(i-1.)*(i+3.))-22.20660991*AA0*(sin(3.141592654*i-12.56637062)*i^3-1.*sin(3.141592654*i+12.56637062)*i^3+sin(3.141592654*i-6.283185308)*i^3-1.*sin(3.141592654*i+6.283185308)*i^3+4.*sin(3.141592654*i-12.56637062)*i^2+4.*sin(3.141592654*i+12.56637062)*i^2+2.*sin(3.141592654*i-6.283185308)*i^2+2.*sin(3.141592654*i+6.283185308)*i^2-4.*sin(3.141592654*i-12.56637062)*i+4.*sin(3.141592654*i+12.56637062)*i-16.*sin(3.141592654*i-6.283185308)*i+16.*sin(3.141592654*i+6.283185308)*i-16.*sin(3.141592654*i-12.56637062)-16.*sin(3.141592654*i+12.56637062)-32.*sin(3.141592654*i-6.283185308)-32.*sin(3.141592654*i+6.283185308))*q[3]/((i-4.)*(i+2.)*(i-2.)*(i+4.))-604.5132695*(sin(-37.69911185+3.141592654*i)*i^3-1.*sin(6.283185310+3.141592654*i)*i^3+2.*sin(-6.283185310+3.141592654*i)*i^2+12.*sin(37.69911185+3.141592654*i)*i^2+12.*sin(-37.69911185+3.141592654*i)*i^2+2.*sin(6.283185310+3.141592654*i)*i^2-144.*sin(-6.283185310+3.141592654*i)*i+4.*sin(37.69911185+3.141592654*i)*i-4.*sin(-37.69911185+3.141592654*i)*i+144.*sin(6.283185310+3.141592654*i)*i+sin(-6.283185310+3.141592654*i)*i^3-1.*sin(37.69911185+3.141592654*i)*i^3-288.*sin(6.283185310+3.141592654*i)-288.*sin(-6.283185310+3.141592654*i)-48.*sin(37.69911185+3.141592654*i)-48.*sin(-37.69911185+3.141592654*i))*q[5]*q[7]/((i-2.)*(12.+i)*(-12.+i)*(i+2.))-14.80440661*(sin(3.141592654*i-21.99114858)*i^3-1.*sin(3.141592654*i+21.99114858)*i^3-1.*sin(3.141592654*i-15.70796327)*i^3+sin(3.141592654*i+15.70796327)*i^3+7.*sin(3.141592654*i-21.99114858)*i^2+7.*sin(3.141592654*i+21.99114858)*i^2-5.*sin(3.141592654*i-15.70796327)*i^2-5.*sin(3.141592654*i+15.70796327)*i^2-25.*sin(3.141592654*i-21.99114858)*i+25.*sin(3.141592654*i+21.99114858)*i+49.*sin(3.141592654*i-15.70796327)*i-49.*sin(3.141592654*i+15.70796327)*i-175.*sin(3.141592654*i-21.99114858)-175.*sin(3.141592654*i+21.99114858)+245.*sin(3.141592654*i-15.70796327)+245.*sin(3.141592654*i+15.70796327))*q[6]*q[1]/((i+5.)*(i+7.)*(i-7.)*(i-5.))-59.21762642*(-128.*sin(3.141592654*i-25.13274123)-128.*sin(3.141592654*i+25.13274123)-16.*sin(3.141592654*i-25.13274123)*i+16.*sin(3.141592654*i+25.13274123)*i-1.*sin(3.141592654*i-12.56637062)*i^3+sin(3.141592654*i+12.56637062)*i^3-4.*sin(3.141592654*i-12.56637062)*i^2-4.*sin(3.141592654*i+12.56637062)*i^2+256.*sin(3.141592654*i+12.56637062)+256.*sin(3.141592654*i-12.56637062)+64.*sin(3.141592654*i-12.56637062)*i-64.*sin(3.141592654*i+12.56637062)*i+sin(3.141592654*i-25.13274123)*i^3-1.*sin(3.141592654*i+25.13274123)*i^3+8.*sin(3.141592654*i-25.13274123)*i^2+8.*sin(3.141592654*i+25.13274123)*i^2)*q[6]*q[2]/((i+4.)*(i+8.)*(i-8.)*(i-4.))-4.934802202*(sin(3.141592654*i-9.424777962)*i^3+sin(3.141592654*i+3.141592654)*i^3-1.*sin(3.141592654*i-3.141592654)*i^3-1.*sin(3.141592654*i+9.424777962)*i^3+3.*sin(3.141592654*i-9.424777962)*i^2-1.*sin(3.141592654*i+3.141592654)*i^2-1.*sin(3.141592654*i-3.141592654)*i^2+3.*sin(3.141592654*i+9.424777962)*i^2-1.*sin(3.141592654*i-9.424777962)*i-9.*sin(3.141592654*i+3.141592654)*i+9.*sin(3.141592654*i-3.141592654)*i+sin(3.141592654*i+9.424777962)*i-3.*sin(3.141592654*i-9.424777962)+9.*sin(3.141592654*i+3.141592654)+9.*sin(3.141592654*i-3.141592654)-3.*sin(3.141592654*i+9.424777962))*q[2]*q[1]/((i+1.)*(i+3.)*(i-3.)*(i-1.))-44.41321982*(sin(3.141592654*i-15.70796327)*i^3-1.*sin(3.141592654*i+15.70796327)*i^3+5.*sin(3.141592654*i-15.70796327)*i^2+5.*sin(3.141592654*i+15.70796327)*i^2-5.*sin(3.141592654*i+15.70796327)-5.*sin(3.141592654*i-15.70796327)-1.*sin(3.141592654*i-15.70796327)*i+sin(3.141592654*i+15.70796327)*i-1.*sin(3.141592654*i+3.141592654)*i^3+sin(3.141592654*i-3.141592654)*i^3+sin(3.141592654*i+3.141592654)*i^2+sin(3.141592654*i-3.141592654)*i^2-25.*sin(3.141592654*i+3.141592654)+25.*sin(3.141592654*i+3.141592654)*i-25.*sin(3.141592654*i-3.141592654)*i-25.*sin(3.141592654*i-3.141592654))*q[2]*q[3]/((i-1.)*(i+5.)*(i-5.)*(i+1.))-78.95683522*(-36.*sin(-6.283185312+3.141592654*i)*i+4.*sin(18.84955593+3.141592654*i)*i-4.*sin(-18.84955593+3.141592654*i)*i+36.*sin(6.283185312+3.141592654*i)*i+sin(-6.283185312+3.141592654*i)*i^3-1.*sin(18.84955593+3.141592654*i)*i^3+sin(-18.84955593+3.141592654*i)*i^3-1.*sin(6.283185312+3.141592654*i)*i^3+2.*sin(-6.283185312+3.141592654*i)*i^2+6.*sin(18.84955593+3.141592654*i)*i^2+6.*sin(-18.84955593+3.141592654*i)*i^2+2.*sin(6.283185312+3.141592654*i)*i^2-24.*sin(-18.84955593+3.141592654*i)-72.*sin(6.283185312+3.141592654*i)-72.*sin(-6.283185312+3.141592654*i)-24.*sin(18.84955593+3.141592654*i))*q[2]*q[4]/((i-2.)*(i+6.)*(i-6.)*(i+2.))+123.3700550*(-1.*sin(3.141592654*i-21.99114858)*i^3+sin(3.141592654*i+21.99114858)*i^3-7.*sin(3.141592654*i-21.99114858)*i^2-7.*sin(3.141592654*i+21.99114858)*i^2+63.*sin(3.141592654*i-21.99114858)+63.*sin(3.141592654*i+21.99114858)+9.*sin(3.141592654*i-21.99114858)*i-9.*sin(3.141592654*i+21.99114858)*i-1.*sin(3.141592654*i-9.424777962)*i^3+sin(3.141592654*i+9.424777962)*i^3-3.*sin(3.141592654*i-9.424777962)*i^2-3.*sin(3.141592654*i+9.424777962)*i^2+147.*sin(3.141592654*i+9.424777962)+147.*sin(3.141592654*i-9.424777962)+49.*sin(3.141592654*i-9.424777962)*i-49.*sin(3.141592654*i+9.424777962)*i)*q[2]*q[5]/((i-3.)*(i+7.)*(i-7.)*(i+3.))-177.6528793*(-64.*sin(-12.56637061+3.141592654*i)*i+16.*sin(3.141592654*i+25.13274123)*i-16.*sin(3.141592654*i-25.13274123)*i+64.*sin(12.56637061+3.141592654*i)*i+sin(-12.56637061+3.141592654*i)*i^3-1.*sin(3.141592654*i+25.13274123)*i^3+sin(3.141592654*i-25.13274123)*i^3-1.*sin(12.56637061+3.141592654*i)*i^3+4.*sin(-12.56637061+3.141592654*i)*i^2+8.*sin(3.141592654*i+25.13274123)*i^2+8.*sin(3.141592654*i-25.13274123)*i^2+4.*sin(12.56637061+3.141592654*i)*i^2-256.*sin(12.56637061+3.141592654*i)-256.*sin(-12.56637061+3.141592654*i)-128.*sin(3.141592654*i+25.13274123)-128.*sin(3.141592654*i-25.13274123))*q[2]*q[6]/((i-4.)*(i+8.)*(i-8.)*(i+4.))-241.8053078*(sin(-28.27433389+3.141592654*i)*i^3-1.*sin(3.141592654*i+15.70796327)*i^3+5.*sin(3.141592654*i-15.70796327)*i^2+9.*sin(28.27433389+3.141592654*i)*i^2+9.*sin(-28.27433389+3.141592654*i)*i^2+5.*sin(3.141592654*i+15.70796327)*i^2-81.*sin(3.141592654*i-15.70796327)*i+25.*sin(28.27433389+3.141592654*i)*i-25.*sin(-28.27433389+3.141592654*i)*i+81.*sin(3.141592654*i+15.70796327)*i+sin(3.141592654*i-15.70796327)*i^3-1.*sin(28.27433389+3.141592654*i)*i^3-225.*sin(28.27433389+3.141592654*i)-225.*sin(-28.27433389+3.141592654*i)-405.*sin(3.141592654*i+15.70796327)-405.*sin(3.141592654*i-15.70796327))*q[2]*q[7]/((i-5.)*(9.+i)*(-9.+i)*(i+5.))-7.402203303*(-1.*sin(3.141592654*i-6.283185308)*i^3+sin(3.141592654*i+6.283185308)*i^3+sin(3.141592654*i-12.56637062)*i^3-1.*sin(3.141592654*i+12.56637062)*i^3-2.*sin(3.141592654*i-6.283185308)*i^2-2.*sin(3.141592654*i+6.283185308)*i^2+4.*sin(3.141592654*i-12.56637062)*i^2+4.*sin(3.141592654*i+12.56637062)*i^2+16.*sin(3.141592654*i-6.283185308)*i-16.*sin(3.141592654*i+6.283185308)*i-4.*sin(3.141592654*i-12.56637062)*i+4.*sin(3.141592654*i+12.56637062)*i+32.*sin(3.141592654*i-6.283185308)+32.*sin(3.141592654*i+6.283185308)-16.*sin(3.141592654*i-12.56637062)-16.*sin(3.141592654*i+12.56637062))*q[3]*q[1]/((i+2.)*(i+4.)*(i-4.)*(i-2.))-29.60881321*(sin(3.141592654*i-15.70796327)*i^3-1.*sin(3.141592654*i+15.70796327)*i^3+5.*sin(3.141592654*i-15.70796327)*i^2+5.*sin(3.141592654*i+15.70796327)*i^2-5.*sin(3.141592654*i+15.70796327)-5.*sin(3.141592654*i-15.70796327)-1.*sin(3.141592654*i-15.70796327)*i+sin(3.141592654*i+15.70796327)*i+sin(3.141592654*i+3.141592654)*i^3-1.*sin(3.141592654*i-3.141592654)*i^3-1.*sin(3.141592654*i+3.141592654)*i^2-1.*sin(3.141592654*i-3.141592654)*i^2+25.*sin(3.141592654*i+3.141592654)-25.*sin(3.141592654*i+3.141592654)*i+25.*sin(3.141592654*i-3.141592654)*i+25.*sin(3.141592654*i-3.141592654))*q[3]*q[2]/((i+1.)*(i+5.)*(i-5.)*(i-1.))-118.4352528*(-49.*sin(-3.141592658+3.141592654*i)*i+sin(3.141592654*i+21.99114858)*i-1.*sin(3.141592654*i-21.99114858)*i+49.*sin(3.141592658+3.141592654*i)*i+sin(-3.141592658+3.141592654*i)*i^3-1.*sin(3.141592654*i+21.99114858)*i^3+sin(3.141592654*i-21.99114858)*i^3-1.*sin(3.141592658+3.141592654*i)*i^3+sin(-3.141592658+3.141592654*i)*i^2+7.*sin(3.141592654*i+21.99114858)*i^2+7.*sin(3.141592654*i-21.99114858)*i^2+sin(3.141592658+3.141592654*i)*i^2-7.*sin(3.141592654*i+21.99114858)-7.*sin(3.141592654*i-21.99114858)-49.*sin(3.141592658+3.141592654*i)-49.*sin(-3.141592658+3.141592654*i))*q[3]*q[4]/((i-1.)*(i+7.)*(i-7.)*(i+1.))+185.0550826*(32.*sin(3.141592654*i-25.13274123)+32.*sin(3.141592654*i+25.13274123)+4.*sin(3.141592654*i-25.13274123)*i-4.*sin(3.141592654*i+25.13274123)*i-1.*sin(3.141592654*i-6.283185308)*i^3+sin(3.141592654*i+6.283185308)*i^3-2.*sin(3.141592654*i-6.283185308)*i^2-2.*sin(3.141592654*i+6.283185308)*i^2+128.*sin(3.141592654*i+6.283185308)+128.*sin(3.141592654*i-6.283185308)-64.*sin(3.141592654*i+6.283185308)*i+64.*sin(3.141592654*i-6.283185308)*i-1.*sin(3.141592654*i-25.13274123)*i^3+sin(3.141592654*i+25.13274123)*i^3-8.*sin(3.141592654*i-25.13274123)*i^2-8.*sin(3.141592654*i+25.13274123)*i^2)*q[3]*q[5]/((i-2.)*(i+8.)*(i-8.)*(i+2.))-266.4793189*(-81.*sin(-9.424777958+3.141592654*i)*i+9.*sin(28.27433388+3.141592654*i)*i-9.*sin(-28.27433388+3.141592654*i)*i+81.*sin(9.424777958+3.141592654*i)*i+sin(-9.424777958+3.141592654*i)*i^3-1.*sin(28.27433388+3.141592654*i)*i^3+sin(-28.27433388+3.141592654*i)*i^3-1.*sin(9.424777958+3.141592654*i)*i^3+3.*sin(-9.424777958+3.141592654*i)*i^2+9.*sin(28.27433388+3.141592654*i)*i^2+9.*sin(-28.27433388+3.141592654*i)*i^2+3.*sin(9.424777958+3.141592654*i)*i^2-243.*sin(-9.424777958+3.141592654*i)-81.*sin(28.27433388+3.141592654*i)-81.*sin(-28.27433388+3.141592654*i)-243.*sin(9.424777958+3.141592654*i))*q[3]*q[6]/((i-3.)*(9.+i)*(-9.+i)*(i+3.))-362.7079617*(sin(-31.41592654+3.141592654*i)*i^3-1.*sin(3.141592654*i+12.56637062)*i^3+4.*sin(3.141592654*i-12.56637062)*i^2+10.*sin(31.41592654+3.141592654*i)*i^2+10.*sin(-31.41592654+3.141592654*i)*i^2+4.*sin(3.141592654*i+12.56637062)*i^2-100.*sin(3.141592654*i-12.56637062)*i+16.*sin(31.41592654+3.141592654*i)*i-16.*sin(-31.41592654+3.141592654*i)*i+100.*sin(3.141592654*i+12.56637062)*i+sin(3.141592654*i-12.56637062)*i^3-1.*sin(31.41592654+3.141592654*i)*i^3-160.*sin(-31.41592654+3.141592654*i)-400.*sin(3.141592654*i+12.56637062)-400.*sin(3.141592654*i-12.56637062)-160.*sin(31.41592654+3.141592654*i))*q[3]*q[7]/((i-4.)*(10.+i)*(-10.+i)*(i+4.))-9.869604404*(sin(3.141592654*i-15.70796327)*i^3-1.*sin(3.141592654*i+15.70796327)*i^3+5.*sin(3.141592654*i-15.70796327)*i^2+5.*sin(3.141592654*i+15.70796327)*i^2-45.*sin(3.141592654*i+15.70796327)-45.*sin(3.141592654*i-15.70796327)-9.*sin(3.141592654*i-15.70796327)*i+9.*sin(3.141592654*i+15.70796327)*i-1.*sin(3.141592654*i-9.424777962)*i^3+sin(3.141592654*i+9.424777962)*i^3-3.*sin(3.141592654*i-9.424777962)*i^2-3.*sin(3.141592654*i+9.424777962)*i^2+75.*sin(3.141592654*i+9.424777962)+75.*sin(3.141592654*i-9.424777962)+25.*sin(3.141592654*i-9.424777962)*i-25.*sin(3.141592654*i+9.424777962)*i)*q[4]*q[1]/((i+3.)*(i+5.)*(i-5.)*(i-3.))-39.47841761*(sin(3.141592654*i-18.84955592)*i^3-1.*sin(3.141592654*i+18.84955592)*i^3+6.*sin(3.141592654*i-18.84955592)*i^2+6.*sin(3.141592654*i+18.84955592)*i^2-24.*sin(3.141592654*i-18.84955592)-24.*sin(3.141592654*i+18.84955592)-4.*sin(3.141592654*i-18.84955592)*i+4.*sin(3.141592654*i+18.84955592)*i-1.*sin(3.141592654*i-6.283185308)*i^3+sin(3.141592654*i+6.283185308)*i^3-2.*sin(3.141592654*i-6.283185308)*i^2-2.*sin(3.141592654*i+6.283185308)*i^2+72.*sin(3.141592654*i+6.283185308)+72.*sin(3.141592654*i-6.283185308)-36.*sin(3.141592654*i+6.283185308)*i+36.*sin(3.141592654*i-6.283185308)*i)*q[4]*q[2]/((i+2.)*(i+6.)*(i-6.)*(i-2.))-88.82643964*(sin(3.141592654*i-21.99114858)*i^3-1.*sin(3.141592654*i+21.99114858)*i^3+7.*sin(3.141592654*i-21.99114858)*i^2+7.*sin(3.141592654*i+21.99114858)*i^2-7.*sin(3.141592654*i-21.99114858)-7.*sin(3.141592654*i+21.99114858)-1.*sin(3.141592654*i-21.99114858)*i+sin(3.141592654*i+21.99114858)*i+sin(3.141592654*i+3.141592654)*i^3-1.*sin(3.141592654*i-3.141592654)*i^3-1.*sin(3.141592654*i+3.141592654)*i^2-1.*sin(3.141592654*i-3.141592654)*i^2+49.*sin(3.141592654*i+3.141592654)-49.*sin(3.141592654*i+3.141592654)*i+49.*sin(3.141592654*i-3.141592654)*i+49.*sin(3.141592654*i-3.141592654))*q[4]*q[3]/((i+1.)*(i+7.)*(i-7.)*(i-1.))+246.7401101*(sin(3.141592654*i+3.141592654)*i^3-1.*sin(3.141592654*i-3.141592654)*i^3-1.*sin(3.141592654*i+3.141592654)*i^2-1.*sin(3.141592654*i-3.141592654)*i^2-9.*sin(28.27433389+3.141592654*i)*i^2-9.*sin(-28.27433389+3.141592654*i)*i^2-1.*sin(28.27433389+3.141592654*i)*i+sin(-28.27433389+3.141592654*i)*i+sin(28.27433389+3.141592654*i)*i^3-1.*sin(-28.27433389+3.141592654*i)*i^3+81.*sin(3.141592654*i+3.141592654)-81.*sin(3.141592654*i+3.141592654)*i+81.*sin(3.141592654*i-3.141592654)*i+81.*sin(3.141592654*i-3.141592654)+9.*sin(-28.27433389+3.141592654*i)+9.*sin(28.27433389+3.141592654*i))*q[4]*q[5]/((i-1.)*(9.+i)*(-9.+i)*(i+1.))-355.3057585*(-100.*sin(-6.283185304+3.141592654*i)*i+4.*sin(31.41592654+3.141592654*i)*i-4.*sin(-31.41592654+3.141592654*i)*i+100.*sin(6.283185304+3.141592654*i)*i+sin(-6.283185304+3.141592654*i)*i^3-1.*sin(31.41592654+3.141592654*i)*i^3+sin(-31.41592654+3.141592654*i)*i^3-1.*sin(6.283185304+3.141592654*i)*i^3+2.*sin(-6.283185304+3.141592654*i)*i^2+10.*sin(31.41592654+3.141592654*i)*i^2+10.*sin(-31.41592654+3.141592654*i)*i^2+2.*sin(6.283185304+3.141592654*i)*i^2-40.*sin(31.41592654+3.141592654*i)-40.*sin(-31.41592654+3.141592654*i)-200.*sin(6.283185304+3.141592654*i)-200.*sin(-6.283185304+3.141592654*i))*q[4]*q[6]/((i-2.)*(10.+i)*(-10.+i)*(i+2.))-483.6106156*(sin(-34.55751920+3.141592654*i)*i^3-1.*sin(9.424777964+3.141592654*i)*i^3+3.*sin(-9.424777964+3.141592654*i)*i^2+11.*sin(34.55751920+3.141592654*i)*i^2+11.*sin(-34.55751920+3.141592654*i)*i^2+3.*sin(9.424777964+3.141592654*i)*i^2-121.*sin(-9.424777964+3.141592654*i)*i+9.*sin(34.55751920+3.141592654*i)*i-9.*sin(-34.55751920+3.141592654*i)*i+121.*sin(9.424777964+3.141592654*i)*i+sin(-9.424777964+3.141592654*i)*i^3-1.*sin(34.55751920+3.141592654*i)*i^3-363.*sin(9.424777964+3.141592654*i)-363.*sin(-9.424777964+3.141592654*i)-99.*sin(34.55751920+3.141592654*i)-99.*sin(-34.55751920+3.141592654*i))*q[4]*q[7]/((i-3.)*(11.+i)*(-11.+i)*(i+3.)))+Cd*(.1591549431*(sin(3.141592654*i-3.141592654)*i-1.*sin(3.141592654*i+3.141592654)*i+sin(3.141592654*i-3.141592654)+sin(3.141592654*i+3.141592654))*(diff(p(t), t))[1]/((i-1.)*(i+1.))+.1591549431*(sin(3.141592654*i-6.283185308)*i-1.*sin(3.141592654*i+6.283185308)*i+2.*sin(3.141592654*i-6.283185308)+2.*sin(3.141592654*i+6.283185308))*(diff(p(t), t))[2]/((i-2.)*(i+2.))+.1591549431*(sin(3.141592654*i-9.424777962)*i-1.*sin(3.141592654*i+9.424777962)*i+3.*sin(3.141592654*i-9.424777962)+3.*sin(3.141592654*i+9.424777962))*(diff(p(t), t))[3]/((i-3.)*(i+3.))+.1591549431*(sin(3.141592654*i-12.56637062)*i-1.*sin(3.141592654*i+12.56637062)*i+4.*sin(3.141592654*i-12.56637062)+4.*sin(3.141592654*i+12.56637062))*(diff(p(t), t))[4]/((i-4.)*(i+4.))+.1591549431*(sin(3.141592654*i-15.70796327)*i-1.*sin(3.141592654*i+15.70796327)*i+5.*sin(3.141592654*i-15.70796327)+5.*sin(3.141592654*i+15.70796327))*(diff(p(t), t))[5]/((i-5.)*(i+5.))+.1591549431*(sin(3.141592654*i-18.84955592)*i-1.*sin(3.141592654*i+18.84955592)*i+6.*sin(3.141592654*i-18.84955592)+6.*sin(3.141592654*i+18.84955592))*(diff(p(t), t))[6]/((i-6.)*(i+6.))+.1591549431*(sin(3.141592654*i-21.99114858)*i-1.*sin(3.141592654*i+21.99114858)*i+7.*sin(3.141592654*i-21.99114858)+7.*sin(3.141592654*i+21.99114858))*(diff(p(t), t))[7]/((i-7.)*(i+7.))+.1591549431*(sin(3.141592654*i-25.13274123)*i-1.*sin(3.141592654*i+25.13274123)*i+8.*sin(3.141592654*i-25.13274123)+8.*sin(3.141592654*i+25.13274123))*(diff(p(t), t))[8]/((i-8.)*(i+8.))), i = 1)

 

Warning,  computation interrupted

 

``

``

NULL

pp2 := sum((int(phi[i]*phi[j], x = 0 .. 1, numeric))*(diff(q(t), t, t))[j], j = 1 .. 7)+(1+`&eta;&eta;`)*(sum((int(phi[i]*(diff(phi[j], x, x, x, x)), x = 0 .. 1, numeric))*q(t)[j], j = 1 .. 7))+Cd*(sum((int(phi[i]*phi[j], x = 0 .. 1, numeric))*(diff(q(t), t))[j], j = 1 .. 7))-beta^2*(sum(sum((int(phi[i]*(diff(phi[j], x, x))*(diff(phi[k], x)), x = 0 .. 1, numeric))*q(t)[j]*p[k], k = 1 .. 8), j = 1 .. 7)+sum(sum((int(phi[i]*(diff(phi[j], x))*(diff(phi[k], x, x)), x = 0 .. 1, numeric))*q(t)[j]*p[k], k = 1 .. 8), j = 1 .. 7)+sum((int(AA0*(diff(phi[1], x, x))*phi[i]*(diff(phi[j], x)), x = 0 .. 1, numeric))*p[j], j = 1 .. 8)+sum((int(AA0*(diff(phi[1], x))*phi[i]*(diff(phi[j], x, x)), x = 0 .. 1, numeric))*p[j], j = 1 .. 8)+(3/2)*(sum(sum(sum((int(phi[i]*(diff(phi[j], x))*(diff(phi[k], x))*(diff(phi[l], x, x)), x = 0 .. 1, numeric))*q(t)[j]*q(t)[k]*q(t)[l], l = 1 .. 7), k = 1 .. 7), j = 1 .. 7))+(3/2)*(sum(sum((int(AA0*(diff(phi[1], x, x))*phi[i]*(diff(phi[j], x))*(diff(phi[k], x)), x = 0 .. 1, numeric))*q(t)[j]*q(t)[k], k = 1 .. 7), j = 1 .. 7))+sum((int((AA0*(diff(phi[1], x)))^2*phi[i]*(diff(phi[j], x, x)), x = 0 .. 1, numeric))*q(t)[j], j = 1 .. 7)+3*(sum(sum((int(AA0*(diff(phi[1], x))*phi[i]*(diff(phi[j], x))*(diff(phi[k], x, x)), x = 0 .. 1, numeric))*q(t)[j]*q(t)[k], k = 1 .. 7), j = 1 .. 7))+2*(sum((int(AA0^2*(diff(phi[1], x))*(diff(phi[1], x, x))*phi[i]*(diff(phi[j], x)), x = 0 .. 1, numeric))*q(t)[j], j = 1 .. 7)))-(int(f1*phi[1]*phi[i], x = 0 .. 1, numeric))*cos(Omega*t)

NULL

NULL

``

for z to 7 do limit(pp2, i = z) end do

Warning,  computation interrupted

 

``

NULL

``

``

``

``

``

``

``

``

``

``

``

``

``

``

``


 

Download 11111111111111.mwWould you mind please check out my code11111111111111.mw

11111111111111.mw

Hello everyone,

I am experiencing a strange result. The Theta_double_dot got equated to zero in line 1.7. Please see the red arrow.

(I am using the Physics package)

How can I solve this issue?

u:=(x,t)->(40/Pi)*sum((1/r)*sin(r*Pi*x/2)*exp(-lambda^2*t),r=1....infinity);     r=1,3,5.... 

this is one dimensional heat equation solution. r values must be odd numbers and we can take the random r variable like 1000 .x=0...2 and t=0...1   but I don't know how can I draw 3d plot. If I write plot3d([u(x,t)],x=0...2,t=0...1); give an error.(bad range arguments)

Dear Maple useres,

I have a polynomial in the form f(s)/g(s) where f and g are polynomial of order 4 with coefficients in symbolic form. I want to convert it in a form of (s-a)*(s-b)*(s-c)*(s-d)/(s-a1)*(s-b1)*(s-c1)*(s-d1)

When i provide the numic value of  symbolic coefficients, Maple find it easy to factor it in the desired form. Otherwise i get a messy solution in the form of root of... expression. Even with assume command, I see no difference in the result. Is there a way to get the above simple form rather than root of expression?

thanks.

 

Hello!

I am currently working with the A = rosser Matrix. Which is found in Matlab. The task is to find the eigenvectors of this Matrix in Matlab and Maple. I have succeeded in matlab, but I am confused with Maple. What I have done:

1) In Matlab I save the A = roseer so I could import in from Maple

2) I go back to Maple

3) I write with(LinearAlgebra);

3) I use this path "Tools>Assistants>Import Data" and I select the saved Matlab file (Named A.mat) (No specific folder if that is important)

4) I use "Matrix Data Type" as "Anything" and I give the Variable name "A"

5) I now see the Matrix inside Maple. BUT I get dots after each value. Like this --> 99. 3. -147. etc - This might be an issue.

Note: I never get to select file format. Is that because they know it was a matlab file? Or a setting I am missing out on?

6) I write A := A[2] (According to teachers instructions)

7)  Then I write: eigenvects(A);  (Teachers isntructions)

But I am getting no proper values at all. I assume it is something with the import. So I added this 8x8 Matrix by hand. I got a better result with a result. But the result is wrong. I am getting 7 eigenvectors while there should be 8. See the code at: Method-two.mw

I am turning crazy over here. Anyone smart who could help me out please?

Hi,

 

I use Statistics[Biplot] and the rendering is very bad with those huge arrows.

For the moment I fix this by modifying the definitions of the curves which draw each arrow (after using getdata to recover the Biplot structure)

Does it exist a simpler way to manage the appearance of the arrows ?
(options cb, cw and ch of plottols[arrow] are incorrect in Statistics[Biplot](..., arrow=[...]).

Thanks in advance

Hello,

I used the interface(typesetting = extended) command to change the notation used for time derivative of o variable.

But it doesn't seem to be working well when the variable is in the supercript form (check the last line).

How can I solve this issue?

Mapleprimesquestion.mw

 

x/2 seems completely wrong as a CDF. In other cases Maple correctly writes the CDF as a piecewise-constant function clipped to 0..1:

with(Statistics):

dd := Distribution(ProbabilityFunction = 1/2, Support = 1 .. 2);

PDF(dd, x); # OK
                   (1/2)*Dirac(x-1)+(1/2)*Dirac(x-2)

CDF(dd, x);
                                (1/2)*x

Also CDF seems to have issues with DiscreteValueMap specified using a list, a table or piecewise():

dd := Distribution(ProbabilityFunction = 1/2, DiscreteValueMap = (n -> [1, 2][n]), Support = 1 .. 2);

PDF(dd, x); # OK
                    (1/2)*Dirac(x-1)+(1/2)*Dirac(x-2)

CDF(dd, x); # indeterminate
  int((1/2)*Dirac(0)*Dirac(_t-1)+(1/2)*Dirac(0)*Dirac(_t-2), _t = -infinity .. x)

 

with(Statistics):

CDF(Binomial(2, 1/2), x); # wrong
               piecewise(x < 0, 0, 2 <= x, 1, 1)

CDF(Binomial(2, p), x); # also wrong
     piecewise(x < 0, 0, 2 <= x, 1, p = 0, 1, p = 1, 0, 1)

Maple can actually generate PDFs for discrete distributions:

bpdf := unapply(PDF(Binomial(2, 1/2), x), x);
          x -> (1/4)*Dirac(x)+(1/2)*Dirac(x-1)+(1/4)*Dirac(x-2)

int(bpdf(t), t = -infinity .. x); # correct CDF
         (1/4)*Heaviside(x)+(1/2)*Heaviside(x-1)+(1/4)*Heaviside(x-2)

But then functions of random variables do not seem to work :

bdist := Distribution(PDF = bpdf, Support = -infinity .. infinity);

CDF(bdist, x); # OK
           piecewise(x < 0, 0, x = 0, undefined, x < 1, 1/4, x = 1, undefined, x < 2, 3/4, x = 2,
           undefined, 2 < x, 1)

CDF(add(RandomVariable(bdist), i = 1 .. 2), x); # indeterminate
          int((1/16)*Dirac(_t)^2+(1/4)*Dirac(0)*Dirac(_t-1)+(3/8)*Dirac(0)*Dirac(_t-2)+(1/4)*Dirac(0)*
          Dirac(_t-3)+(1/16)*Dirac(0)*Dirac(_t-4), _t = -infinity .. x)

It's a bit disappointing that Maple generates PDFs in terms of the delta function but doesn't support them properly, because that could be an easy and natural way to define mixed distributions.

There was a spam button that allowed a user with enough points to delete spam. It appears to have gone away, now we can just flag stuff as spam.

i have system of ode, which has three unkonwn function,x(t),y(t),z(t), and i need differentiation of theses function with respect to " t " , how can i use numeric solution to have these parameters? tnx for help in advance

 

restart;

wl:=0.08:alpha:=0.5:gamma0:=8.82*1e10:mu0:=4*Pi*1e-7:gammA:=gamma0/(1+alpha^2):alphaPrime:=mu0*gammA*alpha:
gamma1:=mu0*gammA:m0:=mu0*1e5:num:=[seq](i,i=1e2..1e4):

w:=num[1]:
dsys:={diff(x(t), t) =alphaPrime*(z(t)^2*wl*cos(w*t)/gamma1+y(t)^2*wl*cos(w*t)/gamma1),diff(y(t),t)=-z(t)*wl*cos(w*t)-alphaPrime*y(t)*wl*cos(w*t)*x(t)/gamma1,diff(z(t),t)=y(t)*wl*cos(w*t)-alphaPrime*z(t)*wl*cos(w*t)*x(t)/gamma1,x(0)=.01,y(0)=1,z(0)=0.1};

{diff(x(t), t) = 0.4000000000e-1*z(t)^2*cos(0.1e3*t)+0.4000000000e-1*y(t)^2*cos(0.1e3*t), diff(y(t), t) = -0.8e-1*z(t)*cos(0.1e3*t)-0.3999999999e-1*y(t)*cos(0.1e3*t)*x(t), diff(z(t), t) = 0.8e-1*y(t)*cos(0.1e3*t)-0.3999999999e-1*z(t)*cos(0.1e3*t)*x(t), x(0) = 0.1e-1, y(0) = 1, z(0) = .1}

(1)

 

ans:=dsolve(dsys,numeric,output = listprocedure);

[t = proc (t) local _res, _dat, _solnproc, _xout, _ndsol, _pars, _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](t) else _xout := evalf(t) 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 .. 24, [( 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..58, {(1) = 3, (2) = 3, (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, (54) = 0, (55) = 0, (56) = 0, (57) = 0, (58) = 0}, datatype = integer[8])), ( 5 ) = (Array(1..28, {(1) = .0, (2) = 0.10e-5, (3) = .0, (4) = 0.500001e-14, (5) = .0, (6) = .12625459619411994, (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..3, {(1) = 0.1e-1, (2) = 1.0, (3) = .1}, 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..3, {(1) = .1, (2) = .1, (3) = .1}, datatype = float[8], order = C_order), Array(1..3, {(1) = .0, (2) = .0, (3) = .0}, datatype = float[8], order = C_order), Array(1..3, {(1) = .0, (2) = .0, (3) = .0}, datatype = float[8], order = C_order), Array(1..3, {(1) = .0, (2) = .0, (3) = .0}, datatype = float[8], order = C_order), Array(1..3, {(1) = .0, (2) = .0, (3) = .0}, datatype = float[8], order = C_order), Array(1..3, 1..3, {(1, 1) = .0, (1, 2) = .0, (1, 3) = .0, (2, 1) = .0, (2, 2) = .0, (2, 3) = .0, (3, 1) = .0, (3, 2) = .0, (3, 3) = .0}, datatype = float[8], order = C_order), Array(1..3, 1..3, {(1, 1) = .0, (1, 2) = .0, (1, 3) = .0, (2, 1) = .0, (2, 2) = .0, (2, 3) = .0, (3, 1) = .0, (3, 2) = .0, (3, 3) = .0}, datatype = float[8], order = C_order), Array(1..3, 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}, datatype = float[8], order = C_order), Array(1..3, {(1) = 0, (2) = 0, (3) = 0}, datatype = integer[8]), Array(1..3, {(1) = .0, (2) = .0, (3) = .0}, datatype = float[8], order = C_order), Array(1..3, {(1) = .0, (2) = .0, (3) = .0}, datatype = float[8], order = C_order), Array(1..3, {(1) = .0, (2) = .0, (3) = .0}, datatype = float[8], order = C_order), Array(1..3, {(1) = .0, (2) = .0, (3) = .0}, datatype = float[8], order = C_order), Array(1..3, {(1) = .0, (2) = .0, (3) = .0}, datatype = float[8], order = C_order), Array(1..6, {(1) = .0, (2) = .0, (3) = .0, (4) = .0, (5) = .0, (6) = .0}, datatype = float[8], order = C_order)]), ( 8 ) = ([Array(1..3, {(1) = 0.1e-1, (2) = 1.0, (3) = .1}, datatype = float[8], order = C_order), Array(1..3, {(1) = .0, (2) = .0, (3) = .0}, datatype = float[8], order = C_order), Array(1..3, {(1) = 0.404e-1, (2) = -0.83999999999e-2, (3) = 0.7996000000001e-1}, datatype = float[8], order = C_order), 0, 0]), ( 11 ) = (Array(1..6, 0..3, {(1, 1) = .0, (1, 2) = .0, (1, 3) = .0, (2, 0) = .0, (2, 1) = .0, (2, 2) = .0, (2, 3) = .0, (3, 0) = .0, (3, 1) = .0, (3, 2) = .0, (3, 3) = .0, (4, 0) = .0, (4, 1) = .0, (4, 2) = .0, (4, 3) = .0, (5, 0) = .0, (5, 1) = .0, (5, 2) = .0, (5, 3) = .0, (6, 0) = .0, (6, 1) = .0, (6, 2) = .0, (6, 3) = .0}, datatype = float[8], order = C_order)), ( 10 ) = ([proc (N, X, Y, YP) option `[Y[1] = x(t), Y[2] = y(t), Y[3] = z(t)]`; YP[1] := 0.4000000000e-1*Y[3]^2*cos(0.1e3*X)+0.4000000000e-1*Y[2]^2*cos(0.1e3*X); YP[2] := -0.8e-1*Y[3]*cos(0.1e3*X)-0.3999999999e-1*Y[2]*cos(0.1e3*X)*Y[1]; YP[3] := 0.8e-1*Y[2]*cos(0.1e3*X)-0.3999999999e-1*Y[3]*cos(0.1e3*X)*Y[1]; 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] = x(t), Y[2] = y(t), Y[3] = z(t)]`; YP[1] := 0.4000000000e-1*Y[3]^2*cos(0.1e3*X)+0.4000000000e-1*Y[2]^2*cos(0.1e3*X); YP[2] := -0.8e-1*Y[3]*cos(0.1e3*X)-0.3999999999e-1*Y[2]*cos(0.1e3*X)*Y[1]; YP[3] := 0.8e-1*Y[2]*cos(0.1e3*X)-0.3999999999e-1*Y[3]*cos(0.1e3*X)*Y[1]; 0 end proc, -1, 0, 0, 0, 0, 0, 0]), ( 22 ) = (0), ( 23 ) = (0), ( 20 ) = ([]), ( 21 ) = (0), ( 24 ) = (0)  ] ))  ] ); _y0 := Array(0..3, {(1) = 0., (2) = 0.1e-1, (3) = 1.}); _vmap := array( 1 .. 3, [( 1 ) = (1), ( 2 ) = (2), ( 3 ) = (3)  ] ); _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 _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 <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 _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 <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 _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(1..4, {(1) = 18446747211248885846, (2) = 18446747211248886110, (3) = 18446747211248886286, (4) = 18446747211248886462}), (3) = [t, x(t), y(t), z(t)], (4) = []}); _solnproc := _dat[1]; _pars := map(rhs, _dat[4]); if not type(_xout, 'numeric') then if member(t, ["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(t, '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(t, ["last", 'last', "initial", 'initial', NULL]) then _res := _solnproc(convert(t, 'string')); if type(_res, 'list') then return _res[1] else return NULL end if elif member(t, ["parameters", 'parameters', "initial_and_parameters", 'initial_and_parameters', NULL]) then _xout := convert(t, 'string'); _res := _solnproc(_xout); if _xout = "parameters" then return [seq(_pars[_i] = _res[_i], _i = 1 .. nops(_pars))] else return [_res[1], seq(_pars[_i] = [_res][2][_i], _i = 1 .. nops(_pars))] end if elif type(_xout, `=`) and member(lhs(_xout), ["initial", 'initial', "parameters", 'parameters', "initial_and_parameters", 'initial_and_parameters', NULL]) then _xout := convert(lhs(t), 'string') = rhs(t); if lhs(_xout) = "initial" then if type(rhs(_xout), 'list') then _res := _solnproc(_xout) else _res := _solnproc("initial" = ["single", 1, rhs(_xout)]) end if elif not type(rhs(_xout), 'list') then error "initial and/or parameter values must be specified in a list" elif lhs(_xout) = "initial_and_parameters" and nops(rhs(_xout)) = nops(_pars)+1 then _res := _solnproc(lhs(_xout) = ["single", 1, op(rhs(_xout))]) else _res := _solnproc(_xout) end if; if lhs(_xout) = "initial" then return _res[1] elif lhs(_xout) = "parameters" then return [seq(_pars[_i] = _res[_i], _i = 1 .. nops(_pars))] else return [_res[1], 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(t), 'string') = rhs(t)) elif _xout = "solnprocedure" then return eval(_solnproc) elif _xout = "sysvars" then return _dat[3] end if; if procname <> unknown then return ('procname')(t) else _ndsol := `tools/gensym`("t"); eval(FromInert(_Inert_FUNCTION(_Inert_NAME("assign"), _Inert_EXPSEQ(ToInert(_ndsol), _Inert_VERBATIM(pointto(_dat[2][1])))))); return FromInert(_Inert_FUNCTION(ToInert(_ndsol), _Inert_EXPSEQ(ToInert(t)))) end if end if; try _res := _solnproc(_xout); _res[1] catch: error  end try end proc, x(t) = proc (t) local _res, _dat, _solnproc, _xout, _ndsol, _pars, _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](t) else _xout := evalf(t) 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 .. 24, [( 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..58, {(1) = 3, (2) = 3, (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, (54) = 0, (55) = 0, (56) = 0, (57) = 0, (58) = 0}, datatype = integer[8])), ( 5 ) = (Array(1..28, {(1) = .0, (2) = 0.10e-5, (3) = .0, (4) = 0.500001e-14, (5) = .0, (6) = .12625459619411994, (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..3, {(1) = 0.1e-1, (2) = 1.0, (3) = .1}, 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..3, {(1) = .1, (2) = .1, (3) = .1}, datatype = float[8], order = C_order), Array(1..3, {(1) = .0, (2) = .0, (3) = .0}, datatype = float[8], order = C_order), Array(1..3, {(1) = .0, (2) = .0, (3) = .0}, datatype = float[8], order = C_order), Array(1..3, {(1) = .0, (2) = .0, (3) = .0}, datatype = float[8], order = C_order), Array(1..3, {(1) = .0, (2) = .0, (3) = .0}, datatype = float[8], order = C_order), Array(1..3, 1..3, {(1, 1) = .0, (1, 2) = .0, (1, 3) = .0, (2, 1) = .0, (2, 2) = .0, (2, 3) = .0, (3, 1) = .0, (3, 2) = .0, (3, 3) = .0}, datatype = float[8], order = C_order), Array(1..3, 1..3, {(1, 1) = .0, (1, 2) = .0, (1, 3) = .0, (2, 1) = .0, (2, 2) = .0, (2, 3) = .0, (3, 1) = .0, (3, 2) = .0, (3, 3) = .0}, datatype = float[8], order = C_order), Array(1..3, 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}, datatype = float[8], order = C_order), Array(1..3, {(1) = 0, (2) = 0, (3) = 0}, datatype = integer[8]), Array(1..3, {(1) = .0, (2) = .0, (3) = .0}, datatype = float[8], order = C_order), Array(1..3, {(1) = .0, (2) = .0, (3) = .0}, datatype = float[8], order = C_order), Array(1..3, {(1) = .0, (2) = .0, (3) = .0}, datatype = float[8], order = C_order), Array(1..3, {(1) = .0, (2) = .0, (3) = .0}, datatype = float[8], order = C_order), Array(1..3, {(1) = .0, (2) = .0, (3) = .0}, datatype = float[8], order = C_order), Array(1..6, {(1) = .0, (2) = .0, (3) = .0, (4) = .0, (5) = .0, (6) = .0}, datatype = float[8], order = C_order)]), ( 8 ) = ([Array(1..3, {(1) = 0.1e-1, (2) = 1.0, (3) = .1}, datatype = float[8], order = C_order), Array(1..3, {(1) = .0, (2) = .0, (3) = .0}, datatype = float[8], order = C_order), Array(1..3, {(1) = 0.404e-1, (2) = -0.83999999999e-2, (3) = 0.7996000000001e-1}, datatype = float[8], order = C_order), 0, 0]), ( 11 ) = (Array(1..6, 0..3, {(1, 1) = .0, (1, 2) = .0, (1, 3) = .0, (2, 0) = .0, (2, 1) = .0, (2, 2) = .0, (2, 3) = .0, (3, 0) = .0, (3, 1) = .0, (3, 2) = .0, (3, 3) = .0, (4, 0) = .0, (4, 1) = .0, (4, 2) = .0, (4, 3) = .0, (5, 0) = .0, (5, 1) = .0, (5, 2) = .0, (5, 3) = .0, (6, 0) = .0, (6, 1) = .0, (6, 2) = .0, (6, 3) = .0}, datatype = float[8], order = C_order)), ( 10 ) = ([proc (N, X, Y, YP) option `[Y[1] = x(t), Y[2] = y(t), Y[3] = z(t)]`; YP[1] := 0.4000000000e-1*Y[3]^2*cos(0.1e3*X)+0.4000000000e-1*Y[2]^2*cos(0.1e3*X); YP[2] := -0.8e-1*Y[3]*cos(0.1e3*X)-0.3999999999e-1*Y[2]*cos(0.1e3*X)*Y[1]; YP[3] := 0.8e-1*Y[2]*cos(0.1e3*X)-0.3999999999e-1*Y[3]*cos(0.1e3*X)*Y[1]; 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] = x(t), Y[2] = y(t), Y[3] = z(t)]`; YP[1] := 0.4000000000e-1*Y[3]^2*cos(0.1e3*X)+0.4000000000e-1*Y[2]^2*cos(0.1e3*X); YP[2] := -0.8e-1*Y[3]*cos(0.1e3*X)-0.3999999999e-1*Y[2]*cos(0.1e3*X)*Y[1]; YP[3] := 0.8e-1*Y[2]*cos(0.1e3*X)-0.3999999999e-1*Y[3]*cos(0.1e3*X)*Y[1]; 0 end proc, -1, 0, 0, 0, 0, 0, 0]), ( 22 ) = (0), ( 23 ) = (0), ( 20 ) = ([]), ( 21 ) = (0), ( 24 ) = (0)  ] ))  ] ); _y0 := Array(0..3, {(1) = 0., (2) = 0.1e-1, (3) = 1.}); _vmap := array( 1 .. 3, [( 1 ) = (1), ( 2 ) = (2), ( 3 ) = (3)  ] ); _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 _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 <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 _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 <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 _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(1..4, {(1) = 18446747211248885846, (2) = 18446747211248886110, (3) = 18446747211248886286, (4) = 18446747211248886462}), (3) = [t, x(t), y(t), z(t)], (4) = []}); _solnproc := _dat[1]; _pars := map(rhs, _dat[4]); if not type(_xout, 'numeric') then if member(t, ["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(t, '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(t, ["last", 'last', "initial", 'initial', NULL]) then _res := _solnproc(convert(t, 'string')); if type(_res, 'list') then return _res[2] else return NULL end if elif member(t, ["parameters", 'parameters', "initial_and_parameters", 'initial_and_parameters', NULL]) then _xout := convert(t, 'string'); _res := _solnproc(_xout); if _xout = "parameters" then return [seq(_pars[_i] = _res[_i], _i = 1 .. nops(_pars))] else return [_res[2], seq(_pars[_i] = [_res][2][_i], _i = 1 .. nops(_pars))] end if elif type(_xout, `=`) and member(lhs(_xout), ["initial", 'initial', "parameters", 'parameters', "initial_and_parameters", 'initial_and_parameters', NULL]) then _xout := convert(lhs(t), 'string') = rhs(t); if lhs(_xout) = "initial" then if type(rhs(_xout), 'list') then _res := _solnproc(_xout) else _res := _solnproc("initial" = ["single", 2, rhs(_xout)]) end if elif not type(rhs(_xout), 'list') then error "initial and/or parameter values must be specified in a list" elif lhs(_xout) = "initial_and_parameters" and nops(rhs(_xout)) = nops(_pars)+1 then _res := _solnproc(lhs(_xout) = ["single", 2, op(rhs(_xout))]) else _res := _solnproc(_xout) end if; if lhs(_xout) = "initial" then return _res[2] elif lhs(_xout) = "parameters" then return [seq(_pars[_i] = _res[_i], _i = 1 .. nops(_pars))] else return [_res[2], 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(t), 'string') = rhs(t)) elif _xout = "solnprocedure" then return eval(_solnproc) elif _xout = "sysvars" then return _dat[3] end if; if procname <> unknown then return ('procname')(t) else _ndsol := `tools/gensym`("x(t)"); eval(FromInert(_Inert_FUNCTION(_Inert_NAME("assign"), _Inert_EXPSEQ(ToInert(_ndsol), _Inert_VERBATIM(pointto(_dat[2][2])))))); return FromInert(_Inert_FUNCTION(ToInert(_ndsol), _Inert_EXPSEQ(ToInert(t)))) end if end if; try _res := _solnproc(_xout); _res[2] catch: error  end try end proc, y(t) = proc (t) local _res, _dat, _solnproc, _xout, _ndsol, _pars, _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](t) else _xout := evalf(t) 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 .. 24, [( 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..58, {(1) = 3, (2) = 3, (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, (54) = 0, (55) = 0, (56) = 0, (57) = 0, (58) = 0}, datatype = integer[8])), ( 5 ) = (Array(1..28, {(1) = .0, (2) = 0.10e-5, (3) = .0, (4) = 0.500001e-14, (5) = .0, (6) = .12625459619411994, (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..3, {(1) = 0.1e-1, (2) = 1.0, (3) = .1}, 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..3, {(1) = .1, (2) = .1, (3) = .1}, datatype = float[8], order = C_order), Array(1..3, {(1) = .0, (2) = .0, (3) = .0}, datatype = float[8], order = C_order), Array(1..3, {(1) = .0, (2) = .0, (3) = .0}, datatype = float[8], order = C_order), Array(1..3, {(1) = .0, (2) = .0, (3) = .0}, datatype = float[8], order = C_order), Array(1..3, {(1) = .0, (2) = .0, (3) = .0}, datatype = float[8], order = C_order), Array(1..3, 1..3, {(1, 1) = .0, (1, 2) = .0, (1, 3) = .0, (2, 1) = .0, (2, 2) = .0, (2, 3) = .0, (3, 1) = .0, (3, 2) = .0, (3, 3) = .0}, datatype = float[8], order = C_order), Array(1..3, 1..3, {(1, 1) = .0, (1, 2) = .0, (1, 3) = .0, (2, 1) = .0, (2, 2) = .0, (2, 3) = .0, (3, 1) = .0, (3, 2) = .0, (3, 3) = .0}, datatype = float[8], order = C_order), Array(1..3, 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}, datatype = float[8], order = C_order), Array(1..3, {(1) = 0, (2) = 0, (3) = 0}, datatype = integer[8]), Array(1..3, {(1) = .0, (2) = .0, (3) = .0}, datatype = float[8], order = C_order), Array(1..3, {(1) = .0, (2) = .0, (3) = .0}, datatype = float[8], order = C_order), Array(1..3, {(1) = .0, (2) = .0, (3) = .0}, datatype = float[8], order = C_order), Array(1..3, {(1) = .0, (2) = .0, (3) = .0}, datatype = float[8], order = C_order), Array(1..3, {(1) = .0, (2) = .0, (3) = .0}, datatype = float[8], order = C_order), Array(1..6, {(1) = .0, (2) = .0, (3) = .0, (4) = .0, (5) = .0, (6) = .0}, datatype = float[8], order = C_order)]), ( 8 ) = ([Array(1..3, {(1) = 0.1e-1, (2) = 1.0, (3) = .1}, datatype = float[8], order = C_order), Array(1..3, {(1) = .0, (2) = .0, (3) = .0}, datatype = float[8], order = C_order), Array(1..3, {(1) = 0.404e-1, (2) = -0.83999999999e-2, (3) = 0.7996000000001e-1}, datatype = float[8], order = C_order), 0, 0]), ( 11 ) = (Array(1..6, 0..3, {(1, 1) = .0, (1, 2) = .0, (1, 3) = .0, (2, 0) = .0, (2, 1) = .0, (2, 2) = .0, (2, 3) = .0, (3, 0) = .0, (3, 1) = .0, (3, 2) = .0, (3, 3) = .0, (4, 0) = .0, (4, 1) = .0, (4, 2) = .0, (4, 3) = .0, (5, 0) = .0, (5, 1) = .0, (5, 2) = .0, (5, 3) = .0, (6, 0) = .0, (6, 1) = .0, (6, 2) = .0, (6, 3) = .0}, datatype = float[8], order = C_order)), ( 10 ) = ([proc (N, X, Y, YP) option `[Y[1] = x(t), Y[2] = y(t), Y[3] = z(t)]`; YP[1] := 0.4000000000e-1*Y[3]^2*cos(0.1e3*X)+0.4000000000e-1*Y[2]^2*cos(0.1e3*X); YP[2] := -0.8e-1*Y[3]*cos(0.1e3*X)-0.3999999999e-1*Y[2]*cos(0.1e3*X)*Y[1]; YP[3] := 0.8e-1*Y[2]*cos(0.1e3*X)-0.3999999999e-1*Y[3]*cos(0.1e3*X)*Y[1]; 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] = x(t), Y[2] = y(t), Y[3] = z(t)]`; YP[1] := 0.4000000000e-1*Y[3]^2*cos(0.1e3*X)+0.4000000000e-1*Y[2]^2*cos(0.1e3*X); YP[2] := -0.8e-1*Y[3]*cos(0.1e3*X)-0.3999999999e-1*Y[2]*cos(0.1e3*X)*Y[1]; YP[3] := 0.8e-1*Y[2]*cos(0.1e3*X)-0.3999999999e-1*Y[3]*cos(0.1e3*X)*Y[1]; 0 end proc, -1, 0, 0, 0, 0, 0, 0]), ( 22 ) = (0), ( 23 ) = (0), ( 20 ) = ([]), ( 21 ) = (0), ( 24 ) = (0)  ] ))  ] ); _y0 := Array(0..3, {(1) = 0., (2) = 0.1e-1, (3) = 1.}); _vmap := array( 1 .. 3, [( 1 ) = (1), ( 2 ) = (2), ( 3 ) = (3)  ] ); _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 _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 <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 _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 <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 _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(1..4, {(1) = 18446747211248885846, (2) = 18446747211248886110, (3) = 18446747211248886286, (4) = 18446747211248886462}), (3) = [t, x(t), y(t), z(t)], (4) = []}); _solnproc := _dat[1]; _pars := map(rhs, _dat[4]); if not type(_xout, 'numeric') then if member(t, ["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(t, '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(t, ["last", 'last', "initial", 'initial', NULL]) then _res := _solnproc(convert(t, 'string')); if type(_res, 'list') then return _res[3] else return NULL end if elif member(t, ["parameters", 'parameters', "initial_and_parameters", 'initial_and_parameters', NULL]) then _xout := convert(t, 'string'); _res := _solnproc(_xout); if _xout = "parameters" then return [seq(_pars[_i] = _res[_i], _i = 1 .. nops(_pars))] else return [_res[3], seq(_pars[_i] = [_res][2][_i], _i = 1 .. nops(_pars))] end if elif type(_xout, `=`) and member(lhs(_xout), ["initial", 'initial', "parameters", 'parameters', "initial_and_parameters", 'initial_and_parameters', NULL]) then _xout := convert(lhs(t), 'string') = rhs(t); if lhs(_xout) = "initial" then if type(rhs(_xout), 'list') then _res := _solnproc(_xout) else _res := _solnproc("initial" = ["single", 3, rhs(_xout)]) end if elif not type(rhs(_xout), 'list') then error "initial and/or parameter values must be specified in a list" elif lhs(_xout) = "initial_and_parameters" and nops(rhs(_xout)) = nops(_pars)+1 then _res := _solnproc(lhs(_xout) = ["single", 3, op(rhs(_xout))]) else _res := _solnproc(_xout) end if; if lhs(_xout) = "initial" then return _res[3] elif lhs(_xout) = "parameters" then return [seq(_pars[_i] = _res[_i], _i = 1 .. nops(_pars))] else return [_res[3], 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(t), 'string') = rhs(t)) elif _xout = "solnprocedure" then return eval(_solnproc) elif _xout = "sysvars" then return _dat[3] end if; if procname <> unknown then return ('procname')(t) else _ndsol := `tools/gensym`("y(t)"); eval(FromInert(_Inert_FUNCTION(_Inert_NAME("assign"), _Inert_EXPSEQ(ToInert(_ndsol), _Inert_VERBATIM(pointto(_dat[2][3])))))); return FromInert(_Inert_FUNCTION(ToInert(_ndsol), _Inert_EXPSEQ(ToInert(t)))) end if end if; try _res := _solnproc(_xout); _res[3] catch: error  end try end proc, z(t) = proc (t) local _res, _dat, _solnproc, _xout, _ndsol, _pars, _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](t) else _xout := evalf(t) 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 .. 24, [( 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..58, {(1) = 3, (2) = 3, (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, (54) = 0, (55) = 0, (56) = 0, (57) = 0, (58) = 0}, datatype = integer[8])), ( 5 ) = (Array(1..28, {(1) = .0, (2) = 0.10e-5, (3) = .0, (4) = 0.500001e-14, (5) = .0, (6) = .12625459619411994, (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..3, {(1) = 0.1e-1, (2) = 1.0, (3) = .1}, 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..3, {(1) = .1, (2) = .1, (3) = .1}, datatype = float[8], order = C_order), Array(1..3, {(1) = .0, (2) = .0, (3) = .0}, datatype = float[8], order = C_order), Array(1..3, {(1) = .0, (2) = .0, (3) = .0}, datatype = float[8], order = C_order), Array(1..3, {(1) = .0, (2) = .0, (3) = .0}, datatype = float[8], order = C_order), Array(1..3, {(1) = .0, (2) = .0, (3) = .0}, datatype = float[8], order = C_order), Array(1..3, 1..3, {(1, 1) = .0, (1, 2) = .0, (1, 3) = .0, (2, 1) = .0, (2, 2) = .0, (2, 3) = .0, (3, 1) = .0, (3, 2) = .0, (3, 3) = .0}, datatype = float[8], order = C_order), Array(1..3, 1..3, {(1, 1) = .0, (1, 2) = .0, (1, 3) = .0, (2, 1) = .0, (2, 2) = .0, (2, 3) = .0, (3, 1) = .0, (3, 2) = .0, (3, 3) = .0}, datatype = float[8], order = C_order), Array(1..3, 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}, datatype = float[8], order = C_order), Array(1..3, {(1) = 0, (2) = 0, (3) = 0}, datatype = integer[8]), Array(1..3, {(1) = .0, (2) = .0, (3) = .0}, datatype = float[8], order = C_order), Array(1..3, {(1) = .0, (2) = .0, (3) = .0}, datatype = float[8], order = C_order), Array(1..3, {(1) = .0, (2) = .0, (3) = .0}, datatype = float[8], order = C_order), Array(1..3, {(1) = .0, (2) = .0, (3) = .0}, datatype = float[8], order = C_order), Array(1..3, {(1) = .0, (2) = .0, (3) = .0}, datatype = float[8], order = C_order), Array(1..6, {(1) = .0, (2) = .0, (3) = .0, (4) = .0, (5) = .0, (6) = .0}, datatype = float[8], order = C_order)]), ( 8 ) = ([Array(1..3, {(1) = 0.1e-1, (2) = 1.0, (3) = .1}, datatype = float[8], order = C_order), Array(1..3, {(1) = .0, (2) = .0, (3) = .0}, datatype = float[8], order = C_order), Array(1..3, {(1) = 0.404e-1, (2) = -0.83999999999e-2, (3) = 0.7996000000001e-1}, datatype = float[8], order = C_order), 0, 0]), ( 11 ) = (Array(1..6, 0..3, {(1, 1) = .0, (1, 2) = .0, (1, 3) = .0, (2, 0) = .0, (2, 1) = .0, (2, 2) = .0, (2, 3) = .0, (3, 0) = .0, (3, 1) = .0, (3, 2) = .0, (3, 3) = .0, (4, 0) = .0, (4, 1) = .0, (4, 2) = .0, (4, 3) = .0, (5, 0) = .0, (5, 1) = .0, (5, 2) = .0, (5, 3) = .0, (6, 0) = .0, (6, 1) = .0, (6, 2) = .0, (6, 3) = .0}, datatype = float[8], order = C_order)), ( 10 ) = ([proc (N, X, Y, YP) option `[Y[1] = x(t), Y[2] = y(t), Y[3] = z(t)]`; YP[1] := 0.4000000000e-1*Y[3]^2*cos(0.1e3*X)+0.4000000000e-1*Y[2]^2*cos(0.1e3*X); YP[2] := -0.8e-1*Y[3]*cos(0.1e3*X)-0.3999999999e-1*Y[2]*cos(0.1e3*X)*Y[1]; YP[3] := 0.8e-1*Y[2]*cos(0.1e3*X)-0.3999999999e-1*Y[3]*cos(0.1e3*X)*Y[1]; 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] = x(t), Y[2] = y(t), Y[3] = z(t)]`; YP[1] := 0.4000000000e-1*Y[3]^2*cos(0.1e3*X)+0.4000000000e-1*Y[2]^2*cos(0.1e3*X); YP[2] := -0.8e-1*Y[3]*cos(0.1e3*X)-0.3999999999e-1*Y[2]*cos(0.1e3*X)*Y[1]; YP[3] := 0.8e-1*Y[2]*cos(0.1e3*X)-0.3999999999e-1*Y[3]*cos(0.1e3*X)*Y[1]; 0 end proc, -1, 0, 0, 0, 0, 0, 0]), ( 22 ) = (0), ( 23 ) = (0), ( 20 ) = ([]), ( 21 ) = (0), ( 24 ) = (0)  ] ))  ] ); _y0 := Array(0..3, {(1) = 0., (2) = 0.1e-1, (3) = 1.}); _vmap := array( 1 .. 3, [( 1 ) = (1), ( 2 ) = (2), ( 3 ) = (3)  ] ); _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 _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 <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 _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 <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 _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(1..4, {(1) = 18446747211248885846, (2) = 18446747211248886110, (3) = 18446747211248886286, (4) = 18446747211248886462}), (3) = [t, x(t), y(t), z(t)], (4) = []}); _solnproc := _dat[1]; _pars := map(rhs, _dat[4]); if not type(_xout, 'numeric') then if member(t, ["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(t, '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(t, ["last", 'last', "initial", 'initial', NULL]) then _res := _solnproc(convert(t, 'string')); if type(_res, 'list') then return _res[4] else return NULL end if elif member(t, ["parameters", 'parameters', "initial_and_parameters", 'initial_and_parameters', NULL]) then _xout := convert(t, 'string'); _res := _solnproc(_xout); if _xout = "parameters" then return [seq(_pars[_i] = _res[_i], _i = 1 .. nops(_pars))] else return [_res[4], seq(_pars[_i] = [_res][2][_i], _i = 1 .. nops(_pars))] end if elif type(_xout, `=`) and member(lhs(_xout), ["initial", 'initial', "parameters", 'parameters', "initial_and_parameters", 'initial_and_parameters', NULL]) then _xout := convert(lhs(t), 'string') = rhs(t); if lhs(_xout) = "initial" then if type(rhs(_xout), 'list') then _res := _solnproc(_xout) else _res := _solnproc("initial" = ["single", 4, rhs(_xout)]) end if elif not type(rhs(_xout), 'list') then error "initial and/or parameter values must be specified in a list" elif lhs(_xout) = "initial_and_parameters" and nops(rhs(_xout)) = nops(_pars)+1 then _res := _solnproc(lhs(_xout) = ["single", 4, op(rhs(_xout))]) else _res := _solnproc(_xout) end if; if lhs(_xout) = "initial" then return _res[4] elif lhs(_xout) = "parameters" then return [seq(_pars[_i] = _res[_i], _i = 1 .. nops(_pars))] else return [_res[4], 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(t), 'string') = rhs(t)) elif _xout = "solnprocedure" then return eval(_solnproc) elif _xout = "sysvars" then return _dat[3] end if; if procname <> unknown then return ('procname')(t) else _ndsol := `tools/gensym`("z(t)"); eval(FromInert(_Inert_FUNCTION(_Inert_NAME("assign"), _Inert_EXPSEQ(ToInert(_ndsol), _Inert_VERBATIM(pointto(_dat[2][4])))))); return FromInert(_Inert_FUNCTION(ToInert(_ndsol), _Inert_EXPSEQ(ToInert(t)))) end if end if; try _res := _solnproc(_xout); _res[4] catch: error  end try end proc]

(2)

#i want to have d/dt(x(t),d/dt(y(t),d/dt(z(t)

 

 

 

 

 

 

 

 

 

 

NULL


 

Download question.mw

First 900 901 902 903 904 905 906 Last Page 902 of 2434