MATLAB ODE45 Help for Matlab: Fix Your Code Now

  • Thread starter Thread starter Mrs_ChemE
  • Start date Start date
  • Tags Tags
    Matlab Ode45
AI Thread Summary
The discussion revolves around troubleshooting a MATLAB code issue related to using the ODE45 function for solving a differential equation. The user initially provided a function definition and attempted to run it but encountered problems when their professor could not execute the code. Suggestions included ensuring that the function is saved in a separate m-file and verifying that the file is accessible in MATLAB's current directory. The importance of the MATLAB path variable was highlighted, as it determines where MATLAB looks for files. Additionally, using an anonymous function as an alternative was recommended, which simplifies the code and avoids issues with file visibility. The user was advised to test the modified code before submission to ensure it works correctly.
Mrs_ChemE
Messages
2
Reaction score
0
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
 
Physics news on Phys.org


Not sure what's 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);
 


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.
 


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.
 


Mrs_ChemE said:
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?

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:
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.
 

Similar threads

Replies
5
Views
2K
Replies
8
Views
2K
Replies
1
Views
2K
Replies
2
Views
3K
Replies
4
Views
1K
Replies
4
Views
4K
Back
Top