# solving nonlinear homogeneous system of equations with suitable initial guess

27 visualizzazioni (ultimi 30 giorni)
MADHVI il 28 Mag 2024 alle 9:34
Risposto: SAI SRUJAN il 28 Mag 2024 alle 10:44
Can anyone suggest intial guess(the value of A0) for the system of homogeneous nonlinear equations or any other method to solve the system.
D = 0.1;
L = 0.1;
B = 0.1;
xi = 0.1;
sigma1 = B^3 * D^2 * L^3;
sigma2 = D^2 * L^3;
Ra_values = (10:100:100000).';
solutions = zeros(length(Ra_values), 7);
%Nu = zeros(length(Ra_values),1);
for i = 1:length(Ra_values)
Ra = Ra_values(i);
R = Ra * xi;
f1 = @(A) -((5*A(2)*A(6)*pi^5*B^2*D^2*L^4)/8 + (A(2)*A(6)*pi^5*D^4*L^4)/4)/sigma1 - (B * ((A(4)*A(7)*D^4*pi^5)/4 - (A(1)*L^4*pi^4)/2 - (32*A(5)*L^4*Ra)/9 + (A(1)*L^4*R*pi^2)/2 + (5*A(4)*A(7)*D^2*L^2*pi^5)/8))/sigma2;
f2 = @(A) -(B^2 * (A(2)*A(5)*D^2*L^4*pi^5 - (A(2)*D^2*L^4*pi^4)/2 - (A(1)*A(6)*D^2*L^4*pi^5)/8 - (4*A(6)*D^2*L^4*Ra)/9 + (A(4)*A(7)*D^2*L^4*pi^5)/2 + (3*A(4)*A(7)*D^4*L^2*pi^5)/16 + (A(2)*D^2*L^4*R*pi^2)/4) - (A(2)*D^4*L^4*pi^4)/4)/sigma1 - (B * ((A(4)*A(7)*D^4*pi^5)/8 - (A(2)*L^4*pi^4)/4 - (16*A(6)*L^4*Ra)/9 + (A(2)*L^4*R*pi^2)/4 + (5*A(4)*A(7)*D^2*L^2*pi^5)/16))/sigma2;
f3 = @(A) (B * ((16*A(7)*L^4*Ra)/9 + (A(3)*D^4*pi^4)/4 + (A(3)*L^4*pi^4)/4 - (A(3)*L^4*R*pi^2)/4 + (A(3)*D^2*L^2*pi^4)/2 + (A(1)*A(7)*D^2*L^2*pi^5)/8 - A(3)*A(5)*D^2*L^2*pi^5 - (A(4)*A(6)*D^2*L^2*pi^5)/2))/sigma2 - (B^2 * ((3*A(4)*A(6)*pi^5*D^4*L^2)/16 + (5*A(4)*A(6)*pi^5*D^2*L^4)/16) + (A(4)*A(6)*D^4*L^4*pi^5)/8)/sigma1;
f4 = @(A) (B * pi^2 * (2*A(4)*D^4*pi^2 - 2*A(4)*L^4*R + 2*A(4)*L^4*pi^2 + 4*A(4)*D^2*L^2*pi^2 + A(2)*A(7)*D^2*L^2*pi^3 - 8*A(3)*A(6)*D^2*L^2*pi^3 - 8*A(4)*A(5)*D^2*L^2*pi^3))/(16*D^2*L^3) - ((B^2 * pi^2 * (2*A(4)*D^2*L^4*R - 4*A(4)*D^2*L^4*pi^2 - 4*A(4)*D^4*L^2*pi^2 + 8*A(2)*A(7)*D^2*L^4*pi^3 + A(2)*A(7)*D^4*L^2*pi^3 - A(3)*A(6)*D^2*L^4*pi^3 + A(3)*A(6)*D^4*L^2*pi^3 + 8*A(4)*A(5)*D^2*L^4*pi^3))/16 - (A(4)*D^4*L^4*pi^4)/8)/sigma1;
f5 = @(A) (B^2 * ((pi^5*A(2)^2*D^2*L^4)/4 + (pi^5*A(4)^2*D^4*L^2)/4 + (pi^5*A(4)^2*D^2*L^4)/8) + (A(2)^2*D^4*L^4*pi^5)/4 + (A(4)^2*D^4*L^4*pi^5)/8)/sigma1 + (B * ((A(3)^2*D^4*pi^5)/4 + (A(4)^2*D^4*pi^5)/8 + (8*A(1)*L^4*Ra)/9 + 8*A(5)*L^4*pi^4 - 2*A(5)*L^4*R*pi^2 + (A(3)^2*D^2*L^2*pi^5)/4 + (A(4)^2*D^2*L^2*pi^5)/8))/sigma2;
f6 = @(A) (B^2 * ((4*A(2)*D^2*L^4*Ra)/9 + 2*A(6)*D^2*L^4*pi^4 + (A(1)*A(2)*D^2*L^4*pi^5)/8 + (A(3)*A(4)*D^2*L^4*pi^5)/16 + (3*A(3)*A(4)*D^4*L^2*pi^5)/16 - (A(6)*D^2*L^4*R*pi^2)/4) + (A(6)*D^4*L^4*pi^4)/4)/sigma1 + (B * (4*A(2)*L^4*Ra)/9 + 4*A(6)*L^4*pi^4 + (A(3)*A(4)*D^4*pi^5)/4 - A(6)*L^4*R*pi^2 + (A(3)*A(4)*D^2*L^2*pi^5)/4)/sigma2;
f7 = @(A) (B * ((4*A(3)*L^4*Ra)/9 + (A(7)*D^4*pi^4)/4 + 4*A(7)*L^4*pi^4 - A(7)*L^4*R*pi^2 + 2*A(7)*D^2*L^2*pi^4 + (A(1)*A(3)*D^2*L^2*pi^5)/8 + (A(2)*A(4)*D^2*L^2*pi^5)/16))/sigma2 + (B^2 * ((3*A(2)*A(4)*pi^5*D^4*L^2)/16 + (A(2)*A(4)*pi^5*D^2*L^4)/4) + (A(2)*A(4)*D^4*L^4*pi^5)/4)/sigma1;
F = @(A) [f1(A); f2(A); f3(A); f4(A); f5(A); f6(A); f7(A)];
A0 = [];
A = fsolve(F, A0);
solutions(i, :) = A;
end
A1_1_1 = solutions(:, 1);
A2_1_1 = solutions(:, 5);
Nu = xi - 1./2 - (pi^3 ./ Ra_values) .* A1_1_1 - (8 * pi^3 ./ Ra_values) .* A2_1_1;
##### 0 CommentiMostra -2 commenti meno recentiNascondi -2 commenti meno recenti

