File returns a vector of length 29, but the length of initial conditions vector is 8.

1 view (last 30 days)
function ans = final_project()
CI_CO2 = [0,10];
Y0 = [0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,4.75,0.7];
options = odeset('RelTol', 1e-10,'AbsTol',[1e-10,1e-10,1e-10]);
[CI_CO2,VA] = ode45(@respiratory_model,CI_CO2,Y0,options);
plot(CI_CO2,VA)
function res = respiratory_model(CI_CO2,VA)
MT_CO2 = 0.221; MT_O2 = 0.221; MB_CO2 = 0.042; MB_O2 = 0.042; PB = 760;
k1 = 0.107; k2 = 0.415; k3 = 0.2; k4 = 0.05; k5 = 0.92; h = 820067507;
u = -148822662; v = 9.8949e+06; p = -2.7670e+05; q = 3.3179e+03; r = 43;
f = 0.003; s = 2.3; g = 98; W = 0.014; S = 0.024; a = 99; b = 19.6;
d = 0.0008; n = 3; m = 98; Q = 6; QB = 0.7; QBN = 1;
CB_CO2 = 55.9; CB_O2 = 0.110; CA_CO2 = 5.6; CA_O2 = 14.1; CT_CO2 = 54; CT_O2 = 0.134;
CI_O2 = 0.1967;
eq58 = MB_CO2 + QB*(k1*(PB*CA_CO2)^k2) - CB_CO2;
eq59 = MT_CO2 + (Q-QB)*(k1*(PB*CA_CO2)^k2-CT_CO2);
eq60 = QB*(CB_CO2-CT_CO2) + Q*(CT_CO2-k1*(PB*CA_CO2)^k2) + VA*(CI_CO2-CA_CO2);
eq61 = -MB_O2 + k3*QB*((1-exp(-k4*k5*PB*CA_O2))^2 - (1-exp(-k4*PB*CB_O2/S))^2);
eq62 = -MT_O2 + k3*(Q-QB)*((1-exp(-k4*k5*PB*CA_O2))^2 - (1-exp(-k4*PB*CT_O2/S))^2);
eq63 = -k3*QB*((1-exp(-k4*PB*CB_O2/S))^2 - (1-exp(-k4*PB*CT_O2/S))^2) + k3*Q*((1-exp(-k4*PB*CT_O2/S))^2 - (1-exp(-k4*k5*PB*CA_O2))^2) + VA*(CI_O2-CA_O2);
eq64 = -VA + a*(CB_CO2)^(1/k2) - b + d*(m-k5*PB*CA_O2)^n;
eq65 = -QB + W*(h*(CA_CO2)^5 + u*(CA_CO2)^4 +v*(CA_CO2)^3 + p*(CA_CO2)^2 + q*CA_CO2 + r + f*(g-1/k5*(PB*CA_O2))^8) + QBN;
res = [eq58; eq59; eq60; eq61; eq62; eq63; eq64; eq65];
end
end
Keep getting this error message and can't figure out how to fix this. When I add to my initial conditions, my vector length increases as well. Any help would be greatly appreciated. Thank you!

Accepted Answer

Walter Roberson
Walter Roberson on 27 Nov 2021
Y0 = [0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,4.75,0.7];
8 boundary conditions.
function res = respiratory_model(CI_CO2,VA)
inside the function, the current boundary conditions are stored in VA. You must return a column vector that has the same number of elements that VA has -- so an 8 x 1 vector.
eq60 = QB*(CB_CO2-CT_CO2) + Q*(CT_CO2-k1*(PB*CA_CO2)^k2) + VA*(CI_CO2-CA_CO2);
that computation uses all of VA, so eq60 in itself will have at least as many elements as VA has.
eq63 = -k3*QB*((1-exp(-k4*PB*CB_O2/S))^2 - (1-exp(-k4*PB*CT_O2/S))^2) + k3*Q*((1-exp(-k4*PB*CT_O2/S))^2 - (1-exp(-k4*k5*PB*CA_O2))^2) + VA*(CI_O2-CA_O2);
Also uses all of VA
eq64 = -VA + a*(CB_CO2)^(1/k2) - b + d*(m-k5*PB*CA_O2)^n;
Also uses all of VA
res = [eq58; eq59; eq60; eq61; eq62; eq63; eq64; eq65];
Since res includes three items each of which has as many items as VA has, then the size of res will be 3 times the size of VA, plus the length of the entries that are scalars. 5 scalar entries + 3 * 8 = 29 returned elements.

More Answers (0)

Categories

Find more on Numerical Integration and Differential Equations in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!