ode45 coupled first degree ODEs

I want to solve two coupled ODEs in matlab using ODE45, but get an error that says U"nable to perform assignment because the left and right sides have a different number of elements". I dont know really what the problem is here and have tried severad changes but did not fix it.
Code:
function dz = myode(v,z)
a = 0.4;
b = 0.001;
c = 0.001;
d = 0.9;
dz = zeros(2,1);
dz(1) = a*z(1)-b*z(2)*z(1);
dz(2) = c*z(1)*z(2)-diff(z(2));
end
I call it as:
[v z] = ode45(@myode,[0 40],[2 6])
Hope someone can help

댓글 수: 1

esat gulhan
esat gulhan 2020년 9월 17일
What is your differantial code. can you give your diff equation dz/dv....

댓글을 달려면 로그인하십시오.

답변 (1개)

Alan Stevens
Alan Stevens 2020년 9월 17일

0 개 추천

Do you mean something like this:
[v, z] = ode45(@myode,[0 40],[2 6]);
plot(v,z)
function dz = myode(~,z)
a = 0.4;
b = 0.001;
c = 0.001;
d = 0.9;
dz = [a*z(1)-b*z(2)*z(1);
c*z(1)*z(2)-d*z(2)];
end
You had diff(z(2)), but d was unused, so I assumed you meant d*z(2). However, this might not have been what you wanted!

댓글 수: 1

Serhat Unal
Serhat Unal 2020년 9월 17일
oh thank you I have just read it wrong and thought it was an derivative. Therefore It became very confusing but now it works, thanks!

댓글을 달려면 로그인하십시오.

태그

질문:

2020년 9월 17일

댓글:

2020년 9월 17일

Community Treasure Hunt

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

Start Hunting!

Translated by