MATLAB Answers

Regarding the matrix indexing,

1 view (last 30 days)
Hello all,
I have one problem in assigning index to the matrix.
I have two solver, one is mine and another is my professor.
This is mine:
function T = Euler_explicit(T_0, L, P,C, h,i)
A = inv(C)*L; % Conductance and inverse of specific heat capacity
b = inv(C)*P; % Power loss vector and inverse of specific heat capacity
T = zeros(length(T_0),i);
T(:,1) = T_0; % Initial condition T_0(:,1) = 273.50 Ambient temperature of environment
f_1 = f(A, b, T(:,i)); % Calling the differential equation function
T(:, i+1) = T(:,i) + f_1*h; %here I need to change the indexing, but I am not getting how to change it to get one row vector for each iteration _this is second question
end
Below is my professor: Kindly don't ask for the explantion to this solver, this is very complicated to explain here
function[T_akt] = solver_instationaer(T_akt,P,C,h,L)
% Konstante
b = 0.26; % nach Carter S.3
% Berechnung mittels Näherungsverfahren Teil 1 nach Carter
a2 = (0.5-b)/b^2; % nach Carter S. 3
a1 = 1/b-2*a2; % nach Carter S. 3
a0 = 1-a1-a2; % nach Carter S. 3
% Berechnung mittels Näherungsverfahren nach Carter
% C = zeros(n,n); % zur Überprüfung der stationären Lösung
X = (C+b*h*L)\(C*T_akt+b*h*P); % analog zu inv(C+b*h*G)*(C*T_vor+b*h*Q); nach Carter S. 3
Y = (C+b*h*L)\(C*X+b*h*P); % analog zu inv(C+b*h*G)*(C*X+b*h*Q); nach Carter S. 3
T_akt = a0*T_akt+a1*X+a2*Y; % Berechnung des aktuellen Temperaturvektors nach Carter S. 3
end
This is my main function file where I am calling two solver at two different time:
T_akt(1:n,1) = 273.50; % n = 10 in this case
for t = 1:3600
L = -(LA);
for k = 1: n
L(k,k) = -(sum(L(k,:)));
end
T_akt = solver_instationaer(T_akt,P,C,d_T,L); %my professor
% T_akt = Euler_explicit(T_akt, L, P,C, d_T,t); %mine
T1(:,t) = T_akt;
end
When I run the main function file with professor solver, it is giving one row vector T_akt in each iteration like below: for second iteration
273.5615
273.5015
273.5000
273.5000
273.5000
273.5000
273.5000
273.5000
273.5000
273.5000
When I run the main function file with my solver, it is giving the matrix like below: for second iteration, but It should give the new row vector only, not the vector of previous iteration
%previous % new
273.5615 273.5615
273.5015 273.5015
273.5000 273.5000
273.5000 273.5000
273.5000 273.5000
273.5000 273.5000
273.5000 273.5000
273.5000 273.5000
273.5000 273.5000
273.5000 273.5000
question: it gives the answer like above , But I need only one row vector, I mean vector of the respective iteration like my professor answer.
I thinl I need to make some changes in my slover index especially, here, But I need to know what those changes are.
T = zeros(length(T_0),i);
T(:,1) = T_0; % Initial condition T_0(:,1) = 273.50 Ambient temperature of environment
f_1 = f(A, b, T(:,i)); % Calling the differential equation function
T(:, i+1) = T(:,i) + f_1*h; %here I need to change the indexing, but I am not getting how to change it to get one row vector for each iteration _this is second question
end
Kindly help me out in fixing this problem.
Don't Mind two questions at a time, one is simple but another I don't Know?
any suggestions and answers are most welcomed
Thanks in advance
  2 Comments

Sign in to comment.

Accepted Answer

infinity
infinity on 19 Jul 2019
Hello,
How about if you modify your function like this
function T = Euler_explicit(T_0, L, P,C, h)
A = inv(C)*L; % Conductance and inverse of specific heat capacity
b = inv(C)*P; % Power loss vector and inverse of specific heat capacity
f_1 = f(A, b, T_0); % Calling the differential equation function
T = T_0 + f_1*h; %here I need to change the indexing, but I am not getting how to change it to get one row vector for each iteration _this is second question
end

More Answers (0)

Products


Release

R2014a

Community Treasure Hunt

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

Start Hunting!