Matlab ODE45 Help?

  1. Matlab ODE45 Help??

    function dy = prob_52 (t,y)
    dy = cos(y) - (sin (t)*y);

    [t,y] = ode45 (@prob_52,[0,1],0)
    plot (t,y)
    xlabel ('Time')
    ylabel ('Function Value')

    I was told my code is incorrect. Does anyone have suggestions on where I'm going wrong?

    Thanks
     
  2. jcsd
  3. Re: Matlab ODE45 Help??

    Not sure whats wrong with it. Probably you need a separate m-file for the function. If you need to include the function in your script try using function handle
    fun =@(t,y) cos(y) - (sin (t)*y);

    [t,y] = ode45 (fun,[0,1],0);
     
  4. Re: Matlab ODE45 Help??

    Thanks Matematikawan.

    Right now, I have a separate file named "Prob_52" that has the function and then a file with:
    [t,y] = ode45 (@prob_52,[0,1],0)
    plot (t,y)
    xlabel ('Time')
    ylabel ('Function Value')

    My professor is unable to run it, which makes it a fail. I'm wondering if this is because his computer can't "see" the Prob_52 file???

    I will change it to the way you have it. Do you know how I can test it before I submit it? This is my last shot. If this one doesn't work, I fail my Chem E course. :(

    When I save my files, etc, it's fine. But I *assume* that's because I have it "all" on my PC when I'm working.
     
  5. Re: Matlab ODE45 Help??

    I'm not an expert in matlab. Just able to run basic commands.

    I think you need to submit two m-files to your professor. One is your function m-file and the other is your script that contain ode45. If that doesn't works also, please check that your prof. matlab is not of lower version than your matlab.

    If you need to submit just one file then use the function handle as in my previous post.
     
  6. Re: Matlab ODE45 Help??

    That may be the case. MATLAB has an environment variable called the Path, which is the list of places it looks for files you tel it to run. The first place it looks is the Current Directory, which you set in the MATLAB gui or at the command line. If your prob_52.m file is not in MATLAB's current directory when you/your prof runs the script, it will not find the file.

    Since your problem is only a first order equation, it is possible to handle it is to use an anonymous function, as matematikawan suggested.

    Code (Text):

    prob_52 = @(t,y)cos(y) - (sin (t)*y);
    [t,y] = ode45 (prob_52,[0,1],0)
    plot (t,y)
    xlabel ('Time')
    ylabel ('Function Value')
     
    Note here in the call to ODE45, you don't use the @ symbol, because prob_52 is of class function_handle, which is what ODE45 takes in.
     
Know someone interested in this topic? Share this thead via email, Google+, Twitter, or Facebook

Have something to add?