# Documentation

## Solve Algebraic and Differential Equations

This example shows how to solve algebraic and differential equations using Symbolic Math Toolbox™.

Solving Algebraic Equations

The solve function can handle a wide variety of algebraic equations, including both single equations and systems of equations. By default, the solver always tries to return a complete set of solutions, including complex solutions, if there are only finitely many. For example, the following polynomial has two real and two complex solutions.

```syms x xsol = solve(x^4 + x^3 - x == 1, x) ```
``` xsol = -1 1 - (3^(1/2)*1i)/2 - 1/2 (3^(1/2)*1i)/2 - 1/2 ```

Use indexing to select only the real solutions.

```xsol(xsol == real(xsol)) ```
``` ans = -1 1 ```

Some equations, such as those that include trigonometric elements, have an infinite number of solutions. For such equations, the solver returns only one solution from the infinite set.

```solve(sin(x) == 1, x) ```
``` ans = pi/2 ```

Solving Systems of Algebraic Equations

The solve function can also be used to solve systems of equations. Simply specify the system of equations and the variables to solve for.

```syms x y [x2, y2] = solve(y + x^2 == 1, x - y == 10) ```
``` x2 = - (3*5^(1/2))/2 - 1/2 (3*5^(1/2))/2 - 1/2 y2 = - (3*5^(1/2))/2 - 21/2 (3*5^(1/2))/2 - 21/2 ```

As with an individual equation, if a system has an infinite number of solutions, the solver returns only one solution.

```[x3, y3] = solve(exp(x + y) == 1, x - y == 1) ```
``` x3 = 1/2 y3 = -1/2 ```

In some cases, you can express the system of equations in a matrix form. For these cases, you can use the backslash operator of MATLAB® to solve the equations. Note that the result is a double precision number since the equations are solved numerically.

```A = [1 2; 3 4]; b = [5 6]'; x = A\b ```
```x = -4.0000 4.5000 ```

You can use the 'sym' command to solve the system exactly.

```sym(A)\b ```
``` ans = -4 9/2 ```

Solving Ordinary Differential Equations (ODEs)

You can solve various types of ordinary differential equations using the dsolve function. For example, solve the following second order linear ODE.

```syms y(t) D2y = diff(y,2); Dy = diff(y); dsolve(D2y + Dy + y == 0) ```
``` ans = C5*exp(-t/2)*cos((3^(1/2)*t)/2) + C6*exp(-t/2)*sin((3^(1/2)*t)/2) ```

You can specify initial conditions or boundary conditions along with an ODE.

```ysol = dsolve(D2y == 2*t/Dy, y(0) == 0, Dy(0) == 1) ```
``` ysol = (2^(1/2)*log(t + (t^2 + 1/2)^(1/2)))/4 - (2^(1/2)*log(2^(1/2)/2))/4 + (2^(1/2)*t*(t^2 + 1/2)^(1/2))/2 ```

You can visualize the solution to your differential equation using the ezplot function.

```ezplot(ysol) ```

Copyright 2009-2014 The MathWorks, Inc.

Was this topic helpful?

Get trial now