Asked by Tejas Adsul
on 15 May 2018

I have the following system of differential equations, and I am not able to understand the best way to go about them. I tried using a couple of functions like dsolve, ode45, etc., but most of them give errors that I am not able to understand.

x(1)=0.3; x(3)=0.9; y(1)=0.4; y(3)=0.8;

A=10; p=10;

syms X1 X2;

num = ((x(3)-X1)-(X1-x(1)))*X1 + ((y(3)-X2)-(X2-y(1)))*X2;

den = sqrt((x(3)-X1)-(X1-x(1))^2 + (y(3)-X2)-(X2-y(1))^2);

Em = -A*(X1-x(1))*(x(3)-X1) - A*(X2-y(1))*(y(3)-X2) + p*num/den;

dXdt = [-diff(Em,X1); -diff(Em,X2)];

I would like to get X1 and X2 as a function of time. If I define syms X1(t) and X2(t), I get the error 'All arguments, except for the first one, must not be symbolic functions.' The above code, when run, gives me expressions in terms of X1 and X2. I need solutions of X1 and X2 in terms of t, where dX1dt = -diff(Em,X1), dX2dt = -diff(Em,X2).

Any help is appreciated. Thank you!

Answer by Stephan
on 15 May 2018

Edited by Stephan
on 15 May 2018

Accepted Answer

Hi,

does this work for your purpose?

x1=0.3;

x3=0.9;

y1=0.4;

y3=0.8;

A=10;

p=10;

syms X_1 X_2 X1(t) X2(t);

num = ((x3-X_1)-(X_1-x1))*X_1 + ((y3-X_2)-(X_2-y1))*X_2;

den = sqrt((x3-X_1)-(X_1-x1)^2 + (y3-X_2)-(X_2-y1)^2);

Em = -A*(X_1-x1)*(x3-X_1) - A*(X_2-y1)*(y3-X_2) + p*num/den;

dEm_dX_1 = diff(Em,X_1);

dEm_dX_2 = diff(Em,X_2);

dEm_dX_1 = (subs(dEm_dX_1, [X_1 X_2], [X1 X2]));

dEm_dX_2 = (subs(dEm_dX_2, [X_1 X_2], [X1 X2]));

ode1 = diff(X1,t) == -dEm_dX_1;

ode2 = diff(X2,t) == -dEm_dX_2;

ode = matlabFunction([ode1; ode2])

ode is a function handle:

ode =

function_handle with value:

@(t)[diff(X1(t),t)==X1(t).*-2.0e1+(X1(t).*4.0e1-1.2e1).*1.0./sqrt(-X1(t)-X2(t)-(X2(t)-2.0./5.0).^2-(X1(t)-3.0./1.0e1).^2+1.7e1./1.0e1)+(X1(t).*2.0+2.0./5.0).*(X1(t).*(X1(t).*2.0-6.0./5.0).*1.0e1+X2(t).*(X2(t).*2.0-6.0./5.0).*1.0e1).*1.0./(-X1(t)-X2(t)-(X2(t)-2.0./5.0).^2-(X1(t)-3.0./1.0e1).^2+1.7e1./1.0e1).^(3.0./2.0).*(1.0./2.0)+1.2e1;diff(X2(t),t)==X2(t).*-2.0e1+(X2(t).*4.0e1-1.2e1).*1.0./sqrt(-X1(t)-X2(t)-(X2(t)-2.0./5.0).^2-(X1(t)-3.0./1.0e1).^2+1.7e1./1.0e1)+(X2(t).*2.0+1.0./5.0).*(X1(t).*(X1(t).*2.0-6.0./5.0).*1.0e1+X2(t).*(X2(t).*2.0-6.0./5.0).*1.0e1).*1.0./(-X1(t)-X2(t)-(X2(t)-2.0./5.0).^2-(X1(t)-3.0./1.0e1).^2+1.7e1./1.0e1).^(3.0./2.0).*(1.0./2.0)+1.2e1]

depending on time, which should be able to solve like you wanted to do.

Running it as a live script gives:

That's what you wanted to achieve?

Best regards

Stephan

Tejas Adsul
on 15 May 2018

Thank you very much! It helped a lot.

Stephan
on 15 May 2018

Please note that i have assumed initial conditions:

X1(0)=0

X2(0)=0

You have to check this...i dont have an idea if this is correct.

Best regards

Stephan

Tejas Adsul
on 16 May 2018

By the way, how did you write down the expression of ode(1) and ode(2) in the function odefun?

Sign in to comment.

Answer by Stephan
on 15 May 2018

Edited by Stephan
on 15 May 2018

Hi,

did i understand right:

x1=0.3;

x3=0.9;

y1=0.4;

y3=0.8;

A=10;

p=10;

syms X1 X2;

num = ((x3-X1)-(X1-x1))*X1 + ((y3-X2)-(X2-y1))*X2;

den = sqrt((x3-X1)-(X1-x1)^2 + (y3-X2)-(X2-y1)^2);

Em = -A*(X1-x1)*(x3-X1) - A*(X2-y1)*(y3-X2) + p*num/den;

dEm_dX1 = diff(Em,X1)

dEm_dX2 = diff(Em,X2)

dX1dt = -dEm_dX1

dX2dt = -dEm_dX2

This is what you wanted to do?

gives:

dX1dt =

(40*X1 - 12)/(17/10 - X2 - (X2 - 2/5)^2 - (X1 - 3/10)^2 - X1)^(1/2) - 20*X1 + ((2*X1 + 2/5)*(10*X1*(2*X1 - 6/5) + 10*X2*(2*X2 - 6/5)))/(2*(17/10 - X2 - (X2 - 2/5)^2 - (X1 - 3/10)^2 - X1)^(3/2)) + 12

dX2dt =

(40*X2 - 12)/(17/10 - X2 - (X2 - 2/5)^2 - (X1 - 3/10)^2 - X1)^(1/2) - 20*X2 + ((2*X2 + 1/5)*(10*X1*(2*X1 - 6/5) + 10*X2*(2*X2 - 6/5)))/(2*(17/10 - X2 - (X2 - 2/5)^2 - (X1 - 3/10)^2 - X1)^(3/2)) + 12

Can this be correct?

Best regards

Stephan

Tejas Adsul
on 15 May 2018

Sign in to comment.

Opportunities for recent engineering grads.

Apply Today
## 2 Comments

## Stephan (view profile)

Direct link to this comment:https://www.mathworks.com/matlabcentral/answers/400867-help-solving-a-system-of-differential-equations#comment_568307

## Tejas Adsul (view profile)

Direct link to this comment:https://www.mathworks.com/matlabcentral/answers/400867-help-solving-a-system-of-differential-equations#comment_568308

Sign in to comment.