Solving nonlinear differential system from matlab website giving error

1 view (last 30 days)
Hi community members! I have been trying to solve a nonlinear differential system for work and to learn, copied in the exact code from a tutorial found at: http://www.mathworks.com/help/matlab/ref/ode45.html (Example 1) Whenever I try to run it, my Matlab gives me an error at line 3:
Any help on this would be deeply appreciated. I am basically looking to solve the system numerically since analytically seems impossible. If somebody has a better way of doing this, that would be much appreciated. Thanks in advance!

Answers (1)

Mischa Kim
Mischa Kim on 26 Jun 2014
Edited: Mischa Kim on 26 Jun 2014
Devansh, use
function myODE()
options = odeset('RelTol',1e-4,'AbsTol',[1e-4 1e-4 1e-5]);
a = 1; b = 2; c = 3;
params = [a; b; c];
[T,Y] = ode45(@rigid,[0 12],[0 1 1],options,params);
plot(T,Y(:,1),'-',T,Y(:,2),'-.',T,Y(:,3),'.')
end
function dy = rigid(t,y,params)
a = params(1);
b = params(1);
c = params(1);
dy = zeros(3,1); % a column vector
dy(1) = a*y(2) * y(3);
dy(2) = -b*y(1) * y(3);
dy(3) = -c*0.51 * y(1) * y(2);
end
and save the entire file as myODE.m.
  • You are basically working with two functions: the main function ( myODE ) and the function defining the differential equations. Make sure to complete each function with an end-command.
  • The parameters ( a,b,c ) need to be passed to the second function. I am using a vector called params.

Categories

Find more on Systems of Nonlinear Equations in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!