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

[MATLAB] Simple Undamped Forced Vibration Problem

  1. Jul 31, 2014 #1
    Hi Folks,

    I am trying to replicate a solution in Matlab for the following problem ##\displaystyle \ddot x + \frac{k}{m}x = \frac{F_o}{m} \sin w_ot##

    using 2 first order linear differential equations in Matlab as shown below

    tspan=[0 4];
    y0=[.02;1]; %Initial Conditions for y(1)=x and y(2)= x dot
    [t,y]=ode45(@forced1,tspan,y0); %Calls forced1.m
    plot(t,y(:,2)); %y(:,1) represents the displacement and y(:,2) the velocity
    grid on
    title('Displacement Vs Time')
    hold on;

    function yp = forced1(t,y)

    yp = [y(2);(((f/m)*sin(w*t))-((k/m)*y(1)))];

    The problem is I dont know whether Matlab considers both the complementary and particular solution. THe theoretical solution is given as

    ##\displaystyle x=A \sin w_nt +B \cos w_nt+ \frac{\frac{F_o}{k}}{1-(\frac{w_o}{w_n})^2} \sin w_ot##

    where the 3rd term is the particular solution assumed of the form ##x_p=C \sin w_o t##. I am not sure how to implement this correctly in Matlab

    Any ideas?

  2. jcsd
  3. Aug 7, 2014 #2


    User Avatar
    Gold Member

    Have you confirmed that MATLAB isn't giving you this answer back? It should be easy to check the output of ode45 against that form with a few plots.

    Does that particular solution arise as a result of boundary conditions?
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook