Sylvain231 : parce que tu t'es trompé. La matrice a trois lignes, donc le produit a trois lignes.
Comme vous l'avez remarqué, j'utilise pour la transposée de la notation conforme à la norme ISO 80000-2
import numpy as np
import random as r
N=1
r.seed()
A=np.zeros((3,N));#tableau de connues 3xN
B=np.zeros((3,N));#tableau de connues 3xN
#on remplit aléatoirement A et B
for i in range(3):
for j in range(N):
A[i,j]=r.random()
B[i,j]=r.random()
print("M2=",np.matmul(A.T,np.matmul(B,np.linalg.inv(np.matmul(B.T,B)))))
import numpy as np
import random as r
N=100
r.seed()
A=np.zeros((3,N));#tableau de connues 3xN
B=np.zeros((3,N));#tableau de connues 3xN
#on remplit aléatoirement A et B
for i in range(3):
for j in range(N):
A[i,j]=r.random()
B[i,j]=r.random()
print("M2=",np.matmul(A,np.matmul(B.T,np.linalg.inv(np.matmul(B,B.T)))))
M=np.zeros((3,3));#tableau d'inconnues 3x3
S=np.zeros((9,9));#coefficients du système 9x9
R=np.zeros(9);#coefficients résultats du système 9
for j in range(3):
for l in range(3):
for k in range(3):
for i in range(N):
S[l+3*j,k+3*j]=S[l+3*j,k+3*j]+B[k,i]*B[l,i];
for j in range(3):
for l in range(3):
for i in range(N):
R[l+3*j]=R[l+3*j]+A[j,i]*B[l,i];
X = np.linalg.solve(S, R)
for j in range(3):
for k in range(3):
M[j,k]=X[k+3*j];
print("M=",M)
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 35 invités
Tu pars déja ?
Identification
Pas encore inscrit ?
Ou identifiez-vous :