Solving Coupled Differential Equation

조회 수: 17 (최근 30일)
Harshit Agarwal
Harshit Agarwal 2017년 10월 23일
댓글: David Goodmanson 2017년 10월 24일
Hello,
I want to solve following differential equation:
(x^2+x+1) / (x^2+x) dx/dt + dy/dt = 1 with constraint x+x^2 = y+y^2
It involves derivatives of both x and y. How can I solve this in Matlab.
Thanks guys in advance!! Cheers

채택된 답변

Birdman
Birdman 2017년 10월 23일
syms y(t) x(t)
a=(x^2+x+1)/(x^2+x);
%%because of the constraint, x+x^2=y+y^2 ----> x+y=-1. Take the derivative wrt t and you will
%%find x_dot=-y_dot;
eqns=a*diff(x,t)-diff(x,t)==1;
X=dsolve(eqns,t)
Try this.
  댓글 수: 6
Torsten
Torsten 2017년 10월 24일
편집: Torsten 2017년 10월 24일
Differentiate the algebraic equation with respect to t.
The differential equation and the differentiated algebraic equation then give you a linear system of equations in the unknowns dx/dt and dy/dt. Solve it explicitly for dx/dt and dy/dt and then use one of the standard ODE integrators.
Or write your system as
M*[dx/dt ; dy/dt] = f(t,x,y)
with
M = [(x^2+x+1)/(x^2+x) 1 ; 0 0]
f = [1 ; x^2+y^2+x*y-10]
and use ODE15S with the state-dependent mass matrix option.
Best wishes
Torsten.
David Goodmanson
David Goodmanson 2017년 10월 24일
Why should x+x^2 = y+y^2 imply x+y = -1 only? x = y also works, in which case
eqns=a*diff(x,t)-diff(x,t)==1;
becomes
eqns=a*diff(x,t)+diff(x,t)==1;
in which case
Warning: Unable to find explicit solution. Returning implicit solution instead.
X = solve(2*x - 2*atanh(2*x + 1) == C2 + t, x)
Not as convenient as the first solution since t is given as a function of x rather than vice versa, but still a solution.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Numeric Solvers에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by