My code is wrong and I don't know why

2 Ansichten (letzte 30 Tage)
ferne17
ferne17 am 8 Apr. 2013
Hi everybody, my name is Fernando Pinto, I am from Chile so I apologize for my English.
Here is the thing, I have model a non-lineal model, whit a numeric method, but when i finished the code it doesn't run. The code give me a problem that i don't understand at all and I can't find where I'm wrong. Here is my code:
if true
% K_1=250; K_2=1350; K_3=3400; K_4=3400; K_5=1600;
Y=[250,1350,3400,3400,1600];
beta=[1, 0.75, 0.5, 0.25, 0];
liquidez=[0.9, 0.75, 0.5, 0.25, 0.1];
L=liquidez;
I_1=[0,0,0.25,0.05,0];
I_2=[0,0,0.45,0.1,0];
I_3=[0,0,0,0.2,0];
I_4=[0,0,0,0,0.4];
I_5=[0,0,0,0,0];
O_1=0.5;
O_2=0.35;
O_3=0.15;
b_1_j=(sum(beta)+sum(L))*O_1;
b_2_j=(sum(beta)+sum(L))*O_2;
b_3_j=(sum(beta)+sum(L))*O_3;
r=beta.*L;
h=0.5;
a=0;
b=10;
m=(b-a)/h;
X_11=zeros(1, m+1); X_21=zeros(1, m+1); X_31=zeros(1, m+1);
X_12=zeros(1, m+1); X_22=zeros(1, m+1); X_32=zeros(1, m+1);
X_13=zeros(1, m+1); X_23=zeros(1, m+1); X_33=zeros(1, m+1);
X_14=zeros(1, m+1); X_24=zeros(1, m+1); X_34=zeros(1, m+1);
X_15=zeros(1, m+1); X_25=zeros(1, m+1); X_35=zeros(1, m+1);
X_11(1)=150; X_21(1)=75; X_31(1)=25;
X_12(1)=750; X_22(1)=500; X_32(1)=100;
X_13(1)=2500; X_23(1)=700; X_33(1)=200;
X_14(1)=2000; X_24(1)=1000; X_34(1)=400;
X_15(1)=800; X_25(1)=500; X_35(1)=300;
t=a:h:b;
for i=1:m
X_11(i+1)= X_11(i)+ h*(X_11(i)*(1-X_11(i)/K_1) + ((b_1_j-b_2_j)*X_11(i)*X_21(i)...
+((b_1_j-b_3_j)*X_11(i)*X_31(i)) + X_11*Y(1)*b_1_j + sum(I_1.*Y)*Y(1)+sum(r.*Y.*(beta+L))*O_1));
X_21(i+1)= X_21(i)+ h*(X_21(i)*(1-X_21(i)/K_1) + ((b_2_j-b_1_j)*X_21(i)*X_11(i)...
+((b_2_j-b_3_j)*X_21(i)*X_31(i))+ X_21*Y(1)*b_2_j + sum(I_1.*Y)*Y(1)+sum(r.*Y.*(beta+L))*O_2));
X_31(i+1)= X_31(i)+ h*(X_31(i)*(1-X_31(i)/K_1) + ((b_3_j-b_2_j)*X_31(i)*X_21(i)...
+((b_3_j-b_1_j)*X_31(i)*X_11(i)) + X_31*Y(1)*b_3_j + sum(I_1.*Y)*Y(1)+sum(r.*Y.*(beta+L))*O_3));
X_12(i+1)= X_12(i)+ h*(X_12(i)*(1-X_12(i)/K_2) + ((b_1_j-b_2_j)*X_12(i)*X_22(i)...
+((b_1_j-b_3_j)*X_12(i)*X_32(i)) + X_12*Y(2)*b_1_j + sum(I_1.*Y)*Y(2)+sum(r.*Y.*(beta+L))*O_1));
X_22(i+1)= X_22(i)+ h*(X_22(i)*(1-X_22(i)/K_2) + ((b_2_j-b_3_j)*X_22(i)*X_32(i)...
+((b_2_j-b_1_j)*X_22(i)*X_12(i)) + X_22*Y(2)*b_2_j + sum(I_1.*Y)*Y(2)+sum(r.*Y.*(beta+L))*O_2));
X_32(i+1)= X_32(i)+ h*(X_32(i)*(1-X_32(i)/K_2) + ((b_3_j-b_2_j)*X_32(i)*X_22(i)...
+((b_3_j-b_1_j)*X_32(i)*X_12(i)) + X_32*Y(2)*b_3_j + sum(I_1.*Y)*Y(2)+sum(r.*Y.*(beta+L))*O_3));
X_13(i+1)= X_13(i)+ h*(X_13(i)*(1-X_13(i)/K_3) + ((b_1_j-b_2_j)*X_13(i)*X_23(i)...
+((b_1_j-b_3_j)*X_13(i)*X_33(i)) + X_13*Y(3)*b_1_j + sum(I_1.*Y)*Y(3)+sum(r.*Y.*(beta+L))*O_1));
X_23(i+1)= X_23(i)+ h*(X_23(i)*(1-X_23(i)/K_3) + ((b_2_j-b_3_j)*X_23(i)*X_33(i)...
+((b_2_j-b_1_j)*X_23(i)*X_13(i)) + X_23*Y(3)*b_2_j + sum(I_1.*Y)*Y(3)+sum(r.*Y.*(beta+L))*O_2));
X_33(i+1)= X_33(i)+ h*(X_33(i)*(1-X_33(i)/K_3) + ((b_3_j-b_2_j)*X_33(i)*X_23(i)...
+((b_3_j-b_1_j)*X_33(i)*X_13(i)) + X_33*Y(3)*b_3_j + sum(I_1.*Y)*Y(3)+sum(r.*Y.*(beta+L))*O_3));
X_14(i+1)= X_14(i)+ h*(X_14(i)*(1-X_14(i)/K_4) + ((b_1_j-b_2_j)*X_14(i)*X_24(i)...
+((b_1_j-b_3_j)*X_14(i)*X_34(i)) + X_14*Y(4)*b_1_j + sum(I_1.*Y)*Y(4)+sum(r.*Y.*(beta+L))*O_1));
X_24(i+1)= X_24(i)+ h*(X_24(i)*(1-X_24(i)/K_4) + ((b_2_j-b_3_j)*X_24(i)*X_34(i)...
+((b_2_j-b_1_j)*X_24(i)*X_14(i)) + X_24*Y(4)*b_2_j + sum(I_1.*Y)*Y(4)+sum(r.*Y.*(beta+L))*O_2));
X_34(i+1)= X_34(i)+ h*(X_34(i)*(1-X_34(i)/K_4) + ((b_3_j-b_2_j)*X_34(i)*X_24(i)...
+((b_3_j-b_1_j)*X_34(i)*X_14(i)) + X_34*Y(4)*b_3_j + sum(I_1.*Y)*Y(4)+sum(r.*Y.*(beta+L))*O_3));
X_15(i+1)= X_15(i)+ h*(X_15(i)*(1-X_15(i)/K_5) + ((b_1_j-b_2_j)*X_15(i)*X_25(i)...
+((b_1_j-b_3_j)*X_15(i)*X_35(i)) + X_15*Y(5)*b_1_j + sum(I_1.*Y)*Y(5)+sum(r.*Y.*(beta+L))*O_1));
X_25(i+1)= X_25(i)+ h*(X_25(i)*(1-X_25(i)/K_5) + ((b_2_j-b_3_j)*X_25(i)*X_35(i)...
+((b_2_j-b_1_j)*X_25(i)*X_15(i)) + X_25*Y(5)*b_2_j + sum(I_1.*Y)*Y(5)+sum(r.*Y.*(beta+L))*O_2));
X_35(i+1)= X_35(i)+ h*(X_35(i)*(1-X_35(i)/K_5) + ((b_3_j-b_2_j)*X_35(i)*X_25(i)...
+((b_3_j-b_1_j)*X_35(i)*X_15(i)) + X_35*Y(5)*b_3_j + sum(I_1.*Y)*Y(5)+sum(r.*Y.*(beta+L))*O_3));
end
plot(t, X_11), xlabel( 'Time' ), ylabel( 'X_11' ) end
I don't know how works the button to put my code so I apologize again for that.
The code is kind of tricky, because it is not a problem that I can write with words, the problem requires that I have to make suposicions, but the thing is that i must plot this and every X_1j must be in a graphic and X_2j in another and X_3j too. The problem that the code give me is this: "In an assignment A(I) = B, the number of elements in B and I must be the same."
I understand that it's a problem with the size of my X(i+1), but how can i fix it? I need to use a Numerical method to solve this problem and I must plot this so please help me I can't get the problem and I try to figure out with just one line of code but that give me the same problem.
I hope someone can help me I will be waiting for answers and the help you can give me. Gretings!

Akzeptierte Antwort

Yao Li
Yao Li am 8 Apr. 2013
Bearbeitet: Yao Li am 8 Apr. 2013
When you try to define X_11(i+1), there is X_11(X_11*Y(1)*b_1_j) on the right side. You have to change X_11 to X_11(i) or some other element instead of an array or matrix. Likewise, other definition also needs revision.

Weitere Antworten (0)

Kategorien

Mehr zu Multibody Modeling finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by