How to change ode45 from solution for range of values, to solution just for one value?

1 visualizzazione (ultimi 30 giorni)
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?

Risposta accettata

madhan ravi
madhan ravi il 9 Gen 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 Commenti
I G
I G il 14 Gen 2019
Modificato: I G il 14 Gen 2019
If I would like to change boundaries, in way that z is going from 0 to 1, now it is from 1 to 0, for what value of beta are my initial conditions, which are now [1; 0; 0; 0]?
Because in case when I am looking from back, from 0, I got different number of values for every cell of p, and that is not ok for me? What would I do to have constant number - constant dimension for p as soluton? Now it is 93x4 values, 97x4 values, 101x4 values, 105x4 values.
madhan ravi
madhan ravi il 14 Gen 2019
It would be [0 1] but honestly I have no idea why the p number of values vary in every iteraration.

Accedi per commentare.

Più risposte (0)

Prodotti


Release

R2014a

Community Treasure Hunt

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

Start Hunting!

Translated by