Как оптимизировать между двумя матрицами и вернуть параметры матрицы? - PullRequest
0 голосов
/ 07 ноября 2019

Матрица, полученная в виде формулы, выглядит следующим образом:

Матрица формулы состоит из параметров A и B и альфа, которые являются коэффициентами xx2 и yy2, а также их A, B и Alpha. значения неизвестны. и известен только предел параметра, что («A», «B» - между двумя числами 1 и 5, за исключением четных чисел, которые также содержат числа 1 и 5, «альфа» - между двумя числами 1.01 и 1.5, которые могут включатьчисла, которые могут быть числами 1.01 и 1.5

, например: uu = alpha * (xx2) + A * (yy2) + B * xx2

А значения yy2 и xx2 имеют видследует:

yy2= array([0.        , 0.03846154, 0.07692308, 0.11538462, 0.15384615,
       0.19230769, 0.23076923, 0.26923077, 0.30769231, 0.34615385,
       0.38461538, 0.42307692, 0.46153846, 0.5       , 0.53846154,
       0.57692308, 0.61538462, 0.65384615, 0.69230769, 0.73076923,
       0.76923077, 0.80769231, 0.84615385, 0.88461538, 0.92307692,
       0.96153846, 1.        ])

xx2 = array([0.        , 0.01470588, 0.02941176, 0.04411765, 0.05882353,
       0.07352941, 0.08823529, 0.10294118, 0.11764706, 0.13235294,
       0.14705882, 0.16176471, 0.17647059, 0.19117647, 0.20588235,
       0.22058824, 0.23529412, 0.25      , 0.26470588, 0.27941176,
       0.29411765, 0.30882353, 0.32352941, 0.33823529, 0.35294118,
       0.36764706, 0.38235294, 0.39705882, 0.41176471, 0.42647059,
       0.44117647, 0.45588235, 0.47058824, 0.48529412, 0.5       ,
       0.51470588, 0.52941176, 0.54411765, 0.55882353, 0.57352941,
       0.58823529, 0.60294118, 0.61764706, 0.63235294, 0.64705882,
       0.66176471, 0.67647059, 0.69117647, 0.70588235, 0.72058824,
       0.73529412, 0.75      , 0.76470588, 0.77941176, 0.79411765,
       0.80882353, 0.82352941, 0.83823529, 0.85294118, 0.86764706,
       0.88235294, 0.89705882, 0.91176471, 0.92647059, 0.94117647,
       0.95588235, 0.97058824, 0.98529412, 1.        ])

И матрица, полученная из Excel, выглядит следующим образом, где основная матрица - "df_nump":

path = '100802_1.xlsx' 

df_main = pd.read_excel(path)


df_summarry = df_main.iloc[1:2, 3:15]
df_summarry.columns = df_main.iloc[0,3:15]

df = df_main.iloc[8:,0:].reset_index()


del df['index']



df.columns = ['x_' + str(x) for x in range(np.size(df,1))]


df_y = normalize(df.iloc[1:,0])


'''x coordinate #experiment data'''
df_y1 = (df.iloc[1:,0]) 


df_x = normalize(df.iloc[0, 1:])


''' y coordinate #experiment data ''' 
df_x1 = (df.iloc[0, 1:]) 


''' the main matrix ''' 
df_nump = df.iloc[1:,1:].fillna(0)

и код для поиска ближайших элементов в двух матрицах ("uu"," df_nump ") без повторов [продублировано] и возвращает индексы двух матриц:

list1=np.array(df_y1)
list2=xx2

index_dfy1=[]
index_xx2=[]
for i in range(len(list1)):

  if (len(list2)) > 1: #When there are elements in list2

    temp_result = abs(list1[i] - list2) #Matrix subtraction

    min_val = np.amin(temp_result) #Getting the minimum value to get closest element
    min_val_index = np.where(temp_result == min_val) #To find index of minimum value

    closest_element = list2[min_val_index] #Actual value of closest element in list2

    list2 = list2[list2 != closest_element] #Remove closest element after found

    print(i, list1[i], min_val_index[0][0], closest_element[0]) #List1 Index, Element to find, List2 Index, Closest Element
    index_dfy1.append(i)
    index_xx2.append(min_val_index[0][0])

  else: #All elements are already found

    print(i, list1[i], 'No further closest unique closest elements found in list2')

idx_dfy1 = index_dfy1
idx_xx2 = index_xx2

print(idx_dfy1)
print(idx_xx2)

###################################################

list1=np.array(df_x1)
list2=yy2

index_dfx1=[]
index_yy2=[]
for i in range(len(list1)):

  if (len(list2)) > 1: #When there are elements in list2

    temp_result = abs(list1[i] - list2) #Matrix subtraction

    min_val = np.amin(temp_result) #Getting the minimum value to get closest element
    min_val_index = np.where(temp_result == min_val) #To find index of minimum value

    closest_element = list2[min_val_index] #Actual value of closest element in list2

    list2 = list2[list2 != closest_element] #Remove closest element after found

    print(i, list1[i], min_val_index[0][0], closest_element[0]) #List1 Index, Element to find, List2 Index, Closest Element
    index_dfx1.append(i)
    index_yy2.append(min_val_index[0][0])

  else: #All elements are already found

    print(i, list1[i], 'No further closest unique closest elements found in list2')

idx_dfx1 = index_dfx1
idx_yy2 = index_yy2

print(idx_dfx1)
print(idx_yy2)

Теперь я хочу оптимизировать между двумя матрицами" uu "," df_nump ", чтобы определить наилучшее значениеПараметры «a», «b», «alpha», А определяют величину ошибки на основе метода квадратного корня (R-квадрата)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...