Thomas Richard

Mr. Thomas Richard

3496 Reputation

13 Badges

14 years, 139 days
Maplesoft Europe GmbH
Technical professional in industry or government
Aachen, North Rhine-Westphalia, Germany

MaplePrimes Activity


These are answers submitted by Thomas Richard

I suppose it's about the third-order ODE found by FindODE (see here and here). That seems to be fairly complicated - it quickly exhausts all memory on my office laptops at least. But the dsolve call can reliably be cancelled, it does not hang.

By the way, you don't need to post separate questions if they are all about the same equation.

Since your examples involve univariate functions only, I guess you want to obtain ODEs (ordinary differential equations), not PDEs. In that case, take a look at Maple's FindODE routine in the DEtools package. Basic usage:

with(DEtools):
Phi := w -> (p1*exp(q1*w)+p2*exp(q2*w))/(p3*exp(q3*w)+p4*exp(q4*w));
ode := FindODE(Phi(w),y(w));

Please keep in mind that FindODE is restricted to certain types of ODEs; see its help page for more information.

Releasing a recording of a Sneak Preview would be counter-productive, wouldn't it? ;-)

If you set

interface(prettyprint=0):

before (default is 1 in command-line maple), and add the output=print option, does that work for you?

Before settung up the ODEs, insert

local I:

so that the expression I(t) will be interpreted as expected. This is needed because by default, I is the imaginary unit in Maple.

The solution process is straightforward, but takes a few minutes - at least on my old laptop here at home: I haven't tried to simplify the result.

odesys:=[Suscep,Vacc,Immun,Exp,Asymp,Inf,Quar]:
# infolevel[dsolve]:=2: # optional setting for diagnostic output
sol:=dsolve(odesys);
ot:=odetest(sol,odesys); # optional check, will return a list of 7 zeros

Numerical solution of nonlinear equations can often introduce so-called spurious (i.e. very small) imaginary parts when the solution is in fact real, and Maple's fnormal command is the easiest way to replace them by 0. (floating-point 0). The sign of that imaginary part may still contain valuable information, so Maple keeps it. Hence, to remove the remaining +0.*I or -0.*I, use simplify with option zero.

If that doesn't help for your particular equation, please upload your worksheet or post the complete input as code here.

I don't always get a KCL error, but I have submitted a bug report. Thanks for bringing this problem to our attention!

We deliberately removed that section because most of the submitted questions were unrelated to the help page topic, so they created too much internal overhead. [Yours were quite an exception.] If anyone has questions or remarks on a specific help topic, feel free to send them via the regular support channels. Discussing them here on MaplePrimes is also fine, of course.

I suppose you mean the Maple Personal Edition - yes, it's a perpetual license.

Please see here, easy to find from the Documentation Center start page.

I have not checked all steps in detail, but I think the substitution you applied (via eval) is incomplete so that JacobiSN calls remain in the result, thus it's going to be large...

What about this modification?

Eq3J := eval(Eq2J, [JacobiCN(eta,omega) = x, JacobiSN(eta,omega) = sqrt(1-x^2)]):

By the way, the identity check succeeds after simplifying:

is(simplify(JacobiSN(z,k)^2 + JacobiCN(z,k)^2) = 1);

 

The error could be related to the new handling of integration constants. But you must have manipulated the output of dsolve further (the sign of the the second term seems wrong.) If you simply feed it into odetest, that check will succeed as always, independent of the Maple version.

You will need to insert multiplication symbols in sys (for all three multiplications). This is a common trap that 2D users can fall into. My suggestion is to always enter those symbols even when implicit multiplication may work.

You could try

expr := convert(expr,‘phaseamp‘,t);

which yields the most compact form. However, I doubt that it will help much with using the maximize command...

I didn't feel like pinpointing which assumptions are needed in which step, so I turned them into global ones:

restart:
assume(y::real,x>0);
eq:=sqrt(exp(y))=tanh(x);
                             /1  \          
                    eq := exp|- y| = tanh(x)
                             \2  /          

sol:=solve(eq,y);
Warning, solve may be ignoring assumptions on the input variables.
                      sol := 2 ln(tanh(x))

 

5 6 7 8 9 10 11 Last Page 7 of 45