Up

 

More notes on symbolic features of matlab by Nasser M. Abbasi

 

This below plots 2 functions on the same figure, giving each curve different color.

 

>> fplot(inline('x^2-x+3'),[-10:10],'r')

>> hold on;

>> fplot(inline('x^3-x'),[-10:10],'b')

 

This below finds the factor of a polynomial

 

>> f=sym('x^4-2*x^3+6*x^2-2*x+5');

>> factor(f)

 

ans =

 

(x^2+1)*(x^2-2*x+5)

 

To expand the above:

 

>> expand(ans)

 

ans =

 

x^4-2*x^3+6*x^2-2*x+5

 

 

Find horner representation:

 

>> horner(f)

 

ans =

 

5+(-2+(6+(-2+x)*x)*x)*x

 

Suppose you want to evaluate an expression for different values, one quick way to do this is to the use the eval command. For example:

 

>> help eval

 

 EVAL Execute string with MATLAB expression.

    EVAL(s), where s is a string, causes MATLAB to execute

    the string as an expression or statement.

 

>> func='x^2+3*y+4*z';

>> x=1; y=3; z=4;

>> eval(func)  <--- this use the current values of x,y,z

 

ans =

 

    26

 

>> x=2;

>> eval(func)

 

ans =

 

    29


 

You can use the command ‘numeric’ to numerically the output of ‘solve’ command:

 

>> f='x^2- 1/x =3'

 

f =

 

x^2- 1/x =3

 

>> solve(f)

 

ans =

 

[                                                                    1/2*(4+4*i*3^(1/2))^(1/3)+2/(4+4*i*3^(1/2))^(1/3)]

[ -1/4*(4+4*i*3^(1/2))^(1/3)-1/(4+4*i*3^(1/2))^(1/3)+1/2*i*3^(1/2)*(1/2*(4+4*i*3^(1/2))^(1/3)-2/(4+4*i*3^(1/2))^(1/3))]

[ -1/4*(4+4*i*3^(1/2))^(1/3)-1/(4+4*i*3^(1/2))^(1/3)-1/2*i*3^(1/2)*(1/2*(4+4*i*3^(1/2))^(1/3)-2/(4+4*i*3^(1/2))^(1/3))]

 

>> numeric(ans)

 

ans =

 

           1.87938524157182 +                1e-032i

          -1.53208888623796 +                3e-032i

         -0.347296355333861 -                3e-032i

 

>> 

 

To work numerically with polynomials:

 

P=[1 1 –3 –3]

 

Can be used to represent the polynomial ‘x^3 + x^2 –3x –3’

Notice that p(1) is the coeffient for the largest power of x term. So the order is left to right just as you would write the equation symbolically.

i.e. a3=1; a2=1; a1=-3; a0=-3

 

To evaluate P at some x do:

 

x=4;

y=polyval(p,x);

 

To numerically fit a polynomial over a set of data, use the command polyfit

>> help polyfit

 

 POLYFIT Fit polynomial to data.

    POLYFIT(X,Y,N) finds the coefficients of a polynomial P(X) of

    degree N that fits the data, P(X(I))~=Y(I), in a least-squares sense.


 

To find the derivative of polynomial

 

This below shows how to numerically differentiate a polynomial and plot the polynomial and its derivative

 

>> p=[1 1 -3 -3];

>> pder=polyder(p)

 

pder =

 

     3     2    -3

 

>> x=[-10:10];

>> y=polyval(p,x);

>> yder=polyval(pder,x);

>> plot(x,y); hold on; plot(x,yder,'--');

>> legend('f','diff(f)');