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:

eq:=diff(y(x),x$2)+y(x)=0;
Order:=10;
dsolve({eq,y(0)=1,D(y)(0)=0},y(x),type='series');

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

dsolve({eq,y(0)=1,D(y)(0)=0},y(x),type='series',order=10);

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?

Thanks

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

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;

but

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?

 

Hello,

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:

-1.2*y''(t)+0.8*y(t)=2,

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

and can be numerically integrated in usual way:

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

0.6041717543123311

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

pic1

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

34.mw

``

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

(1)

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

(2)

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

(3)

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

(4)

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

(5)

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

[.1, .15, .2]

(6)

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

 

``

``

 

Download 34.mw

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.


NULL

restart

assume(m1 > 0);

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

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

(1)

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

(2)

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

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

(3)

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

(4)

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

(5)

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

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

(6)

ic1 := z1(0) = -2;

z1(0) = -2

(7)

ic2 := z2(0) = 0;

z2(0) = 0

(8)

ic3 := z3(0) = 1;

z3(0) = 1

(9)

ic4 := z4(0) = 0;

z4(0) = 0

(10)

ics := ic1, ic2, ic3, ic4;

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

(11)

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

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

 

var;

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

(12)

data:=(m1=1,m2=2,m3=1,c1=0,c2=0,c3=0,k1=5,k2=2,k3=2);

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

(13)

eqnsev := subs(data, eqns);

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

(14)

NULL


Download mae340_state_space_4-ode_system.mw

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:

H:=rhs(S1[2]); 

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

3

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:

P:=phi(x):
Q:=psi(x):

eq1:=a11*diff(P,x,x,x,x)+a22*diff(P,x,x)+a33*P+a44*diff(Q,x,x)+a55*Q:
eq2:=a44*diff(P,x,x)+a55*P+a66*diff(Q,x,x)+a77*Q:

eq1:=0:
eq2:=0:

The boundary values for this coupled equation are:
phi(a)=sigma1,phi(-a)=sigma1,diff(P,x)(a)=0,diff(P,x)(-a)=0,psi(a)=sigma2,psi(-a)=sigma2

Now consider:

a11:=6.36463*10^(-10):
a22:=-1.22734*10^(-9):
a33:=3.48604*10^(-10):
a44:=2.94881*10^(-11):
a55:=-5.24135*10^(-11):
a66:=-1.03829*10^(-9):
a77:=4.86344*10^(-10):
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.

Thanks

 

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

For example

ode:=diff(y(x),x)-a*(x^n-x)*y(x)^3-y(x)^2=0;
sol:=dsolve(ode,y(x));

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

odetest(sol,ode);

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.

 

 

 

 

Hello,

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.

 

Thanks!

Tim

 

Hello guys

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

P:=phi(x):
eq:=a11*diff(p,x,x,x,x)+a22*diff(p,x,x)+a33*p:
eq:=0:
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 :

a11:=2.731e-10:
a22:=-1.651e-9:
a33:=3.09027e-10:
a:=35.714:
sigma1:=200e6:

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.

Thanks

I have the following system I need to solve:

 

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

alpha(t)=alpha0*(x(t)-x0)

dx(t)/dt=y(t)-beta(t)

beta(t)=beta0*(x(t)-x0)

 

 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)

dsolve([sys_ode])

 

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