Maple 2024 Questions and Posts

These are Posts and Questions associated with the product, Maple 2024

This is an excersise in one of Mathematica's tutorials. The problem is to find from all persumtations of [1,2,3,4] those lists which has 2 in them before 3.

But the idea is that 2 can be anywhere before the 3, with possibly zero or more numbers between.

Will show how to do this in that other software, and ask if there is a way using Maple pattern matching or better way to do this in Maple better than what I did.

L=Permutations[{1,2,3,4}]
Cases[L,{___,2,___,3,___}]

gives

{{1, 2, 3, 4}, {1, 2, 4, 3}, {1, 4, 2, 3}, {2, 1, 3, 4}, 
{2, 1, 4,  3}, {2, 3, 1, 4}, {2, 3, 4, 1}, {2, 4, 1, 3}, 
{2, 4, 3, 1}, {4, 1,  2, 3}, {4, 2, 1, 3}, {4, 2, 3, 1}}

We see in all of the above, 2 is before 3.

In that other software, the ___ means there is zero or more things.  I could not find how to do this in Maple's pattern matching. So had to use has and then find the index of 2 and 3 in each list and check if the index of 2 is smaller than the index of 3. Which is kinda awakard and not as elegent as using a pattern, but it gives same result.

L:=combinat:-permute([1,2,3,4]);
map(X->`if`(has(X,2) and has(X,3) and ListTools:-Search(2,X)<ListTools:-Search(3,X),X,NULL) ,L);

Gives

[[1, 2, 3, 4], [1, 2, 4, 3], [1, 4, 2, 3], [2, 1, 3, 4], 
[2, 1, 4, 3], [2, 3, 1, 4], [2, 3, 4, 1], [2, 4, 1, 3], 
[2, 4, 3, 1], [4, 1, 2, 3], [4, 2, 1, 3], [4, 2, 3, 1]]

Can you suggest a way using either patmatch or applyrules in Maple to do the same?  

Could this be done easier than what I did using evalindents without the need for pattern?

I find patterns easier to work with myself.

ps. converting each list to string, and then using regular expression or string matching, is not what I am looking for. 

ps. the check in Maple code of has(X,2) and has(X,3) is not really needed here, since we know each list will have 2 and 3 in them. But I kept these to make it more general for other type of problems where these extra checks might be needed.

I am trying to create the plot for the dynamics of the discrete Klein - the equation gives Gordon equation (DKG) with friction for t=0 and t=3000.

As you can see below, creating the plot for t=0 is pretty easy. However, for t=3000, I tried to create a procedure to produce the desired plots, but when I ran the code, nothing happened. The worksheets are evaluated all the time. There are no results.

I am studying  for my thesis  the dynamics of the discrete Klein - the equation gives Gordon equation (DKG) with friction:

 

diff(U(t), t, t)-K(`U__n+!`-2*U__n+`U__n-1`)+delta*U__n+(D(W))(U__n) = 0, beta > 0, delta > 0

In the above equation, W describes the potential function:

W(U__n) = -(1/2)*`&omega;__d`^2*U__n^2+(1/4)*beta*`&omega;__d`^2*U__n^4

 

to which every coupled unit U__nadheres. In Eq. (1), the variable U__n(t)is the unknown displacement of the oscillator occupying the
n-th position of the lattice, and is the discretization parameter. We denote by the distance between the oscillators of the lattice. The chain (DKG) contains linear damping with a damping coefficient, while β s the coefficient of the nonlinear cubic term.

 

For the DKG chain (1), we will consider the problem of initial-boundary values, with initial conditions

 

U__n(0) = `U__n,0` and U__n(0) = `U__n,1` and `in`(`U__n,1`, 2*real^(k+2))

and Dirichlet boundary conditions at the boundary points x__0 = -(1/2)*Land "`x__k+1`=L/(2),"that is,

U__0 = `U__k+1` and `U__k+1` = 0, t >= 0*3

 

Therefore, when necessary, we will use the short notation `&Delta;__d`or the one-dimensional discrete Laplacian

`U__&Delta;__d__U__n&in;&Zopf;` = `U__Error loading this structure.`-2*U__n+4*`U__n-1`

 

