Help needed with finding good convergence values for X1, to X7
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
clear all
clc
%Initial Guesses
X1 = 25; %p in kPa
X2 = 40; %w in kg/s
X3 = 20; %E_c in kW
X4 = 60; %t_3 in Celcius
X5 = 30; %E_t in kW
X6 = 65; %t_2 in Celcius
X7 = 10; %E_s in kW
%Solution Vector
X = [X1; X2; X3; X4; X5; X6; X7];
%Jacobian Matrix Initialization
J = zeros(7,7);
%RHS Vector Initialization
F = zeros(7,1);
%First Iteration in the Iteration Process
J = JMat(J,X1,X2,X3,X4,X5,X6,X7);
F = RHS(F,X1,X2,X3,X4,X5,X6,X7);
%Tolerance counter of Initial
I = 0;
%Tolerance
T = 10^(-4); %Larger to Save Time on Processing of Program.
%Error
E = 10^2; %Smaller to decrease time to get final iteration result.
%Additional Iterations
while (E > T)
X_Prev = X;
%Computation of Equation
X = X - (F'/J');
%Incremental Increase of Interations
I = I + 1;
%Solutions Get Updated with Each Iteration
X1 = X(1); X2 = X(2); X3 = X(3); X4 = X(4); X5 = X(5); X6 = X(6); X7 = X(7);
%New Jacobian Matrix with each Iteration
J = JMat(J,X1,X2,X3,X4,X5,X6,X7);
%New RHS Vector with each Iteration
F = RHS(F,X1,X2,X3,X4,X5,X6,X7);
X_New = X;
%Determination of Error
E = find_E(X_Prev, X_New);
end
%Jacobian Matrix Computation
function J = JMat(J,X1,X2,X3,X4,X5,X6,X7)
J(1,1) = 1;
J(1,2) = -20.5 + 5.6*X2;
J(1,3) = 0;
J(1,4) = 0;
J(1,5) = 0;
J(1,6) = 0;
J(1,7) = 0;
J(2,1) = .2 - .004*X1 + 103*X1*exp(-abs(103*X1))/abs(X1);
J(2,2) = 0;
J(2,3) = 1;
J(2,4) = 0;
J(2,5) = 0;
J(2,6) = 0;
J(2,7) = 0;
J(3,1) = -.02332 - .96e-4*X1 -.000121*X4 + .5472e-5*X1*X4 + .1137e-6*X2^(2) - .4248*1.995e-08*X1*X4^(2);
J(3,2) = 1;
J(3,3) = .02644 - .3698e-4 -.000121 + .2736e-4*X1^(2) + .2274*X1*X4 - 4248*1.995e-08*X1^(2)*X4;
J(3,4) = 0;
J(3,5) = 0;
J(3,6) = 0;
J(3,7) = 0;
J(4,1) = 10.06 - .066066*X1 -.050921*X4 + 1.705e-4*X1*X4 + .2356e-4*X4^(2) - .8946*3.162e-06*X1*X4^(2);
J(4,2) = 0;
J(4,3) = 0;
J(4,4) = -7.4709 -.0078388*X4 - 0.050921*X1 + .8525E-4*X1^(2) + .4712e-4*X1*X4 - .8946*3.162e-06*X1*X4^(2);
J(4,5) = 1;
J(4,6) = 0;
J(4,7) = 0;
J(5,1) = 0;
J(5,2) = 1.03*25 - 1.03*X6;
J(5,3) = 1;
J(5,4) = 0;
J(5,5) = 0;
J(5,6) = - X2*1.03;
J(5,7) = 0;
J(6,1) = 0;
J(6,2) = -X6*1.03;
J(6,3) = 0;
J(6,4) = X6*1.03;
J(6,5) = 0;
J(6,1) = X4*1.03 - X2*1.03;
J(6,7) = 0;
J(7,1) = 0;
J(7,2) = 0;
J(7,3) = -1;
J(7,4) = 0;
J(7,5) = 1;
J(7,6) = 0;
J(7,7) = -1;
end
%Computation of RHS Vector
function F = RHS(F,X1,X2,X3,X4,X5,X6,X7)
F(1) = X1 - 279 - 20.5*X2 + 2.8*X2^(2);
F(2) = X3 - 999 + .2*X1 - .002*X1^(2) - 1.5e-8 - exp(-abs(103*X1));
F(3) = X2 - 9.22 - .2342*X1 - .48e-4*X1^(2) + .02644*X4 - .1849e-4*X4^(2) - .000121*X1*X4 + .2736e-4*X1^(2)*X4 + .1137e-6*X1*X4^(2) - .2124*1.995e-08*(X1*X4)^2;
F(4) = X5 - 1693.2 + 10.06*X1 - .033033*X1^(2) - 7.4709*X4 - .003919*X4^(2) - .050921*X1*X4 + .8525e-4*X1^(2)*X4 + .2356e-4*X1*X4^(2) - .4473*3.162e-06*(X1*X4)^2;
F(5) = X3 - X2*1.03 + X2*1.03*25;
F(6) = 6500 -X6*X2*1.03 + X6*1.03*X4;
F(7) = X5 - X3 - X7;
end
function E = find_E(X_Prev, X_New)
termA = (X_New - X_Prev).^2;
termA = sum(termA(:))^0.5;
termB = X_New.^2;
termB = sum(termB(:))^0.5;
E = termA/termB;
end
Respuestas (1)
Kartik Saxena
el 22 de Mzo. de 2024
Hi,
To find good convergence values for 'X1' to 'X7', you can try adjusting the initial guesses and the convergence tolerance. You can also experiment with different iterative methods or optimization algorithms to improve convergence.
Here are a few suggestions to improve convergence:
- Adjust the initial guesses: Try different values for 'X1' to 'X7' to see if it helps the convergence. Sometimes, starting with values closer to the actual solution can improve convergence.
- Modify the convergence tolerance: The convergence tolerance 'T' is currently set to 10^(-4). You can try making it smaller to increase the accuracy of the solution. However, keep in mind that a smaller tolerance may require more iterations to converge.
- Try different iterative methods: The code currently uses a simple iterative method to update the solution. You can explore other iterative methods.
I hope it helps.
0 comentarios
Ver también
Categorías
Más información sobre Fluid Dynamics en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!