Accedi per commentare.

### Risposte (1)

SAI SRUJAN il 28 Mag 2024 alle 10:44
I understand that you are facing an issue solving nonlinear homogeneous system of equations.
Choosing a good initial guess '(A0)' can significantly affect the convergence and accuracy of the solutions found by 'fsolve'. A common starting point is to use a zero vector as the initial guess, assuming that the solution might be close to zero. If the 'fsolve' method with various initial guesses does not yield satisfactory results, we can use the 'fmincon' MATLAB function.
The approach using 'fmincon' involves formulating the problem of solving a system of nonlinear equations as an optimization problem. Please follow the below code sample to proceed further,
% define the objective function
objFun = @(A) sum([f1(A), f2(A), f3(A), f4(A), f5(A), f6(A), f7(A)].^2);
A0 = zeros(7,1);
options = optimoptions('fmincon', 'Display', 'iter', 'Algorithm', 'sqp');
[A_opt, fval] = fmincon(objFun, A0, [], [], [], [], [], [], [], options);
For a comprehensive understanding of the 'fmincon' function in MATLAB, please refer to the following documentation.
I hope this helps!
##### 0 CommentiMostra -2 commenti meno recentiNascondi -2 commenti meno recenti

Accedi per commentare.

### Community Treasure Hunt

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

Start Hunting!

Translated by