## Thomas Richard

Mr. Thomas Richard

## 3427 Reputation

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

## Memory requirement...

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.

## DEtools:-FindODE...

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.

## No!...

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

## Turn prettyprinting off...

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?

## Straightforward...

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
```

## fnormal...

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.

## Confirmed...

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

## Feature removed...

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.

## Yes...

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

## Same location as always...

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

## More complete substitution...

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...

`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 must be related to the new han...

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.

## Missing multiplications...

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.

## Conversion to phaseamp representation...

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...

## No simplify call needed...

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))

```

 4 5 6 7 8 9 10 Last Page 6 of 44
﻿