Potenziali

1
2
3
4
for i in range(1,N-1):
	for j in range(1,N-1):
		#Jacobi
		U1[i,j] = 0.25*(U[i-1,j] + U[i+1,j] + U[i,j+1] + U[i,j-1])

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
conv=1
mean_U0=mean(U)
niter=0

while conv > 1E-04:
	#ciclo for i
		#ciclo for j
	conv = abs(mean(U1)-mean_U0)
	mean_U0=mean(U1)
	U=U1.copy()
	niter+=1

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
conv=1
mean_U0=mean(U)
niter=0

while conv > 1E-04:
	for i in range(1,N-1):
		for j in range(1,N-1):
			#Seidel
			U[i,j] = 0.25*(U[i-1,j] + U[i+1,j] + U[i,j+1] + U[i,j-1])
	conv = abs(mean(U)-mean_U0)
	mean_U0=mean(U)
	niter+=1

1
2
#SOR
U[i,j] = W*0.25*(U[i-1,j] + U[i+1,j] + U[i,j+1] + U[i,j-1])+ (1-W)*U[i,j]

1
2
3
4
5
6
7
8
N=100
U=zeros((N,N))
U[:,0]=10.

#Jacobi
#U1=U.copy()
#SOR
#W.19

1
2
3
4
5
#Jacobi

#Seidel

#SOR

1
2
3
4
5
6
niter_list=[]
for N in range(20,200,20):
	#codice precedente per uno dei 3 metodi
	niter_list.append(niter)

plot(range(20,200,20),niter_list)

1
2
3
4
5
6
7
niter_list=[]
for W in arange(1,2,0.02):
	N=100
	#codice precedente per SOR
	niter_list.append(niter)

plot(arange(1,2,0.02),niter_list)