We investigate numerically the dynamics of the system (1)-(2)-(3). Our first aim is to conduct a numerical study of the property of Dynamic Stability of the system, which directly depends on the existence and linear stability of the branches of equilibrium points. 

For the discussion of numerical results, it is also important to emphasize the role of the parameter `&omega;__d`By changing the time variable proc (t) options operator, arrow; 1/h end proc we rewrite Eq.(1) in the form

 

diff(U(t), t, t)-`&Delta;__d`*U(t)+(diff(delta(x), x))*U__n = `&Omega;__d`(-`&beta;U__n`^3+U__n)^2, t > 0, `&Omega;__d`^2 = h^2*`&omega;__d`^2, diff(delta(x), x) = `h&delta;`

 

The change in the scaling of the lattice parameter of the problem makes it important to comment here on the nature of the continuous and anti-continuous limit. For the anti-continuous limit, we need to consider the case in Eq. (1) where proc (`&omega;__d`) options operator, arrow; infinity end procIn the case of nonlinearity present in the governing equations, the continuous limit needs to be taken as well. On the other hand, for small values of the parameter, the system becomes significant. However, because of the model we consider, we take the asymptotic linear limit as

proc (`&omega;__d`) options operator, arrow; 0 end proc

 

We consider spatially extended initial conditions of the form:

U__n(0) = `U__n,0` and `U__n,0` = a*sin(`j&pi;hn`/L), j = 1, () .. K

 

where h = L/(K+1) is the distance of the grid and  a > 0 is the amplitude of the initial condition
We also assume zero initial velocity:

 

"(`U__n`(0)=`U__n,1`=0) "

 

• 

t=0

 

restart; with(plots); a := 2; j := 2; L := 200; K := 99; h := L/(K+1); n := Vector([`$`(-(1/2)*L+h*i, i = 0 .. K+1)]); U_n0 := a*map(proc (x) options operator, arrow; sin(j*Pi*x/L) end proc, h*n)

plot([seq([n[i], U_n0[i]], i = 1 .. K+2)], style = point, color = blue, axes = boxed, gridlines, grid = [true, true], labelfont = [TIMES, 12])

 

Now I am trying to create plot for different values of a.

a = {2, 1.82, 1.85, 1.9, 1.95}, K = 99, L = 200, beta = 1, delta = 0.5e-1, `&omega;__d`^2 = 1

restart; with(plots)

L := 200; K := 99; j := 2; omega_d := 1; beta := 1; delta := 0.5e-1

h := L/(K+1); n := Vector([`$`(-(1/2)*L+h*i, i = 0 .. K+1)])

dt := 0.5e-1; tmax := 3000; tspan := [seq(0+dt*i, i = 0 .. trunc(tmax/dt))]

NULL

a := 1; U0 := a*map(proc (x) options operator, arrow; sin(j*Pi*h*x/L) end proc, n); U0[1] := 0; U0[K+2] := 0; Udot0 := Vector(K+2, 0)

discrete_laplacian := proc (U) local i, Laplacian; Laplacian := Vector(K+2); for i from 2 to K+1 do Laplacian[i] := U[i+1]-2*U[i]+U[i-1] end do; Laplacian[1] := 0; Laplacian[K+2] := 0; return Laplacian end proc

NULL

U := U0; Udot := Udot0; for t to num_steps do Lap := discrete_laplacian(U); Ucube := map(proc (x) options operator, arrow; x^3 end proc, U); for i from 2 to K+1 do Udot[i] := Udot[i]+dt*(2*omega_d^2*U[i]-beta*Ucube[i]-delta*Udot[i]+Lap[i]) end do; for i from 2 to K+1 do U[i] := dt*Udot[i]+U[i] end do; U[1] := 0; U[K+2] := 0; if `mod`(t, 1000) = 0 then plotU := plot(n, U, style = line, color = blue, title = cat("Displacement at t=", t*dt), labels = ["n", "Displacement"], grid = [true, true]); display(plotU) end if end do

NULL


My target is the following plots

Download Numerical_Simulation_of_discrete_Klein-Gordon_Equation.mw

This is an example of what I need to display in Maple:

Notation

