Declare a variable in a function for system of equation solving.

조회 수: 29 (최근 30일)
Roger Gomila
Roger Gomila 2020년 3월 24일
댓글: Roger Gomila 2020년 3월 28일
I was solving a system of equations for an iteration problem in an editor code and it worked fine, but when I copied the same code to a function an error appeared when executed. I think it can not be used the "syms" function to declare variables inside a function, but I do not know how to declare those three variables otherwise. The code I was running was the following:
syms Tw_h Tw_c q
eqns = [...
-(k_placa.*A./esp).*(Tw_c-Tw_h)==q,...
h_hot.*A.*(T_hot-Tw_h)==q,...
h_cold.*A.*(Tw_c - T_cold)==q...
];
S2 = solve(eqns);
Tw_h = vpa(S2.Tw_h,9);
Tw_c = vpa(S2.Tw_c,9);
q = vpa(S2.q,9);
The error I obtained:
Error using sym/cat>checkDimensions (line 70)
CAT arguments dimensions not consistent.
Error in sym/cat>catMany (line 35)
[resz, ranges] = checkDimensions(sz,dim);
Error in sym/cat (line 27)
ySym = catMany(dim, args);
Error in sym/horzcat (line 19)
ySym = cat(2,args{:});
Error in coef_h (line 86)
-(k_placa.*A./esp).*(Tw_c-Tw_h)==q,...
Error in calculs_math (line 94)
daily_B3_bruto = [daily_B3_bruto coef_h(daily_B3_bruto,B3_B4)];
I guess there's a way of declaring the three variables I am using inside a function, but I couldn't find it and hoped somebody knew how it vould be done.
Thanks in advance.
Edited: I've attached a table sample and a sample function as well.
  댓글 수: 9
Walter Roberson
Walter Roberson 2020년 3월 24일
When you stop because of the error, what are:
size(A)
size(esp)
size(h_cold)
size(h_hot)
size(k_placa)
size(q)
size(T_cold)
size(T_hot)
size(Tw_c)
size(Tw_h)
Roger Gomila
Roger Gomila 2020년 3월 25일
I have attached a sample test table and function to the main post. Hope it helps now!

댓글을 달려면 로그인하십시오.

채택된 답변

Walter Roberson
Walter Roberson 2020년 3월 25일
most of the variables in that function are column vectors. you are passing in a multi-row timetable and when you extract variables from that you get vectors. But not all of the entries are vectors so you are not able to build an 8 by 3 array of equations.
if you do try to solve () the set of 8 rows and 3 columns then remember that solve is strictly simultaneous equatitions, values of the variables that solve all the equations. It will not produce one set of answers per row. you may need to loop or arrayfun
  댓글 수: 3
Walter Roberson
Walter Roberson 2020년 3월 25일
Potentially that could work, after having adjusted the equations so that there are the same number of rows for each.
Roger Gomila
Roger Gomila 2020년 3월 28일
Sorry, I forgot to accept your answer before.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Mathematics에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by