how to pass varibles to the function while using ODE45

1 vue (au cours des 30 derniers jours)
Manish
Manish le 24 Fév 2019
Commenté : madhan ravi le 24 Fév 2019
hi
can someone tell me how to remove the variables in the function mentioned and include it in the arguments
function code
function out = pvar(ct,vector)
k =1.32;
Vd = 2;
r = 8.1;
R = 5.5;
P = vector(1);
W = vector(2);
Vc = Vd/(r-1);
V = Vc*(1+0.5*(r-1)*(R+1-cosd(ct)-((R^2)-((sind(ct))^2))^0.5));
dV = Vc*(r/2 - 1/2)*((pi*sin((pi*ct)/180))/180 + (pi*cos((pi*ct)/180)*sin((pi*ct)/180))/(180*(R^2 - sin((ct*pi)/180)^2)^(1/2)));
dPdt = -k*P*dV/V;
dWdt = P*dV;
out = [dPdt;dWdt;dV];
end
script
k =1.32;
Vd = 2;
r = 8.1;
R = 5.5;
IC = [112,0,Vc+Vd];
theta = [-180,0];
[ct,sol] = ode45(@pvar,theta,IC);

Réponse acceptée

madhan ravi
madhan ravi le 24 Fév 2019
  1 commentaire
madhan ravi
madhan ravi le 24 Fév 2019
k =1.32;
Vd = 2;
r = 8.1;
R = 5.5;
Vc = Vd/(r-1);
IC = [112,0,Vc+Vd];
theta = [-180,0];
[ct,sol] = ode45(@(ct,vector)pvar(ct,vector,k,Vd,r,R,Vc),theta,IC);
figure(1)
plot(ct,sol(:,1));
title('Pressure vs. Crank Angle')
xlabel('Crank Angle (deg)')
ylabel('Pressure (kPa)')
grid
figure(2)
plot(ct,sol(:,2));
title('Work vs. Crank Angle')
xlabel('Crank Angle (deg)')
ylabel('Work (kJ)')
grid
figure(3)
plot(sol(:,3),sol(:,1))
title('Pressure vs. Volume')
xlabel('Volume (l)')
ylabel('Presure (kPa)')
grid
function out = pvar(ct,vector,k,Vd,Vc,r,R)
P = vector(1);
W = vector(2);
V = Vc*(1+0.5*(r-1)*(R+1-cosd(ct)-((R^2)-((sind(ct))^2))^0.5));
dV = Vc*(r/2 - 1/2)*((pi*sin((pi*ct)/180))/180 + (pi*cos((pi*ct)/180)*sin((pi*ct)/180))/(180*(R^2 - sin((ct*pi)/180)^2)^(1/2)));
dPdt = -k*P*dV/V;
dWdt = P*dV;
out = [dPdt;dWdt;dV];
end

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

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

Start Hunting!

Translated by