How can I write a system of equation more fastly

Asked by Nello Troccia on 13 Mar 2012
Latest activity Commented on by Nello Troccia on 14 Mar 2012

Hi, I have to write a function and this function is a big system of non linear equation but this system is repetitive. See later:

 function F = funzioni(x)
 global Ts0 Tgr vs Ros Cs lx h S Tg 
 F = [x(1)-Ts0;
     x(2)-Ts0;
     x(3)-Ts0;
     x(4)-Ts0;
     x(5)-Ts0;
     x(6)-Tgr;
     vs*Ros*Cs*((x(12)+x(2)-x(7))/(2*lx))-(h*S*(Tg-x(7)));
     vs*Ros*Cs*((x(13)+x(3)-x(8))/(2*lx))-(h*S*(Tg-x(8)));
     vs*Ros*Cs*((x(14)+x(4)-x(9))/(2*lx))-(h*S*(Tg-x(9)));
     x(10)-x(9);
     x(11)-Tgr;
     vs*Ros*Cs*((x(17)+x(7)-x(12))/(2*lx))-(h*S*(Tg-x(12)));
     vs*Ros*Cs*((x(18)+x(8)-x(13))/(2*lx))-(h*S*(Tg-x(13)));
     vs*Ros*Cs*((x(19)+x(9)-x(14))/(2*lx))-(h*S*(Tg-x(14)));
     x(15)-x(14);
     x(16)-Tgr;
     vs*Ros*Cs*((x(22)+x(17)-x(12))/(2*lx))-(h*S*(Tg-x(17)));
     vs*Ros*Cs*((x(23)+x(18)-x(13))/(2*lx))-(h*S*(Tg-x(18)));
     vs*Ros*Cs*((x(24)+x(19)-x(14))/(2*lx))-(h*S*(Tg-x(19)));
     x(20)-x(19);
     x(21)-Tgr;
     vs*Ros*Cs*((x(27)+x(17)-x(22))/(2*lx))-(h*S*(Tg-x(22)));
     vs*Ros*Cs*((x(28)+x(18)-x(23))/(2*lx))-(h*S*(Tg-x(23)));
     vs*Ros*Cs*((x(29)+x(19)-x(24))/(2*lx))-(h*S*(Tg-x(24)));
     x(25)-x(24);
     x(26)-Tgr;
     x(27)-x(22);
     x(28)-x(23);
     x(29)-x(24);
     x(30)-x(29);];

how can I write this system more fastly??? thanks a lot

0 Comments

Nello Troccia

Products

No products are associated with this question.

1 Answer

Answer by Walter Roberson on 13 Mar 2012

Write simple helper expressions.

LK1 = @(K) vs*Ros*Cs*((x(K+10)+x(K)-x(K+5))/(2*lx))-(h*S*(Tg-x(K+5)));
LK2 = @(K) vs*Ros*Cs*((x(K+5)+x(K)-x(K-5))/(2*lx))-(h*S*(Tg-x(K)));
[....
 X(6)-Tgr;
 LK1(2);
 LK1(3);
 LK1(4);
 x(10)-x(9);
 x(11)-Tgr;
 LK1(7);
 LK1(8);
 LK1(9);
 x(15)-x(14);
 x(16)-Tgr;
 LK2(17);
 LK2(18);
 LK2(19);
 ....]

1 Comment

Nello Troccia on 14 Mar 2012

Ok Ok!!! I found the error. But when I ask how can write the system I mean if I can use a structure like this:

function F = funzioniIndicizzate(x)

global n m Ts0 Tgr vs Ros Cs lx h S Tg

for z=1:1:m %prima colonna

F(z)=x(z)-Ts0;
end

for z=m+1:m:(m*n) %prima riga
F(z)=x(z)-Tgr;
end

for p=2:1:(n-1) %corpo centrale
for z=(m*n)-(m-2):1:(m*p)-1

F(z)=vs*Ros*Cs*((x(z+m)+x(z-m)-2*x(z))/(2*lx))-(h*S*(Tg-x(z)));

end
end

for z=m:m:(m*n) %ultima riga

F(z)=x(z)-x(z-1);
end

for z=(m*n)-m:1:m*n %ultima colonna

F(z)=x(z)-x(z-m);
end

Unfortunately this doesn't work well

Walter Roberson

Contact us