Unknown parameters in ode

1 次查看(过去 30 天)
I am trying to solve an ode with an unknown parameter. I am not sure If I am doing it in the right way. 'Not enough input arguments'
tol = 10^-3; % Treshold
MAX = 100;
H = 0;
interval = [0.01 0.2]; % alpha interval
a = interval(1);
b = interval(2);
alpha = (a+b)/2;
v0=[1 0.01 1];
[z,v]=ode45(@rhs,interval,v0,alpha);
iter = 1;
while(abs((v(end, 2)) - H) > tol)
alpha= (a + b)/2;
[z,v]=ode45(@rhs,zspan,v0,alpha);
end
if(v(end, 2) - H > 0)
b = alpha;
else
a = alpha;
end
iter = iter + 1;
if(iter > MAX)
return;
end
function parameters=rhs(z,v,alpha)
da= 2*alpha-(v(1).*v(3))./(2*v(2).^2);
db= (v(3)./v(2))-(2*alpha*v(2)./v(1));
dc= -(2*alpha*v(3)./v(1));
parameters=[da;db;dc];
end

采纳的回答

Walter Roberson
Walter Roberson 2018-4-7
  4 个评论
Walter Roberson
Walter Roberson 2018-4-7
[z,v]=ode45(@(z,v)rhs(z,v,alpha),zspan,v0);
Notice that @(z,v)rhs(z,v,alpha) is an example of parameterizing a function just like is described in the link.
Dereje
Dereje 2018-4-7
I see it now. The code works as well as intended. Thanks a lot!!

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Ordinary Differential Equations 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by