fsolve – несоответствие между входом и выходом

Я пытаюсь решить перераспределенную систему уравнений с тремя неизвестными. Я могу получить решение с fsolve и lsqnonlin в MATLAB, вызвав систему уравнений через цикл for.

Но в python, использующем scipy, я получаю следующее сообщение об ошибке:

fsolve: there is a mismatch between the input and output shape of the 'func' argument 'fnz' 

Код приведен ниже:

 from xlrd import open_workbook import numpy as np from scipy import optimize g = [0.5,1,1.5] wb = open_workbook('EThetaValuesA.xlsx') sheet=wb.sheet_by_index(0) y=sheet.col_values(0,1) t1=sheet.col_values(1,1) t2=sheet.col_values(2,1) t3=sheet.col_values(3,1) def fnz(g): i=0 sol=[0 for i in range(len(t1))] x1 = g[0] x2 = g[1] x3 = g[2] print len(t1) for i in range(len(t1)): # various set of t1,t2 and t3 gives the various eqns print i sol[i]=x1+t1[i]/(x2*t2[i]+x3*t3[i])-y[i] return sol Anz = optimize.fsolve(fnz,g) print Anz 1 from xlrd import open_workbook import numpy as np from scipy import optimize g = [0.5,1,1.5] wb = open_workbook('EThetaValuesA.xlsx') sheet=wb.sheet_by_index(0) y=sheet.col_values(0,1) t1=sheet.col_values(1,1) t2=sheet.col_values(2,1) t3=sheet.col_values(3,1) def fnz(g): i=0 sol=[0 for i in range(len(t1))] x1 = g[0] x2 = g[1] x3 = g[2] print len(t1) for i in range(len(t1)): # various set of t1,t2 and t3 gives the various eqns print i sol[i]=x1+t1[i]/(x2*t2[i]+x3*t3[i])-y[i] return sol Anz = optimize.fsolve(fnz,g) print Anz 

Может ли кто-нибудь предложить, где я ошибаюсь? Заранее спасибо.

One Solution collect form web for “fsolve – несоответствие между входом и выходом”

Исключение означает, что результат fnz() функции fnz() не имеет того же размера, что и вход g , который является списком из трех элементов, или может рассматриваться как array формы (3,) .

Чтобы проиллюстрировать проблему, если мы определим:

 def fnz(g): return [2,3,5] Anz = optimize.fsolve(fnz,g) 

Такое исключение не будет. Но это будет:

 def fnz(g): return [2,3,4,5] Anz = optimize.fsolve(fnz,g) 

Результат из fnz() должен иметь ту же длину, что и t1 , что, я уверен, длиннее трех элементов.

  • Ошибка при установке scipy на окнах
  • Python - эффективный способ найти наибольшую площадь определенного значения в массиве 2D numpy
  • Переупорядочение матричных элементов для отражения кластеризации столбцов и строк в naiive python
  • коэффициенты интерполяции сплайна в scipy
  • CountVectorizer не печатает словарный запас
  • Более эффективно рисовать полигоны с помощью matplotlib
  • scipy - построение решетки, которая ловушки молекул в 2d размерности
  • hdf5 не поддерживается (пожалуйста, установите / переустановите h5py) Scipy не поддерживается! при импорте TFLearn?
  • Элементарная мощность матрицы scipy.sparse
  • Булевы операции на матрицах scipy.sparse
  • Передача аргументов в fsolve
  • Python - лучший язык программирования в мире.