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:
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])
merci.