Resolution of a system with sine and cosine terms
    5 vues (au cours des 30 derniers jours)
  
       Afficher commentaires plus anciens
    
    Andrea Cesaro
 le 17 Juil 2023
  
    
    
    
    
    Commenté : Andrea Cesaro
 le 13 Août 2023
            I write a code like this, but the run continues indefinitely; it seems that Matlab is not able to solve this system. Is that really the case or am I wrong somewhere?
clc
clear
close all
syms phi1
syms theta1
syms phi2
syms theta2
syms phi3
syms theta3
syms phi4
syms theta4
ro = sqrt(3);
csi1 = ro*sin(phi1)*cos(theta1);
eta1 = ro*sin(phi1)*sin(theta1);
zeta1 = ro*cos(phi1);
csi2 = ro*sin(phi2)*cos(theta2);
eta2 = ro*sin(phi2)*sin(theta2);
zeta2 = ro*cos(phi2);
csi3 = ro*sin(phi3)*cos(theta3);
eta3 = ro*sin(phi3)*sin(theta3);
zeta3 = ro*cos(phi3);
csi4 = ro*sin(phi4)*cos(theta4);
eta4 = ro*sin(phi4)*sin(theta4);
zeta4 = ro*cos(phi4);
eqns = [csi1^2 + csi2^2 + csi3^2 + csi4^2 == 4, eta1^2 + eta2^2 + eta3^2 + eta4^2 == 4, zeta1^2 + zeta2^2 + zeta3^2 + zeta4^2 == 4, csi1*eta1 + csi2*eta2 + csi3*eta3 + csi4*eta4 == 0, eta1*zeta1 + eta2*zeta2 + eta3*zeta3 + eta4*zeta4 == 0, zeta1*csi1 + zeta2*csi2 + zeta3*csi3 + zeta4*csi4 == 0, csi1 + csi2 + csi3 + csi4 == 0, eta1 + eta2 + eta3 + eta4 == 0, zeta1 + zeta2 + zeta3 + zeta4 == 0,...
    theta1>0, theta1<2*pi, phi1>0, phi1<pi, theta2>0, theta2<2*pi, phi2>0, phi2<pi, theta3>0, theta3<2*pi, phi3>0, phi3<pi, theta4>0, theta4<2*pi, phi4>0, phi4<pi];
[phi1, theta1, phi2, theta2, phi3, theta3, phi4, theta4] = solve(eqns, [phi1, theta1, phi2, theta2, phi3, theta3, phi4, theta4]);
4 commentaires
Réponse acceptée
  Dheeraj
      
 le 10 Août 2023
        Hi, 
    If the script is running for a long time without producing results, it's possible that the symbolic solver is struggling to find a solution due to the complexity of the equations or the constraints. Few ways you could work around to solve the problem are,
- Simplifying the equations or by breaking down the problem to subproblems and solve them separately and try to combine the results at the end.
 - Using MATLAB parallel computing toolbox to speed up calculations. You may refer to this document on parallel computing for better understanding. https://in.mathworks.com/help/parallel-computing/getting-started-with-parallel-computing-toolbox.html
 
2 commentaires
  John D'Errico
      
      
 le 10 Août 2023
				Yes. Note also that inequalities are difficult things to handle, and there are MANY of them here.
Plus de réponses (0)
Voir également
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!