Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Matlab Second Derivative Ploting Problem

  1. Dec 5, 2004 #1
    Hello, this is my first post in this site, so here goes:

    Im working on a Matlab program. I have to calculate the second derivative of a given equation. The problem is that plotting the derivative is necessary, and that's where I'm stuck.

    Here's what I've got so far:

    % Evaluar f(x) y f'(x) usando diferencias hacia atras.
    x = -10:0.1:10;
    f = x.^3 - 5*x.^2 + 2*x + 8;
    df = diff(f);
    dx = diff(x);
    df_dx = df./dx;
    xd = x(2:length(x));
    d2f = diff(f,2);
    d2x = diff(f,2);
    d2f_d2x = d2f./d2x;
    % Graficar lo anterior.
    title('Derivada de un polinomio de quinto grado'),...

    On the internet I found out that diff(f,2) would calculate the second diff, I guess thats true. Ignore the spanish text :P.

    When I try to run the program, the following appears:

    ??? Error using ==> plot
    Vectors must be the same lengths.

    Error in ==> C:\MATLAB6p5\work\segunda_diferencial.m
    On line 16 ==> plot(x,f,xd,df_dx,xd,d2f_d2x),...

    Hope you can help.

  2. jcsd
  3. Dec 6, 2004 #2


    User Avatar
    Science Advisor
    Gold Member

    De donde eres? Casi no se nota que hablas español.

    Well, the command line "diff" shortens one dimension the array:

    [tex] diff (\overline{x})=[x_2-x_1, x_3-x_2,....x_n-x_{n-1}] [/tex]

    you will obtain a n-1 array dimension.

    You should interpolate the last component from interior ones, in order to have n components.

    With diff2 is the same, surely you will obtain n-2 components.
  4. Dec 6, 2004 #3
    Gracias! Soy del norte de México.

    In fact, I can graph the first diff, though what you say does make sense, as with every consecutive derivative one constant term will dissappear.

    Interpolate? As with 'interp1'? The last component? d2f_d2x in my code?

    Casi no se nada de Matlab :(

    Thanks for that, I will try it out, hope I understood you...
  5. Dec 6, 2004 #4
    Ok, I got it! Thanks though.
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook