How to change ode45 from solution for range of values, to solution just for one value?
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
I G
am 9 Jan. 2019
Kommentiert: madhan ravi
am 14 Jan. 2019
I have next function file:
function [f,R]=fun_z3(z,p)
beta=1;
ri=0.7;
R=ri-z*(ri-1);
f=zeros(4,size(p,2));
f(1,:)=-32.*beta./(R.^4.*p(1,:));
f(2,:)=(-8*f(1,:)./R-f(1,:).*p(2,:))./p(1,:);
f(3,:)=(-p(2,:).*f(2,:)-8.*f(2,:)./R-8.*f(1,:)./(R.*R.*p(1,:))-f(1,:).*p(3,:))./p(1,:);
f(4,:)=(-f(2,:).*p(3,:)-f(3,:).*p(2,:)+8.*(-f(3,:)./R- (f(2,:)./p(1,:)-p(2,:).*f(1,:)./(p(1,:).*p(1,:)))./(R.*R)) -f(1,:).*p(4,:))./p(1,:);
where I call it with
[zv, pv] = ode45(@fun_z3, [1 0], [1; 0; 0; 0]);
Now, I need to calculate pv, but just in case where zv=0 (in upper file zv=1:0), but for series of beta values. When I change boundaries for z, it means [1 0] to [0 0] or [0], I got some errors. Is it possible implement series of beta values just as range of values?
0 Kommentare
Akzeptierte Antwort
madhan ravi
am 9 Jan. 2019
Just parameterize function (lookup doc):
beta=....range of values
for beta = beta
ode45(@(z,p)fun_z3(z,p,beta), [1 0], [1; 0; 0; 0])]; % function call
end
function [f,R]=fun_z3(z,p,beta) % function definition
ri=0.7;
R=ri-z*(ri-1);
f=zeros(4,size(p,2));
f(1,:)=-32.*beta./(R.^4.*p(1,:));
f(2,:)=(-8*f(1,:)./R-f(1,:).*p(2,:))./p(1,:);
f(3,:)=(-p(2,:).*f(2,:)-8.*f(2,:)./R-8.*f(1,:)./(R.*R.*p(1,:))-f(1,:).*p(3,:))./p(1,:);
f(4,:)=(-f(2,:).*p(3,:)-f(3,:).*p(2,:)+8.*(-f(3,:)./R- (f(2,:)./p(1,:)-p(2,:).*f(1,:)./(p(1,:).*p(1,:)))./(R.*R)) -f(1,:).*p(4,:))./p(1,:);
end
4 Kommentare
madhan ravi
am 14 Jan. 2019
It would be [0 1] but honestly I have no idea why the p number of values vary in every iteraration.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Ordinary Differential Equations finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!