why do i keep getting this error "Error using + Matrix dimensions must agree" ?
Afficher commentaires plus anciens
Please assist:
When i try running the following i keep getting the above error:
%initial conditions
y0=[19.125;19.125;114.75;51;51;1;2;1;55;50;0.5;3.187;3.187;19.125;8.5;8.5;1;2;1;55;50;0.5;1.594;1.594;9.5625;4.25;4.25;1;2;1;55;50;0.5;1.594;1.594;9.5625;4.25;4.25;1;2;1;55;50;0.5;6.375;6.375;38.250;17;17;1;2;1;55;50;0.5];
t0=0;
tEnd=282;
h=0.0006944444;
N=ceil((tEnd-t0)/h);
%initilising solution
T=t0:h:tEnd;
Y=zeros(55,N+1);
Y(:,1)=y0;
%boundaries
for i=1:N
T(i+1)=T(i)+h;
Y(Y<0)=0;
y11=Y(11);
y11(y11>8.5)=8.5;
%update y
yi=Y(:,i);
a1=UASBFun(T(i), yi);
a2=UASBFun(T(i)+0.5*h, yi+0.5*a1*h);
a3=UASBFun(T(i)+0.5*h, yi+0.5*a2*h);
a4=UASBFun(T(i)+ h, yi+ a3*h);
yNew=yi+(h/6)*(a1+2*a2+2*a3+a4);
Y(:,i+1)=yNew;
end
%plotting
yEnd=Y(:,end);
plot(T,Y(50,:),'-r'); hold on
plot(T,Y(51,:),'-g'); hold on
plot(T,Y(52,:),'--r'); hold on
plot(T,Y(53,:),'-k'); hold on
plot(T,Y(54,:),'-b'); hold on
plot(T,Y(55,:),'--g'); hold off
xlabel('Time (days)'); ylabel('Concentration (g/m^3)');
Function:
function fval=UASBFun(~,y)
%Define variables
Xaoba=y(1); Xaobb=y(12); Xaobc=y(23); Xaobd=y(34); Xaobe=y(45);
Xnoba=y(2); Xnobb=y(13); Xnobc=y(24); Xnobd=y(35); Xnobe=y(46);
Xamxa=y(3); Xamxb=y(14); Xamxc=y(25); Xamxd=y(36); Xamxe=y(47);
Xhana=y(4); Xhanb=y(15); Xhanc=y(26); Xhand=y(37); Xhane=y(48);
Xhaera=y(5); Xhaerb=y(16); Xhaerc=y(27); Xhaerd=y(38); Xhaere=y(49);
Xsa=y(6); Xsb=y(17); Xsc=y(28); Xsd=y(39); Xse=y(50);
Ssea=y(7); Sseb=y(18); Ssec=y(29); Ssed=y(40); Ssee=y(51);
Sno3a=y(8); Sno3b=y(19); Sno3c=y(30); Sno3d=y(41); Sno3e=y(52);
Sno2a=y(9); Sno2b=y(20); Sno2c=y(31); Sno2d=y(42); Sno2e=y(53);
Snh4a=y(10); Snh4b=y(21); Snh4c=y(32); Snh4d=y(43); Snh4e=y(54);
So2a=y(11); So2b=y(22); So2c=y(33); So2d=y(44); So2e=y(55);
The functions for each variable are long though hence i stop at this.
PLease someone assist here please.....
2 commentaires
Geoff Hayes
le 24 Fév 2019
Kosgey - which line of code is throwing the error message? I can't run the above because of errors with your UASBFun function (not sure what you are attempting there).
Anyway, the error message is telling you that you are trying to add two matrices together that have different dimensions...
Kosgey Kip
le 25 Fév 2019
Réponse acceptée
Plus de réponses (0)
Catégories
En savoir plus sur Programming dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!