I have tried using linear solution but to no avail, This is the RK-4 method to solve system of odes. z1 through z19 are constants and have 24 different values(Say 24 hours). And the system of 6 odes need to be solved
for m=1:24z1(m,1)=ah(m,1);z2(m,1)=bh(m,1);z3(m,1)=ch(m,1);z4(m,1)=dh(m,1);z5(m,1)=eh(m,1);z6(m,1)=fh(m,1);z7(m,1)=gh(m,1);z8(m,1)=gne(m,1);z9(m,1)= hh(m,1);z10(m,1)=vh(m,1);z11(m,1)=xh(m,1);z12(m,1)=kh(m,1);z13(m,1)=lh(m,1);z14(m,1)=ph(m,1);z15(m,1)=kill(m,1);z16(m,1)=nec(m,1);z17(m,1)=oh(m,1);z18(m,1)=yh(m,1);z19(m,1)=c22(m,1);end%SECTION 4
%initial conditions
%SECTION 4%define function handles
fTg=@(t,Tg,Tp)z1.*Tg+z2.*Tp+z3;fTp=@(t,Tg,Tp,Tb)z4.*Tg+z5.*Tp+z6.*Tb+z7;fTb= @(t,Tp,Tb,Tt,Ti)z8.*Tp+z9*Tb+z10.*Tt+z11.*Ti;fTt=@(t,Tb,Tt,Tf)z12.*Tb+z13.*Tt+z14.*Tf1;fTf1=@(t,Tb,Tt)z15.*Tb+z16.*Tt;fTi=@(t,Tb,Ti)z17.*Tb+z18.*Ti+z19;%update loop
%initial conditionst(1)=0;Tg(1,1)=Tcover3(1,1);Tp(1,1)=avg1temp(1,1);Tb(1,1)=avg1temp(1,1);Ti(1,1)=Tin(1,1);Tf1(1,1)=(avg1temp(1,1));Tt(1,1)=avg1temp(1,1);%initial conditionsh=0.1;NK=ceil((2.4-0)/h);% don't know quite how to set this. Not completely understood, Would be great if explained?
count=0;for i = 1:NKt(i+1)=t(i)+h; k1Tg= fTg(t(i),Tg(i),Tp(i)); k1Tp = fTp(t(i),Tg(i),Tp(i),Tb(i)); k1Tb = fTb(t(i),Tp(i),Tb(i),Tt(i),Ti(i)); k1Tt = fTt(t(i),Tb(i),Tt(i),Tf1(i)); k1Tf1 = fTf1(t(i),Tb(i),Tt(i)); k1Ti= fTi(t(i),Tb(i),Ti(i)); k2Tg = fTg(t(i)+h/2,Tg(i)+h/2*k1Tg,Tp(i)+h/2*k1Tp); k2Tp = fTp(t(i)+h/2,Tg(i)+h/2*k1Tg,Tp(i)+h/2*k1Tp,Tb(i)+h/2*k1Tb); k2Tb= fTb(t(i)+h/2,Tp(i)+h/2*k1Tp,Tb(i)+h/2*k1Tb,Tt(i)+h/2*k1Tt,Ti(i)+h/2*k1Ti); k2Tt = fTt(t(i)+h/2,Tb(i)+h/2*k1Tb,Tt(i)+h/2*k1Tt,Tf1(i)+h/2*k1Tf1); k2Tf1 = fTf1(t(i)+h/2,Tb(i)+h/2*k1Tb,Tt(i)+h/2*k1Tt); k2Ti= fTi(t(i)+h/2,Tb(i)+h/2*k1Tb,Ti(i)+h/2*k1Ti); k3Tg = fTg(t(i)+h/2,Tg(i)+h/2*k2Tg,Tp(i)+h/2*k2Tp); k3Tp = fTp(t(i)+h/2,Tg(i)+h/2*k2Tg,Tp(i)+h/2*k2Tp,Tb(i)+h/2*k2Tb); k3Tb = fTb(t(i)+h/2,Tp(i)+h/2*k2Tp,Tb(i)+h/2*k2Tb,Tt(i)+h/2*k2Tt,Ti(i)+h/2*k2Ti); k3Tt = fTt(t(i)+h/2,Tb(i)+h/2*k2Tb,Tt(i)+h/2*k2Tt,Tf1(i)+h/2*k2Tf1); k3Tf1 = fTf1(t(i)+h/2,Tb(i)+h/2*k2Tb,Tt(i)+h/2*k2Tt); k3Ti= fTi(t(i)+h/2,Tb(i)+h/2*k2Tb,Ti(i)+h/2*k2Ti); k4Tg = fTg(t(i)+h,Tg(i)+h*k3Tg,Tp(i)+h*k3Tp); k4Tp = fTp(t(i)+h,Tg(i)+h*k3Tg,Tp(i)+h*k3Tp,Tb(i)+h*k3Tb); k4Tb = fTb(t(i)+h,Tp(i)+h*k3Tp,Tb(i)+h*k3Tb,Tt(i)+h*k3Tt,Ti(i)+h*k3Ti); k4Tt = fTt(t(i)+h,Tb(i)+h*k3Tb,Tt(i)+h*k3Tt,Tf1(i)+h*k3Tf1); k4Tf1 = fTf1(t(i)+h,Tb(i)+h*k3Tb,Tt(i)+h*k3Tt); k4Ti = fTi(t(i)+h,Tb(i)+h*k3Tb,Ti(i)+h*k3Ti); logg(i)=(h/6)*(k1Tg + 2*k2Tg + 2*k3Tg + k4Tg); logp(i)=(h/6)*(k1Tp + 2*k2Tp + 2*k3Tp + k4Tp); logb(i)=(h/6)*(k1Tb + 2*k2Tb+ 2*k3Tb+ k4Tb); logt(i)=(h/6)*(k1Tt+ 2*k2Tt+ 2*k3Tt + k4Tt); logf(i)=(h/6)*(k1Tf1 + 2*k2Tf1+ 2*k3Tf1 + k4Tf1); logi(i)=(h/6)*(k1Ti + 2*k2Ti + 2*k3Ti + k4Ti); lol=transpose(logg) lop=transpose(logp) lou=transpose(logb) loy=transpose(logt) loz=transpose(logf) lox=transpose(logi) end i=1; for klj=1:365 for i=i:i+23 Tg(i+1) = Tg(i) + lol(i); Tp(i+1) = Tp(i) + lop(i); Tb(i+1) = Tb(i) + lou(i); Ti(i+1) = Ti(i) + lox(i); Tf1(i+1) = Tf1(i) + loz(i); Tt(i+1) = Tt(i) + loy(i); end i=i+1; Tg(i)=Tg(i-1); Tp(i)=Tp(i-1); Tb(i)=Tb(i-1); Ti(i)=Ti(i-1); Tf1(i)=Tf1(i-1); Tt(i)=Tt(i-1); endBut I keep getting this error message. how do i proceed from here?Error using * Inner matrix dimensions must agree. Error in codeversion22>@(t,Tp,Tb,Tt,Ti)z8.*Tp+z9*Tb+z10.*Tt+z11.*TiError in codeversion22(line 356) k2Tb= fTb(t(i)+h/2,Tp(i)+h/2*k1Tp,Tb(i)+h/2*k1Tb,Tt(i)+h/2*k1Tt,Ti(i)+h/2*k1Ti);
Best Answer