怎么用MATLAB求解如Dy = y+1/y 的微分方程

2个回答

  • syms x y0

    >> y=dsolve('Dy=y+1/y','y(0)=y0','x')

    y =

    (-1+exp(2*x)*(1+y0^2))^(1/2)

    -(-1+exp(2*x)*(1+y0^2))^(1/2)

    >> help dsolve

    DSOLVE Symbolic solution of ordinary differential equations.

    DSOLVE('eqn1','eqn2',...) accepts symbolic equations representing

    ordinary differential equations and initial conditions.Several

    equations or initial conditions may be grouped together,separated

    by commas,in a single input argument.

    By default,the independent variable is 't'.The independent variable

    may be changed from 't' to some other symbolic variable by including

    that variable as the last input argument.

    The letter 'D' denotes differentiation with respect to the independent

    variable,i.e.usually d/dt.A "D" followed by a digit denotes

    repeated differentiation; e.g.,D2 is d^2/dt^2.Any characters

    immediately following these differentiation operators are taken to be

    the dependent variables; e.g.,D3y denotes the third derivative

    of y(t).Note that the names of symbolic variables should not contain

    the letter "D".

    Initial conditions are specified by equations like 'y(a)=b' or

    'Dy(a) = b' where y is one of the dependent variables and a and b are

    constants.If the number of initial conditions given is less than the

    number of dependent variables,the resulting solutions will obtain

    arbitrary constants,C1,C2,etc.

    Three different types of output are possible.For one equation and one

    output,the resulting solution is returned,with multiple solutions to

    a nonlinear equation in a symbolic vector.For several equations and

    an equal number of outputs,the results are sorted in lexicographic

    order and assigned to the outputs.For several equations and a single

    output,a structure containing the solutions is returned.

    If no closed-form (explicit) solution is found,an implicit solution is

    attempted.When an implicit solution is returned,a warning is given.

    If neither an explicit nor implicit solution can be computed,then a

    warning is given and the empty sym is returned.In some cases involving

    nonlinear equations,the output will be an equivalent lower order

    differential equation or an integral.

    Examples:

    dsolve('Dx = -a*x') returns

    ans = C1*exp(-a*t)

    x = dsolve('Dx = -a*x','x(0) = 1','s') returns

    x = exp(-a*s)

    y = dsolve('(Dy)^2 + y^2 = 1','y(0) = 0') returns

    y =

    [ sin(t)]

    [ -sin(t)]

    S = dsolve('Df = f + g','Dg = -f + g','f(0) = 1','g(0) = 2')

    returns a structure S with fields

    S.f = exp(t)*cos(t)+2*exp(t)*sin(t)

    S.g = -exp(t)*sin(t)+2*exp(t)*cos(t)

    dsolve('Dy = y^2*(1-y^2)') returns

    Warning:Explicit solution could not be found; implicit solution returned.

    ans =

    t+1/2*log(y-1)-1/2*log(y+1)+1/y+C1=0

    dsolve('Df = f + sin(t)','f(pi/2) = 0')

    dsolve('D2y = -a^2*y','y(0) = 1,Dy(pi/a) = 0')

    S = dsolve('Dx = y','Dy = -x','x(0)=0','y(0)=1')

    S = dsolve('Du=v,Dv=w,Dw=-u','u(0)=0,v(0)=0,w(0)=1')

    w = dsolve('D3w = -w','w(0)=1,Dw(0)=0,D2w(0)=0')

    y = dsolve('D2y = sin(y)'); pretty(y)

    See also solve,subs.

    Reference page in Help browser

    doc dsolve