Regarding the matrix indexing,
    13 views (last 30 days)
  
       Show older comments
    
    surendra kumar Aralapura mariyappa
 on 19 Jul 2019
  
    
    
    
    
    Commented: surendra kumar Aralapura mariyappa
 on 19 Jul 2019
            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
  Guillaume
      
      
 on 19 Jul 2019
				I've formatted your post for you. Please learn to use the toolbar to do so yourself next time.
Accepted Answer
  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)
See Also
Categories
				Find more on General Applications in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
