Files
sf-op/script/Emittance/emitt_dv.py
2016-06-23 15:01:05 +02:00

46 lines
1.1 KiB
Python
Executable File

################################################################################
# s = eps * [[beta, -alpha],
# [-alpha, gamma]]
# R = R(1)->(2)
# s2 = R * s1 * RT
#
# s2_11 = s1_11 * R11**2 + 2 * s1_12 * R11 * R12 + s1_22 * R12**2
#
# A = [[R11,1**2, 2 * R11,1 * R12,1, R12,1**2],
# [R11,2**2, 2 * R11,2 * R12,2, R12,2**2],
# ...
# [R11,n**2, 2 * R11,n * R12,n, R12,n**2],
# B = [s2_11,1,
# s2_11,2,
# ...
# s2_11,n]
# X = [s1_11,
# s1_12,
# s1_22]
#
# A * X = B
################################################################################
import numpy as np
n = 5
bet = [1.74450, 1.34220, 0.99999, 0.71557, 0.48651]
eps = 25.0E-6 # m.rad
R11 = [ 0.85800, 0.71000, 0.56400, 0.42000, 0.27900]
R12 = [ 0.44100, 0.41900, 0.39800, 0.37600, 0.35500]
#A = [[1.0,2.0],[3.0,4.0],[2.0,3.0]]
#B = [[-1.0],[-1.0],[-1.2]]
#X = [[1.0],[-1.0]]
A = []
B = []
for i in range(0, n):
A.append([R11[i]**2, 2 * R11[i] * R12[i], R12[i]**2])
B.append([bet[i] * eps])
A = np.matrix(A)
B = np.matrix(B)
X = np.linalg.inv(A.T.dot(A)).dot(A.T).dot(B)
print(X)