Items tagged with dsolve dsolve Tagged Items Feed

I do not think the current API for dsolve when asking for series solution is done right. If one wants to obtain a series solution for an ODE, but wants different order than the default 6, now one must set this value using a global setting before making the call, like this:


It would be better if options to calls are passed along with the other parameters in the call itself. Something like


This should also apply to any command that takes Order, such as series(cos(x),x=0,order=10);

Passing options and values to functions using global and environment variables is not safe and not a good way to go about it as it can cause programming errors.

Hi I'm new to maple

I wanted to use dsolve to solve and equation but instead of getting an answer, maple returns an integration.

What could the promblem be?


I try to save results of numeric integration of ODE, returned by dsolve. I address very simple equation and before saving all works as needed:

S1 := dsolve([diff(z(x), x$2)+z(x) = -2, z(0)=0, z(1)=1], z(x), 'numeric', 'output' = listprocedure);

F1 := unapply(rhs(S1[2])(x), x); plot(F1, 0..1, thickness=3);

Next I save solution S1 by save operator:

save S1,  filename;

S1 saved and likely looks correctly:

S1 := [x = proc (x) local _res, _dat, _solnproc; option
`Copyright (c) 1993 by the University of Waterloo. All rights reserved.`; _dat
:= Array(1..4, {1 = proc (outpoint) local X, Y, YP, yout, errproc, L, V, i; ........................................................

Operator read reads S1 from file:
read filename;


F1 := unapply(rhs(S1[2])(x), x);

returns an error:

Error, (in unknown) invalid input: the 1st argument to pointto is not a valid pointer handle

How to save solution correctly?



I am trying to make c (0.001<=c<=0.02) a random value at each time step.But with my code c is choosing randomly from the interval then solveing the equation for fixed c at each time step.

How can I mack c a diffrent random value at each time step?

This is my code:

> with(DEtools); with(plots);
> Ra := RandomTools:-Generate(distribution(Uniform(0.001, 0.02))); c := Ra;
> f := .1;
> eq := diff(X(t), t) = 1-f-c*X(t);
> init := X(0) = 100;
> sol := dsolve({eq, init}, {X(t)}, range = 0 .. 100, numeric);
> odeplot(sol, [[t, X(t)]], t = 0 .. 100);


Thank you

I solve numerically very simple boundary value problem for the following ordinary diff. equation:


y(0)=1, y(1)=0.

So := dsolve([-1.2*diff(y(x), x$2)+0.8*y(x) = 2, y(0)=1, y(1)=0], y(x), 'numeric', 'output' = listprocedure);

Solution looks as needed

u := unapply(rhs(So[2])(x), x): plot(u(t), t=0 .. 1);

and can be numerically integrated in usual way:

evalf(int(u(t), t = 0..1));


But integral of u^2(t)  (evalf(int(u(t)^2, t = 0..1))) returns:


How to avoid this issue?

Dear All,

I am solving ODE with BC .. then im having this error.. (Error, (in dsolve/numeric/bvp/convertsys) unable to convert to an explicit first-order system)

Anyone could help me please?? :)


restart; with(plots); l := .1; M := .5; B := .6; c1 := 1; R := .5; Pr := .72; N := .5; rho := 1; Bt := .6; Ec := .5; lambda := .1; S := .5; blt := 5

Eq1 := diff(f(eta), eta, eta, eta)+f(eta)*(diff(f(eta), eta))-2*(diff(f(eta), eta))^2+2*l*B*(diff(F(eta), eta)-(diff(f(eta), eta)))-M*(diff(f(eta), eta))-A*(2*(diff(f(eta), eta))+eta*(diff(f(eta), eta))) = 0;

diff(diff(diff(f(eta), eta), eta), eta)+f(eta)*(diff(f(eta), eta))-2*(diff(f(eta), eta))^2+.12*(diff(F(eta), eta))-.62*(diff(f(eta), eta))-A*(2*(diff(f(eta), eta))+eta*(diff(f(eta), eta))) = 0


Eq2 := F(eta)*(diff(F(eta), eta))-2*(diff(F(eta), eta))^2+2*B*(diff(f(eta), eta)-(diff(F(eta), eta))-A*(eta*(diff(F(eta), eta))-2*(diff(F(eta), eta)))) = 0

F(eta)*(diff(F(eta), eta))-2*(diff(F(eta), eta))^2+1.2*(diff(f(eta), eta))-1.2*(diff(F(eta), eta))-1.2*A*(eta*(diff(F(eta), eta))-2*(diff(F(eta), eta))) = 0


Eq3 := (1+(4/3)*R)*(diff(theta(eta), eta, eta))+Pr*((diff(theta(eta), eta))*f(eta)-c1*(diff(f(eta), eta))*theta(eta))+2*N*Pr*Bt*(theta1(eta)-theta(eta))/rho+2*N*B*Pr*Ec*(diff(F(eta), eta)-(diff(f(eta), eta)))^2/rho-A*Pr*(4*theta(eta)+eta*(diff(theta(eta), eta)))+2*lambda*Pr*theta(eta)+Pr*Ec*(diff(f(eta), eta))^2 = 0;

1.666666667*(diff(diff(theta(eta), eta), eta))+.72*(diff(theta(eta), eta))*f(eta)-.72*(diff(f(eta), eta))*theta(eta)+.4320*theta1(eta)-.2880*theta(eta)+.21600*(diff(F(eta), eta)-(diff(f(eta), eta)))^2-.72*A*(4*theta(eta)+eta*(diff(theta(eta), eta)))+.360*(diff(f(eta), eta))^2 = 0


Eq4 := c1*(diff(F(eta), eta))*theta1(eta)-F(eta)*(diff(theta1(eta), eta))+2*gamma*Bt*(theta1(eta)-theta(eta))+A*(4*theta1(eta)+eta*(diff(theta1(eta), eta))) = 0;

(diff(F(eta), eta))*theta1(eta)-F(eta)*(diff(theta1(eta), eta))+1.2*gamma*(theta1(eta)-theta(eta))+A*(4*theta1(eta)+eta*(diff(theta1(eta), eta))) = 0


bcs1 := f(0) = S, (D(f))(0) = 1, (D(f))(blt) = 0, (D(F))(blt) = 0, F(blt) = f(blt)+blt*(D(f))(blt)-blt*(D(F))(blt), theta(0) = 1, theta(blt) = 0, theta1(blt) = 0;

f(0) = .5, (D(f))(0) = 1, (D(f))(5) = 0, (D(F))(5) = 0, F(5) = f(5)+5*(D(f))(5)-5*(D(F))(5), theta(0) = 1, theta(5) = 0, theta1(5) = 0


L := [.1, .15, .2];

[.1, .15, .2]


for k to 3 do R := dsolve(eval({Eq1, Eq2, Eq3, Eq4, bcs1}, A = L[k]), [f(eta), F(eta), theta(eta), theta1(eta)], numeric, output = listprocedure); Y || k := rhs(R[3]); YP || k := rhs(R[4]); YR || k := rhs(R[5]); YQ || k := rhs(R[6]); YA || k := rhs(R[7]) end do

Error, (in dsolve/numeric/bvp/convertsys) unable to convert to an explicit first-order system






Hi all,

I am trying to solve the following differential equation numerically using dsolve,


y * abs (y''') = -1

y(0) =1, y'(0) = 0, y''(0)=0


it works fine when tthe absolute function is not there, i.e. yy''' = -1. 

Do you have any suggestion?

I have solved ODE's with either i.c. or b.c. (mechanics stuff) where the results were in terms of expressions, not functions.  I could plot these expressions, substitute values in for parameters, etc. 

Then I thought that the real way to solve an ODE or system of ODE's was to define functions.  I wanted this to be in three levels: the solutions in generality, the solutions with i.c./m.c. applied, and then further with the parameter values defined. 

So far, no joy.  Lots of confusion--input eqns as sequence, list, set?  I looked on the Maple help page, thought I was doing things right. I even tried out "union" for the ode's and the ic's.

The code is below; statement (11) produces an error. Yes, I am using Maple 18, even though the file says Maple 15.  I'd like to solve the 4-ODE system at the three levels listed above, and then (if possible), plot the result! Am I asking too much?  Should I be using MapleSim or some other product instead?


Thanks for any and all help!


robert w.



assume(m1 > 0);

eqn1 := diff(z1(t), t) = z2(t);

diff(z1(t), t) = z2(t)


eqn2 := diff(z2(t), t) = -(k1+k2)*z1(t)/m1-(c1+c2)*z2(t)/m1+k2*z3(t)/m1+c2*z4(t)/m1;

diff(z2(t), t) = -(k1+k2)*z1(t)/m1-(c1+c2)*z2(t)/m1+k2*z3(t)/m1+c2*z4(t)/m1


eqn3 := diff(z3(t), t) = z4(t);

diff(z3(t), t) = z4(t)


eqn4 := diff(z4(t), t) = k2*z1(t)/m2+c2*z2(t)/m2-k2*z3(t)/m2-c2*z4(t)/m2;

diff(z4(t), t) = k2*z1(t)/m2+c2*z2(t)/m2-k2*z3(t)/m2-c2*z4(t)/m2


eqns := eqn1, eqn2, eqn3, eqn4;

diff(z1(t), t) = z2(t), diff(z2(t), t) = -(k1+k2)*z1(t)/m1-(c1+c2)*z2(t)/m1+k2*z3(t)/m1+c2*z4(t)/m1, diff(z3(t), t) = z4(t), diff(z4(t), t) = k2*z1(t)/m2+c2*z2(t)/m2-k2*z3(t)/m2-c2*z4(t)/m2


var := z1(t), z2(t), z3(t), z4(t);

z1(t), z2(t), z3(t), z4(t)


ic1 := z1(0) = -2;

z1(0) = -2


ic2 := z2(0) = 0;

z2(0) = 0


ic3 := z3(0) = 1;

z3(0) = 1


ic4 := z4(0) = 0;

z4(0) = 0


ics := ic1, ic2, ic3, ic4;

z1(0) = -2, z2(0) = 0, z3(0) = 1, z4(0) = 0


dsolve(`union`(eqns, ics), var)

Error, invalid input: `union` received diff(z1(t), t) = z2(t), which is not valid for its 1st argument



z1(t), z2(t), z3(t), z4(t)



m1 = 1, m2 = 2, m3 = 1, c1 = 0, c2 = 0, c3 = 0, k1 = 5, k2 = 2, k3 = 2


eqnsev := subs(data, eqns);

diff(z4(t), t) = z1(t)-z3(t)




Cannot calculate derivative (gradient) of a procedure returned by dsolve.

Say, I solve the equation:

S1 := dsolve([diff(y(x), x$2)-1.0325*diff(y(x), x)+1.36*y(x)=sin(2*x), y(0)=0, y(1)=1], numeric, y(x), 'output' = listprocedure);

Its solution easily can be retrieved and looks fine:


plot(H(t), t = 0..1, thickness = 4);


But when I try to calculate the gradient of H, I receive the error:

H1 := codegen[GRADIENT](H);

Error, (in intrep/statement) unable to translate Array(1..4, {(1) = proc (outpoint) local X, Y, YP, yout, errproc, L, V, i; option `Copyright (c) 2000 by Waterloo Maple Inc. All rights reserved.`; X := Vector(8, {(1) = .0, (2) = .14817993189456188, (3) = .31785812820433257, (4) = .47163479035679234, (5) = .6130306894371967, (6) = .7460958115245858, (7) = .8741894219027533, (8) = 1.0}, datatype = float[8], order = C_order); Y := Matrix(8, 2, {(1, 1) = .0, (1, 2) = .47692145669848085, (2, 1) = 0.7710429970702501e-1, (2, 2) = .5707930170882397, (3, 1) = .1866916935738028, (3, 2) = .7299040171277492, (4, 1) = .3128649714509215, (4, 2) = .9171936...

Gradient of procedures defined by  ":= proc()" is calculated properly.

Hello guys

I have a coupled linear differentional equation which are in the 4th order. they are shown in the below:




The boundary values for this coupled equation are:

Now consider:

when I use dsolve for deriving a good answer in this equation, there are six real roots .How can I solve it with these boundary condition?

I need to extract phi(x) and psi(x) from this coupled equation.



I am also not sure how to program a check in the code to determine that dsolve solved the differential equation.

For example


In this case, sol is () as it could not solve it. When I tried odetest, I get an error


Error, invalid input: odetest uses a 2nd argument, ODE, which is missing

What is the correct way to check dsolve was successful that will work for all cases? I am looking for programmable method, no GUI use.






I am trying to solve the boundary value problem (1-x^2)*y'' - 2*x*y' +12*y = 0 with y(-1) = -1 and y(1) = 1.  I have not used Maple much, but from some web surfing, it seems like the following inputs should work:

de := (1-x^2)*(diff(y(x), `$`(x, 2)))-2*x*(diff(y(x), x))+12*y(x) = 0

Y := dsolve(de, y(-1) = -1, y(1) = 1)

However, when I input these lines, I get the error: Error(in dsolve), found wrong extra argument(s): y(-1) = -1, y(1) = 1

Does this mean that Maple can't solve this problem?  Is my syntax wrong?  I would appreciate any help.





Hello guys

I have a linear differentional equation which is in the 4th order. It is shown in the below:

where a11 and a22 and a33 are constant coefficients. The boundary value for this equation is:

phi(a)=sigma1 , phi(-a)=sigma1 , diff(p,x)(a)=0 , diff(p,x)=0

Now consider :


when I use dsolve for deriving a good answer in this equation. there are four real roots .How can I solve it with these boundary condition?

I need to extract phi(x) from this equation.


I have the following system I need to solve:


dy(t)/dt = alpha(t)-y(t)





 I am trying to get functions of y(t) and x(t), so I can plot y(t), x(t) and alpha(t) as it changes over time.


I have tried using dsolve to no effect.  I define the inital conditions, I define the functions I am looking for and when I press enter dsolve doesn't return anything.  I also know all the constants and defined them as well.




Thank you.



So I am brand new to using Maple and am trying to solve a system of ODE's. When I try and use dsolve however I reciever the error "function expected" and I am not sure why. The code I have is as follows


sys_ode := diff(A(t), t) = a*(A(t)+B(t))-b1*A(t)*(C(t)+D(t))-g1*A(t)*B(t), diff(B(t), t) = -b2*B(t)*(C(t)+D(t))+g1*A(t)*B(t), diff(C(t), t) = e*(b1*A(t)+b2*B(t))*C(t)-g2*b2*C(t)*B(t)-g3*C(t)*D(t), diff(D(t), t) = g2*b2*C(t)*D(t)-m*D(t)



I'm sure it is something simple, but I just can't seem to figure out where the issue is. Any help is much appreciated.

1 2 3 4 5 6 7 Last Page 1 of 19