Symbolic math in Matlab
August 10, 2011 at 04:16 PM | categories: symbolic | View Comments
Symbolic math in Matlab
Matlab has some capability to perform symbolic math.
Contents
Solve the quadratic equation
syms a b c x % this declares a b c and x to be symbolic variables f = a*x^2 + b*x + c solution = solve(f,x)
f = a*x^2 + b*x + c solution = -(b + (b^2 - 4*a*c)^(1/2))/(2*a) -(b - (b^2 - 4*a*c)^(1/2))/(2*a)
the solution you should recognize in the form of although Matlab does not print it this nicely!
pretty(solution) % this does a slightly better ascii art rendition
+- -+ | 2 1/2 | | b + (b - 4 a c) | | - ------------------- | | 2 a | | | | 2 1/2 | | b - (b - 4 a c) | | - ------------------- | | 2 a | +- -+
differentiation
you might find this helpful!
diff(f) % first derivative diff(f,2) % second derivative
ans = b + 2*a*x ans = 2*a
diff(f,a) % derivative of f with respect to a
ans = x^2
integration
int(f)
int(f, 0, 1) % definite integral from 0 to 1
ans = (a*x^3)/3 + (b*x^2)/2 + c*x ans = a/3 + b/2 + c
Analytically solve a simple ODE
ode = 'Dy = y'; % note the syntax: Dy = dydx init = 'y(0)=1'; independent_variable = 'x'; y = dsolve(ode, init, independent_variable)
y = exp(x)
evaluate the solution at a few places
say x=4 using the subs command.
subs(y,4)
ans = 54.5982
we can also evaluate it on a range of values, say from 0 to 1.
x = 0:0.1:1; Y = subs(y,x); plot(x,Y) xlabel('x values') ylabel('y values') title('Solution to the differential equation y''(x) = y(x)')
Warning! this note is in the dsolve documentation
Note By default, the solver does not guarantee general correctness and completeness of the results. If you do not set the option IgnoreAnalyticConstraints to none, always verify results returned by the dsolve command.
Let's see what this means
y1 = dsolve('Dy=1+y^2','y(0)=1') y2 = dsolve('Dy=1+y^2','y(0)=1',... 'IgnoreAnalyticConstraints','none')
y1 = tan(pi/4 + t) y2 = piecewise([C13 in Z_, tan(pi/4 + t + pi*C13)])
those solutions look different, but it isn't clear what do to with the second one.
see also: http://www.cs.utah.edu/~germain/PPS/Topics/Matlab/symbolic_math.html and http://www.mathworks.com/help/toolbox/symbolic/brvfu8o-1.html
% categories: Symbolic % tags: math