bonjour
voila j'ai écris deux programme
je calcul la solution d'un système de 4 équations avec 4 variables avec deux méthodes
1ere méthode celle de cramer dont le code
2ème méthode methode de gauss pivot dont le code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 function d=determinant(a,b,n) e=a; s=b; for i=1:4 e(i,n)=s(i); end d=det(e); end function v=cramer(a,b) if det(a)~=0 for i=1:4 m(i)=determinant(a,b,i)/det(a); end else erreur('division par zero'); end v=m; end
voila je vais ajouter le fait que l'utilisateur s'il entre 1 le système se résous par la méthode de cramer ,2 se résous par la méthode gauss
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60 function v=methpiv(a,b) if a(1,1)=0 for i=2:4 if a(i,1)~=0 for j=1:4 va=a(i,j); a(i,j)=a(1,j); a(1,j)=va end i=5; end end end e=zeros(4); r=a; f=b; for i=1:4 e(1,i)=r(1,i); end for i=1:4 e(2,i)=r(2,i)-(r(2,1)/r(1,1))*r(1,i); e(3,i)=r(3,i)-(r(3,1)/r(1,1))*r(1,i); e(4,i)=r(4,i)-(r(4,1)/r(1,1))*r(1,i); end f(2)=f(2)-(r(2,1)/r(1,1)*f(1)); f(3)=f(3)-(r(3,1)/r(1,1)*f(1)); f(4)=f(4)-(r(4,1)/r(1,1)*f(1)); h=zeros(4); for i=1:2 for j=1:4 h(i,j)=e(i,j); end end for i=2:4 h(3,i)=e(3,i)-(e(3,2)/e(2,2))*e(2,i); h(4,i)=e(4,i)-(e(4,2)/e(2,2))*e(2,i); end g(1)=f(1); g(2)=f(2); g(3)=f(3)-(e(3,2)/e(2,2))*f(2); g(4)=f(4)-(e(4,2)/e(2,2))*f(2); s=zeros(4); for i=1:3 for j=1:4 s(i,j)=h(i,j); end end for i=3:4 s(4,i)=h(4,i)-(h(4,3)/h(3,3))*h(3,i); end p(1)=g(1); p(2)=g(2); p(3)=g(3); p(4)=g(4)-(h(4,3)/h(3,3))*g(3); v(4)=p(4)/s(4,4); v(3)=(p(3)-s(3,4)*v(4))/s(3,3); v(2)=(p(2)-s(2,3)*v(3)-s(2,4)*v(4))/s(2,2); v(1)=(p(1)-s(1,2)*v(2)-s(1,3)*v(3)-s(1,4)*v(4))/s(1,1); end
j'ai pensé a ajouter une variable dans les arguments de chaque fonction mais comment faire
je voudrais que vous me vérifier si le code en rouge qui vérifie si le pivot est nul et cherche le pivot non nul dans la premiere colonne puis échange avec cette ligne est juste ou non
merci d'avance
Partager