Bonjour à tous !
J'ai un problème avec une partie de script :
1 2 3 4 5 6 7 8 9 10
| x = sym('x', [1,H]);
eqm=gamma*p_isa.*x.^2==(WoS/C_D0)*[(ToW_sl*0.76*(0.907+0.262*(abs(x-0.5)).^1.5).*(rho_isa/rho_ssl).^0.7)-sqrt((ToW_sl*0.76*(0.907+0.262*(abs(x-0.5)).^1.5).*(rho_isa/rho_ssl).^0.7).^2-4*K*C_D0)];
eqM=gamma*p_isa.*x.^2==(WoS/C_D0)*[(ToW_sl*0.76*(0.907+0.262*(abs(x-0.5)).^1.5).*(rho_isa/rho_ssl).^0.7)+sqrt((ToW_sl*0.76*(0.907+0.262*(abs(x-0.5)).^1.5).*(rho_isa/rho_ssl).^0.7).^2-4*K*C_D0)];
parfor i=1:H
M_rmin(i)=double(vpasolve(eqm(i),x(i),M_min(i)));
M_rmax(i)=double(vpasolve(eqM(i),x(i),M_max(i)));
V_rmax(i)=M_rmax(i)*c(i);
V_rmin(i)=M_rmin(i)*c(i);
end |
Dans ce morceau de code, je définis deux équations qui sont des vecteurs, chaque colonne correspondant à l'équation pour une altitude donnée (p_isa et rho_isa dans l'équation dépendent de l'altitude).
Je veux ensuite résoudre ces équations et j'ai souhaité utilisé parfor pour accélérer la résolution. Celle ci fonctionne pour un pas d'altitude de 100m, mais quand je veux le diminuer, je recontre l'erreur : In an assignment A(:) = B, the number of elements in A and B must be the same.
H correspond à la longueur de mon vecteur altitude donc à priori, pas de problème de ce côté là (H augmente quand le pas diminue) et dans mon workspace, tous les vecteurs semblent avoir la bonne dimension. J'ai pensé que peut être l'équation commençait à admettre 2 solutions mais je l'ai résolue à l'indince ou la boucle for s'est arrêtée et j'ai bien une solution donc à priori pas de problème de dimension non plus.
J'ai essayé avec différents pas plus petits que 100, par exemple avec 50, le code tourne mais pas avec 20 ou 10. Par ailleurs, il semble que si l'indice d'erreur dans la boucle change, cela correspond en revanche toujours à la même altitude ...
Pourriez vous m'aider ?
Par avance, merci
Partager