« Découvrir Scilab/Calcul numérique » : différence entre les versions

Contenu supprimé Contenu ajouté
→‎Exemple complet : programme complet
Ligne 1 449 :
Concrètement, le programme développé est :
<source lang="scilab">
// paramètres du problème géométrique
xA = 0;
yA = 0;
Ligne 1 458 :
yBmin = -e/2;
yBmax = yBmin + course;
 
// paramètres du problème de statique
xG = 700; // en mm
yG = 200; // en mm
m = 100; // en kg
g = 9.81; // en m/s^2
 
n = 11; // nombre de points calculés
 
Ligne 1 481 ⟶ 1 488 :
// * Programme principal *
// ***********************
 
// ********** Problème géométrique **********
 
// initialisation
Ligne 1 502 ⟶ 1 511 :
// vérification que l'on a pris la bonne solution
penteAB = (param(4) - param(2))*facteur1;
if pente >< penteAB then // si c'est la mauvaise solution
a(i) = %nan;
b(i) = %nan;
Ligne 1 508 ⟶ 1 517 :
end
 
// affichage de l'angle
angle = atan(-a); // en radians
 
disp("position (mm) ; angle (°)");
disp([yB', 0.1*round((1800/%pi)*angle)]); // angle en °, arrondi
 
// ********** Problème de statique **********
 
// initialisation
FA = zeros(n, 2);
C = zeros(n, 1);
iFA = C; // intensités des forces
iFB = C;
 
AF = [1, 0, -a(1)
0 1 1
0 0 L];
bF = -m*g*[0 ; 1 ; xG];
 
// Résolution des équations de la statique
 
for i=1:n
AF(1, 3) = a(i);
XF = linsolve(AF, bF);
FA(i, :) = XF(1:2);
C(i) = XF(3);
iFA(i) = norm(XF(1:2));
iFB(i) = C(i)*norm([a(i) ; 1]);
end
 
// affichage des intensités
disp("position (mm) ; FA (N) ; FB(N)");
disp([yB', round(iFA), round(iFB)]); // angle en °, arrondi
 
</source>
 
Ligne 1 530 ⟶ 1 568 :
155. 10.2
175. 11.3
 
position (mm) ; FA (N) ; FB(N)
 
-25. 294. 687.
-5. 295. 687.
15. 296. 687.
35. 297. 688.
55. 299. 689.
75. 302. 690.
95. 306. 692.
115. 310. 693.
135. 314. 695.
155. 319. 698.
175. 325. 700.
</source>