Bonjour à tous,
Comme je suis débutante en python, j'ai rencontré des problèmes à résoudre mon problème qui réside dans le fait de construire une matrice B en fonction de deux vecteurs H et a.
Le problème c'est que la formulation de B est complexe et j'ai pas su comment gérer les listes, array et matrice.
Donc voici mon code:
merci.
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 from math import* import numpy as np from matplotlib import pyplot as plt a=[] Nep=10 for j in range(0,Nep): a.append((119+650*j)/(1+j)) a=np.array(a) Nfirst = 11 Ndown =21 Nup=21 c=0.03097619 k=498.13655 Ms=3.62970e+05 mu0 = 4 * np.pi * 1e-7 alpha=1.4982*10**(-4) DeltaH = 10 delta = [0] Man = np.zeros((54,10)) dMirrdH = [] Mirr = np.zeros((10,54)) M = [0] B=np.zeros((54,10)) H = [0] for j in range(Nfirst): H.append(H[j] + DeltaH) for j in range(Ndown): H.append(H[-1] - DeltaH) for j in range(Nup): H.append(H[-1] + DeltaH) H=np.array(H) delta = [0] for j in range(len(H) - 1): if H[j + 1] > H[j]: delta.append(1) else: delta.append(-1) for j in range (Nfirst + Ndown + Nup) : for i in range (0,Nep): Man[j,i]= (Ms * (1 / np.tanh((H[j + 1] + alpha * H[j]) / a[i]) - a[i] / (H[j + 1] + alpha * M[j]))) dMirrdH[j]=((Man[j+1,i] - M[j]) / (k * delta[j+1] - alpha * (Man[j + 1] - M[j]))) Mirr[j]=(Mirr[j] + dMirrdH[j + 1] * (H[j+1] - H[j])) M[j+1]=(c * Man[j + 1,i] + (1 - c) * Mirr[j + 1]) B[j+1,i]=(mu0 * (H[j+1]) + mu0 * M[j+1])
Partager