Is it possible to display boundary-conditions in Maple like this?

I tried to experiment with maple but I cannot type the lower and upper boundaries on top of each other. Unfortunately, they are not vertically aligned if I try to use superscript and subscript at the end of the right square bracket.

I hope there is a hack or a way to deal with this problem.

I know that the notation is a bit weird but that is how our teachers want us to display the intermediate calculations when we have to deliver our assignments. I know I could skip this intermidiate process but it is a tradition in my country to show the intermidiary calculations like I showed in the link.

Best regards.

applyrule is useful but seems limited. I can't do operation such as expand in the RHS of the rule.

For example, I wanted to applyrule that says to take sin(x::anything) and change it to cos(expand(x)), but it does not expand x. 

It seems because in the RHS of the rule, at the instance applyrule sees expand, x remains a symbol and not evaluated. So there is nothing to expand. It gets evaluated at later time, but by then too late for expand to do anything, it is gone. Just a guess.

But is there a trick to allow one to do more things in RHS of applyrule, such as expand or simplify? This would make applyrule much more useful. Otherwise, as it is, applyrule is of limited use. 

I know I can use evalindets ofcourse for this. 

#expand does not work in RHS of applyrule
e1:=sin(2*sqrt(a*b)*(t+mu));
applyrule( sin(x::anything) = cos(expand(x)), e1);

sin(2*(a*b)^(1/2)*(t+mu))

cos(2*(a*b)^(1/2)*(t+mu))

#but other operations worksheetdir
e1:=sin(2*sqrt(a*b)*(t+mu));
applyrule( sin(x::anything) = cos(x^2), e1);

sin(2*(a*b)^(1/2)*(t+mu))

cos(4*a*b*(t+mu)^2)

expand(2*sqrt(a*b)*(t+mu))

2*(a*b)^(1/2)*t+2*(a*b)^(1/2)*mu

#I could do this ofcourse
evalindets(e1,'specfunc'(sin),X->sin(expand(op(1,X))));

sin(2*(a*b)^(1/2)*t+2*(a*b)^(1/2)*mu)

 

 

Download apply_rule.mw


Using other software, there is no such problem using other operations on RHS of a rule

You see, expand worked on RHS of rule. 

I'd like to do same thing using applyrule in Maple. Is there a trick to allow this?

Maple 2024.1

I need to automatically extend or truncate a colour list to suit number of points in plottools:-point plot.
extending the list the colour sequence could be repeated or if the is too awkard just add black.
I can't figure out how to select the list of colours to put into a new list to modify.

This will be inside a plotting procedure.

restart

with(ListTools)

[BinaryPlace, BinarySearch, Categorize, Classify, Collect, Deal, DotProduct, Enumerate, FindMaximalElement, FindMinimalElement, FindRepetitions, Flatten, FlattenOnce, Group, Interleave, InversePermutation, Join, JoinSequence, LengthSplit, MakeUnique, Occurrences, Pad, PartialSums, Reverse, Rotate, Search, SearchAll, SelectFirst, SelectLast, Slice, Sorted, Split, Transpose, Unpermute]

(1)

L:=[[1,2],[3,4],[-5,6],[-3,-2]]

[[1, 2], [3, 4], [-5, 6], [-3, -2]]

(2)

qty:=nops(L)

4

(3)

styles:=[symbol=solidcircle,colour=[red,green,blue,orange],symbolsize=12]

[symbol = solidcircle, colour = [red, green, blue, orange], symbolsize = 12]

(4)

 

plots:-display(plottools:-point(L,styles[]))

 

#Need to extend or truncate the list of colours to match the number of points
#styles can be copied to styles 1,2 etc
#the extended list would be a repeatition of the colour sequence given
#would need to look for color or colour;

has(styles,colour); #how to select colour our into a seperate list?

true

(5)

#too few point for the colours;
L1:=[[1,2],[3,4],[-5,6]]

[[1, 2], [3, 4], [-5, 6]]

(6)

plots:-display(plottools:-point(L1,styles[]))

Error, (in Plot:-Structure:-Points) number of colors must match number of points

 

#too many point for the colours;
L2:=[[1,2],[3,4],[-5,6],[-3,-2],[6-1],[0,1]]

