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 , что, я уверен, длиннее трех элементов.

  • Выбор столбцов Pandas по dtype
  • используя вывод scipy.interpolate.UnivariateSpline позже в python или в Matlab без необходимости использования исходных данных
  • Установка SciPy в экземпляре AWS Tensorflow
  • Результаты SciPy interp1d отличаются от MatLab interp1
  • Метод поиска строго большего, чем нулевого, решения для Scipy Linear Programing от Python
  • Моделирование нейронного шипового поезда в питоне
  • Python: решение нескольких линейных систем с использованием потоков
  • Какой модуль статистики для python поддерживает один способ ANOVA с пост-hoc-тестами (Tukey, Scheffe или другой)?
  • Python - лучший язык программирования в мире.