How to use ode45 to solve a system with many dimensions?

2 views (last 30 days)
Hi there,
I meet a interesting question——How to simulate a system with 100 dimensions using ode45?
Obviously, it's impossible to write all equations as below:
dx(1)=x(1)*(α(1)-a(1,1)*x(1)-a(1,2)*x(2)...)
dx(2)=x(2)*(α(2)-a(2,1)*x(1)-a(2,2)*x(2)...)
...
dx(100)=x(100)*(α(100)-a(100,1)*x(1)-a(100,2)*x(2)...)
Does there exist any tricks to solve this questions?
Looking forward to any suggestions~

Accepted Answer

James Tursa
James Tursa on 9 Jun 2017
If I understand your equations correctly, simply
dx = x .* (alpha - a*x);
  2 Comments
Choszit Lee
Choszit Lee on 10 Jun 2017
Thank you for your answer~Yesterday I have tried to generate a function as below:
function dxdt = MyFunc(t,x)
global a alpha
dxdt = x.*(alpha-a*x);
end
Then run ode45(MyFunc, [0 100], [2 1]) in my main function, I gain a error: Not enough input arguments. However, when I use dxdt=@(t,x)[x.*(alpha-a*x)] instead, it works well...This really puzzles me.
Walter Roberson
Walter Roberson on 10 Jun 2017
An error like that can be caused by using
ode45(MyFunc, .....)
instead of
ode45(@MyFunc, .....)

Sign in to comment.

More Answers (0)

Categories

Find more on 常微分方程 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!