[[1, 2], [3, 4], [-5, 6], [-3, -2], [5], [0, 1]]

(7)

plots:-display(plottools:-point(L2,styles[]))

Error, (in plottools:-point) incorrect arguments for creating points structure, try providing the dimension option

 
 

 

Download 2024-09-06_Q_Extend_or_Truncate_List_of_Colours.mw

How do I mute the action of an accent applied to a symbol so that the accented symbol is itself an inert object? See the attached example.

How_do_I_make_an_accented_symbol_inert.mw
 

As a newbie in Maple2024, my next step is to try to solve a Diophantine equation. Attempts with isolve failed. It is the famous task B3 from the IMO of 1988:

If for integers x and y the fraction (x^2+y^2)/(1+x*y) is a positive integer, then it is actually a square number.

The solution is well known. But I would like to learn how to use Maple using this example and would like some advice.

Best regards, Alfred_F

I was trying to odetest one of my solutions to this ode when I got this internal Maple error I have not seen before.

Is this a legitimate error? my solution could be wrong ofcourse but strange to get internal error in this case.

Does this happen on earlier versions of Maple?

interface(version);

`Standard Worksheet Interface, Maple 2024.1, Windows 10, June 25 2024 Build ID 1835466`

Physics:-Version();

`The "Physics Updates" version in the MapleCloud is 1798 and is the same as the version installed in this computer, created 2024, August 29, 14:22 hours Pacific Time.`

libname;

"C:\Users\Owner\maple\toolbox\2024\Physics Updates\lib", "C:\Program Files\Maple 2024\lib"

restart;

sol:=Intat(1/(u^n/((1/((a*g(x)+b)^n)/(f(x)^n)*diff(g(x),x)*f(x))^(-n-1))/((f(x)*diff(g(x),x))^(-2*n+1))/((1/((a*g(x)+b)^n)/(f(x)^n)*diff(g(x),x)*f(x)*(diff(f(x),x)*diff(g(x),x)+f(x)*diff(diff(g(x),x),x))-(-1/((a*g(x)+b)^n)/(f(x)^n)*diff(g(x),x)^2*f(x)*n*a/(a*g(x)+b)-1/((a*g(x)+b)^n)/(f(x)^n)*diff(g(x),x)*n*diff(f(x),x)+1/((a*g(x)+b)^n)/(f(x)^n)*diff(diff(g(x),x),x)*f(x)+1/((a*g(x)+b)^n)/(f(x)^n)*diff(g(x),x)*diff(f(x),x))*f(x)*diff(g(x),x)-f(x)*diff(f(x),x)/((a*g(x)+b)^n)/(f(x)^n)*diff(g(x),x)^2*n)^n)/(n^(-n))-u+1),u = a/f(x)/(a*g(x)+b)*y(x))-ln(a*g(x)+b)+_C1 = 0;

Intat(1/(u^n/(((diff(g(x), x))*f(x)/((a*g(x)+b)^n*f(x)^n))^(-n-1)*(f(x)*(diff(g(x), x)))^(-2*n+1)*((diff(g(x), x))*f(x)*((diff(f(x), x))*(diff(g(x), x))+f(x)*(diff(diff(g(x), x), x)))/((a*g(x)+b)^n*f(x)^n)-(-(diff(g(x), x))^2*f(x)*n*a/((a*g(x)+b)^n*f(x)^n*(a*g(x)+b))-(diff(g(x), x))*n*(diff(f(x), x))/((a*g(x)+b)^n*f(x)^n)+(diff(diff(g(x), x), x))*f(x)/((a*g(x)+b)^n*f(x)^n)+(diff(g(x), x))*(diff(f(x), x))/((a*g(x)+b)^n*f(x)^n))*f(x)*(diff(g(x), x))-f(x)*(diff(f(x), x))*(diff(g(x), x))^2*n/((a*g(x)+b)^n*f(x)^n))^n*n^(-n))-u+1), u = a*y(x)/(f(x)*(a*g(x)+b)))-ln(a*g(x)+b)+_C1 = 0

ode:=diff(y(x),x)-f(x)^(1-n)*diff(g(x),x)*y(x)^n/((a*g(x)+b)^n)-diff(f(x),x)*y(x)/f(x)-f(x)*diff(g(x),x) = 0;

diff(y(x), x)-f(x)^(1-n)*(diff(g(x), x))*y(x)^n/(a*g(x)+b)^n-(diff(f(x), x))*y(x)/f(x)-f(x)*(diff(g(x), x)) = 0

odetest(sol,ode,y(x));

Error, (in PDEtools/NumerDenom) invalid input: PDEtools/NumerDenom expects its 1st argument, ee, to be of type Or(algebraic,table,rtable), but received {Intat(1/(u^n*(f(x)^(1-n)*diff(g(x),x)*(a*g(x)+b)^(-n))^n*(f(x)*diff(g(x),x))^(2*n)*n^n-u*(a*g(x)+b)^n*f(x)^n*(a*n*f(x)^(2-n)*diff(g(x),x)^3*(a*g(x)+b)^(-n-1))^n+(a*g(x)+b)^n*f(x)^n*(a*n*f(x)^(2-n)*diff(g(x),x)^3*(a*g(x)+b)^(-n-1))^n),u = _Z) = Intat(1/(u^n*(f(x)^(1-n)*diff(g(x),x)*(a*g(x)+b)^(-n))^n*(f(x)*diff(g(x),x))^(2*n)*n^n-u*(a*g(x)+b)^n*f(x)^n*(a*n*f(x)^(2-n)*diff(g(x),x)^3*(a*g(x)+b)^(-n-1))^n+(a*g(x)+b)^n*f(x)^n*(a*n*f(x)^(2-n)*diff(g(x),x)^3*(a*g(x)+b)^(-n-1))^n),u = _Z)}

 

 

Download internal_error_PDEtools_NumerDenom_sept_4_2024.mw

Is there a way to re-index an existing dataframe? See attachment for example.

how_do_i_re-index_a_dataframe.mw

Dear Power Users, Dataframes are a powerful tool within Maple. However, when I have 'undefined' in cells "Aggregate" or "DataSummary" does not provide answers. However, when I use "Statistics:-Mean" with the additional option "ignore=true" I can get an answer for one column (see attached worksheet). Adding "ignore" to aggregate apparently does not work. What is the method for ignoring the undefined data? In Excel when a cell is blank it will be ignored. Thank you for any help given.MP_Aggregate.mw

From a discussion about expanding unit expressions with compound units I concluded that expanding derived units such as Newton, Watt, Volt, Tesla,... to SI base units is difficult in Maple.

Unintentionally, I came across a rather simple solution for SI units.

toSIbu := x -> x = Units:-Unit(simplify(x/Unit('kg'))*Unit('kg'));

converts derived SI units to SI base units. It’s the inverse of what the units packages and simplify do (i.e. simplification to derived units).

What makes it maybe more interesting: It also works, again unintentionally, on other units than SI units. If, one day, you come along an erg or a hartree or or a kyne and you cannot guess the SI units convert/units needs, try

toSIbu(Unit('pound'));
toSIbu(Unit('hp'));
toSIbu(Unit('electron'));
toSIbu(Unit('hartree'));
toSIbu(Unit('bohr'));
toSIbu(Unit('barye'));
toSIbu(Unit('kyne'));
toSIbu(Unit('erg'));
toSIbu(Unit(mile/gal(petroleum)));

Maybe handy one day when you do not trust AI or the web.


 

NULL 

toSIbu := x -> x = Units:-Unit(simplify(x/Unit('kg'))*Unit('kg')):
toSIbu(Unit('N'));
toSIbu(Unit('J'));
toSIbu(Unit('W'));
toSIbu(Unit('Pa'));
toSIbu(Unit('C'));
toSIbu(Unit('F'));
toSIbu(Unit('S'));
toSIbu(Unit('H'));
toSIbu(Unit('T'));
toSIbu(Unit('V'));
toSIbu(Unit('Wb'));
toSIbu(Unit('Omega'));
toSIbu(Unit('lx'));
toSIbu(Unit('lm'));
toSIbu(Unit('degC'));
toSIbu(Unit('rad'));
toSIbu(Unit('sr'));

Units:-Unit(N) = Units:-Unit(m*kg/s^2)

 

Units:-Unit(J) = Units:-Unit(m^2*kg/s^2)

 

Units:-Unit(W) = Units:-Unit(m^2*kg/s^3)

 

Units:-Unit(Pa) = Units:-Unit(kg/(m*s^2))

 

Units:-Unit(C) = Units:-Unit(A*s)

 

Units:-Unit(F) = Units:-Unit(A^2*s^4/(m^2*kg))

 

Units:-Unit(S) = Units:-Unit(A^2*s^3/(m^2*kg))

 

Units:-Unit(H) = Units:-Unit(m^2*kg/(A^2*s^2))

 

Units:-Unit(T) = Units:-Unit(kg/(A*s^2))

 

Units:-Unit(V) = Units:-Unit(m^2*kg/(A*s^3))

 

Units:-Unit(Wb) = Units:-Unit(m^2*kg/(A*s^2))

 

Units:-Unit(`&Omega;`) = Units:-Unit(m^2*kg/(A^2*s^3))

 

Units:-Unit(lx) = Units:-Unit(cd/m^2)

 

Units:-Unit(lm) = Units:-Unit(cd)

 

Units:-Unit(`&deg;C`) = Units:-Unit(K)

 

Units:-Unit(rad) = Units:-Unit(m/m(radius))

 

Units:-Unit(sr) = Units:-Unit(m^2/m(radius)^2)

(1)

NULL


 

Download toSIbu.mw


(All done with Maple 2024 without loading any package)

 

 

 

Hello. I am trying to use the Remove() command to remove a column of a dataframe. I applied the command like its shown in the help section and I get an error. I don't see how I am applying this command incorrectly. Where am I going wrong? Below is a screenshot of the error output and the .mw file used to generate the output.

Remove_a_column_from_a_dataframe.mw

I attempted to create a phase plot using the Odeplot command in Maple, but the resulting plot isn't as smooth as I'd like. To improve the smoothness, I tried increasing the numpoints parameter to 20,000, but this resulted in the error message: [Length of output exceeds limit of 1000000]. What adjustments should I make to obtain a smoother phase plot without encountering this error?

 

restart;
r := 1;
b := 1;
c := 0.01;
a := 0.36;
mu := 0.4;
beta := 0.75;

sys := {diff(x(t), t) = r*x(t) - b*x(t)^2 - c*x(t)*y(t) - beta*x(t)*y(t)/(a + x(t)), diff(y(t), t) = -mu*y(t) + beta*x(t)*y(t)/(a + x(t))};
 
ics := {x(0) = 0.2, y(0) = 0.05};

sol := dsolve(sys union ics, {x(t), y(t)}, numeric, range = 0 .. 20000, maxfun = 0, output = listprocedure, abserr = 0.1e-7, relerr = 0.1e-7)

with(DEtools);
DEplot3d(sys, {x(t), y(t)}, t = 0 .. 20000, [[x(0) = 0.2, y(0) = 0.05]], maxfun = 0, numpoints = 35000, thickness = 1, linestyle = solid);
 

 

 

 

with(plots);
phaseplot := odeplot(sol, [x(t), y(t)], 0 .. 20000, numpoints = 10000, color = red, thickness = 2, axes = boxed, gridlines, title = "Phase-space Diagram");

 

 

Download extra_steps.mw

Today in class, we presented an exercise based on the paper titled "Analysis of regular and chaotic dynamics in a stochastic eco-epidemiological model" by Bashkirtseva, Ryashko, and Ryazanova (2020). In this exercise, we kept all parameters of the model the same as in the paper, but we varied the parameter β, which represents the rate of infection spread. The goal was to observe how changes in β impact the system's dynamics, particularly focusing on the transition between regular and chaotic behavior.

This exercise involves studying a mathematical model that appears in eco-epidemiology. The model is described by the following set of equations:

dx/dt = rx-bx^2-cxy-`&beta;xz`/(a+x)-a[1]*yz/(e+y)

dy/dt = -`&mu;y`+`&beta;xy`/(a+x)-a[2]*yz/(d+y)

" (dz)/(dt)=-mz+((c[1 ]a[1])[ ]xz)/(e[]+x)+((c[1 ]a[2])[ ]yz)/(d+y)"

 

where r, b, c, β, α,a[1],a[2], e, d, m, c[1], c[2], μ>0 are given parameters. This model generalizes the classic predator-prey system by incorporating disease dynamics within the prey population. The populations are divided into the following groups:

 

• 

Susceptible prey population (x): Individuals in the prey population that are healthy but can become infected by a disease.

• 

Infected prey population (y): Individuals in the prey population that are infected and can transmit the disease to others.

• 

Predator population (z): The predator population that feeds on both susceptible (x) and infected (y) prey.

 

The initial conditions are always x(0)=0.2, y(0)=0.05, z(0)=0.05,  and we will vary the parameter β.;

 

For this exercise, the parameters are fixed as follows:

 

"r=1,` b`=1,` c`=0.01, a=0.36 ,` a`[1]=0.01,` a`[2]=0.05,` e`[]=15,` m`=0.01,` d`=0.5,` c`[1]=2,` `c[2]==1,` mu`=0.4."

NULL

Task (a)

• 

Solve the system numerically for the given parameter values and initial conditions with β=0.6 over the time interval t2[0,20000].

• 

Plot the solutions x(t), y(t), and  z(t) over this time interval.

• 

Comment on the model's predictions, keeping in mind that the time units are usually days.

• 

Also, plot the trajectory in the 3D space (x,y,z).

 

restart

r := 1; b := 1; f := 0.1e-1; alpha := .36; a[1] := 0.1e-1; a[2] := 0.5e-1; e := 15; m := 0.1e-1; d := .5; c[1] := 2; c[2] := 1; mu := .4; beta := .6

sys := {diff(x(t), t) = r*x(t)-b*x(t)^2-f*x(t)*y(t)-beta*x(t)*y(t)/(alpha+x(t))-a[1]*x(t)*z(t)/(e+x(t)), diff(y(t), t) = -mu*y(t)+beta*x(t)*y(t)/(alpha+x(t))-a[2]*y(t)*z(t)/(d+y(t)), diff(z(t), t) = -m*z(t)+c[1]*a[1]*x(t)*z(t)/(e+x(t))+c[2]*a[2]*y(t)*z(t)/(d+y(t))}

{diff(x(t), t) = x(t)-x(t)^2-0.1e-1*x(t)*y(t)-.6*x(t)*y(t)/(.36+x(t))-0.1e-1*x(t)*z(t)/(15+x(t)), diff(y(t), t) = -.4*y(t)+.6*x(t)*y(t)/(.36+x(t))-0.5e-1*y(t)*z(t)/(.5+y(t)), diff(z(t), t) = -0.1e-1*z(t)+0.2e-1*x(t)*z(t)/(15+x(t))+0.5e-1*y(t)*z(t)/(.5+y(t))}

(1)

ics := {x(0) = .2, y(0) = 0.5e-1, z(0) = 0.5e-1}

{x(0) = .2, y(0) = 0.5e-1, z(0) = 0.5e-1}

(2)

NULL

sol := dsolve(`union`(sys, ics), {x(t), y(t), z(t)}, numeric, range = 0 .. 20000, maxfun = 0, output = listprocedure, abserr = 0.1e-7, relerr = 0.1e-7)

`[Length of output exceeds limit of 1000000]`

(3)

X := subs(sol, x(t)); Y := subs(sol, y(t)); Z := subs(sol, z(t))

``

plot('[X(t)]', t = 0 .. 20000, numpoints = 350, title = "Trajectory of x(t)", axes = boxed, gridlines, color = ["#40e0d0"])

 

plot('[Y(t)]', t = 0 .. 20000, numpoints = 350, title = "Trajectory", axes = boxed, gridlines, title = "Trajectory of y(t)", color = ["SteelBlue"])

 

``

plot('[Z(t)]', t = 0 .. 20000, numpoints = 350, title = "Trajectory", axes = boxed, gridlines, title = "Trajectory of Z(t)", color = "Black"); with(DEtools)

 

with(DEtools)

DEplot3d(sys, {x(t), y(t), z(t)}, t = 0 .. 20000, [[x(0) = .2, y(0) = 0.5e-1, z(0) = 0.5e-1]], numpoints = 35000, color = blue, thickness = 1, linestyle = solid)

 

Task (b)

• 

Repeat the study in part (a) with the same initial conditions but set β=0.61.

NULL

restart

r := 1; b := 1; f := 0.1e-1; alpha := .36; a[1] := 0.1e-1; a[2] := 0.5e-1; e := 15; m := 0.1e-1; d := .5; c[1] := 2; c[2] := 1; mu := .4; beta := .61

NULL

sys := {diff(x(t), t) = r*x(t)-b*x(t)^2-f*x(t)*y(t)-beta*x(t)*y(t)/(alpha+x(t))-a[1]*x(t)*z(t)/(e+x(t)), diff(y(t), t) = -mu*y(t)+beta*x(t)*y(t)/(alpha+x(t))-a[2]*y(t)*z(t)/(d+y(t)), diff(z(t), t) = -m*z(t)+c[1]*a[1]*x(t)*z(t)/(e+x(t))+c[2]*a[2]*y(t)*z(t)/(d+y(t))}

{diff(x(t), t) = x(t)-x(t)^2-0.1e-1*x(t)*y(t)-.61*x(t)*y(t)/(.36+x(t))-0.1e-1*x(t)*z(t)/(15+x(t)), diff(y(t), t) = -.4*y(t)+.61*x(t)*y(t)/(.36+x(t))-0.5e-1*y(t)*z(t)/(.5+y(t)), diff(z(t), t) = -0.1e-1*z(t)+0.2e-1*x(t)*z(t)/(15+x(t))+0.5e-1*y(t)*z(t)/(.5+y(t))}

(4)

NULL

ics := {x(0) = .2, y(0) = 0.5e-1, z(0) = 0.5e-1}

{x(0) = .2, y(0) = 0.5e-1, z(0) = 0.5e-1}

(5)

sol := dsolve(`union`(sys, ics), {x(t), y(t), z(t)}, numeric, range = 0 .. 20000, maxfun = 0, output = listprocedure, abserr = 0.1e-7, relerr = 0.1e-7)

`[Length of output exceeds limit of 1000000]`

(6)

X := subs(sol, x(t)); Y := subs(sol, y(t)); Z := subs(sol, z(t))

NULL

plot('[X(t)]', t = 0 .. 20000, numpoints = 350, title = "Trajectory of x(t)", axes = boxed, gridlines, color = ["Blue"])

 

plot('[Y(t)]', t = 0 .. 20000, numpoints = 350, title = "Trajectory of  Y(t)", axes = boxed, gridlines, color = "Red")

 

plot('[Z(t)]', t = 0 .. 20000, numpoints = 350, title = "Trajectory of  Y(t)", axes = boxed, gridlines, color = "Black")

 

NULL

with(DEtools)

DEplot3d(sys, {x(t), y(t), z(t)}, t = 0 .. 20000, [[x(0) = .2, y(0) = 0.5e-1, z(0) = 0.5e-1]], maxfun = 0, numpoints = 35000, color = blue, thickness = 1, linestyle = solid)

 

The rate of the infection spread is affected by the average number of contacts each person has (β=0.6) and increases depending on the degree of transmission within the population, in particular within specific subpopulations (such as those in rural areas). A detailed epidemiological study showed that the spread of infection is most significant in urban areas, where population density is higher, while in rural areas, the rate of infection remains relatively low. This suggests that additional public health measures are needed to reduce transmission in densely populated areas, particularly in regions with high population density such as cities

``

Download math_model_eco-epidemiology.mw

Hello,

I'm having trouble updating an old Maple package to work with the latest version of Maple. In the package, there are several commands that modify predefined procedures and then rename them (see the example below). I need to save all these new procedures to a text file so I can further modify them and better understand their functionality. How can I achieve this?

d_remset := subs(`class`=`d_class`,`remseta`=`d_remseta`,`premas`=`d_premas`,op(`remset`)):

remset is a procedure previously defined.  

Many thanks.

Obs.: If you have a better idea on how to deal with the procdures, please let me know. 

First 23 24 25 26 27 28 29 Last Page 25 of 42