Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于数据帧的newton-raphson方法_Python_Scipy_Dataframe_Nonlinear Functions_Nonlinear Optimization - Fatal编程技术网

Python 基于数据帧的newton-raphson方法

Python 基于数据帧的newton-raphson方法,python,scipy,dataframe,nonlinear-functions,nonlinear-optimization,Python,Scipy,Dataframe,Nonlinear Functions,Nonlinear Optimization,我使用scipy中的newton()函数来解一个特定的非线性方程,该方程适用于单个值 def iv(p): I=p diode=Il-(Io*(np.exp((v+(I*RS))/a)-1))-((v+(I*RS))/Rsh)-I return diode I=[opt.newton(iv,2)for v in np.arange(0,44.5,0.1)] 我尝试对8760个值(I,Io,RS,a,Rsh)做同样的操作,这些值是单独的数据帧 def elec():

我使用scipy中的newton()函数来解一个特定的非线性方程,该方程适用于单个值

 def iv(p):
   I=p
   diode=Il-(Io*(np.exp((v+(I*RS))/a)-1))-((v+(I*RS))/Rsh)-I

   return diode

 I=[opt.newton(iv,2)for v in np.arange(0,44.5,0.1)]
我尝试对8760个值(I,Io,RS,a,Rsh)做同样的操作,这些值是单独的数据帧

def elec():


I=DataFrame(zeros(3898200).reshape((8760,445)),index=pd.date_range('1/1/2001 00:00','12/31/2001 23:59',freq='1h'),dtype=float)

   for i in np.arange(0,8761,1):

      def power(u):

        I=u
        diode=DataFrame(zeros(3898200).reshape((8760,445)),index=pd.date_range('1/1/2001 00:00','12/31/2001 23:59',freq='1h'),dtype=float)

        diode[i]=IL[i]-(Io[i]*(np.exp((v+(I*RS[i]))/a[i]-1)))-((v+(I*RS[i]))/Rsh[i])-I

        return diode

  I[i]=[opt.newton(power,2)for v in np.arange(0,44.5,0.1)]
  return I
I=elec()
我得到一个索引错误的错误:索引超出范围
我应该得到8760*445的I值

Traceback (most recent call last):
File "<ipython-input-176-18d774ef131a>", line 5, in <module>
elec()
File "<ipython-input-174-996ccd566a20>", line 18, in elec
I[i]=[opt.newton(power,2)for v in np.arange(0,44.5,0.1)]
File "C:\Python27\lib\site-packages\scipy\optimize\zeros.py", line 143, in newton
q0 = func(*((p0,) + args))
File "<ipython-input-174-996ccd566a20>", line 14, in power
diode_east[i]=IL_east[0][i]-(Io_east[0][i]*(np.exp((v+(I*RS_ref[i]))/a_east[0][i]-1)))-   ((v+(I*RS_ref[i]))/Rsh_east[0][i])-I
File "C:\Python27\lib\site-packages\pandas\core\series.py", line 613, in __getitem__
return self.index.get_value(self, key)
File "C:\Python27\lib\site-packages\pandas\tseries\index.py", line 1132, in get_value
return Index.get_value(self, series, key)
File "C:\Python27\lib\site-packages\pandas\core\index.py", line 769, in get_value
return tslib.get_value_box(series, key)
File "tslib.pyx", line 364, in pandas.tslib.get_value_box (pandas\tslib.c:8228)
File "tslib.pyx", line 379, in pandas.tslib.get_value_box (pandas\tslib.c:8075)
IndexError: index out of bounds

<type 'exceptions.IndexError'>
回溯(最近一次呼叫最后一次):
文件“”,第5行,在
elec()
文件“”,第18行,在elec中
I[I]=[np.arange(0,44.5,0.1)中v的选择牛顿(幂,2)]
文件“C:\Python27\lib\site packages\scipy\optimize\zeros.py”,第143行,牛顿格式
q0=func(*(p0,)+args))
文件“”,第14行,处于power状态
二极管东[i]=IL东[0][i]-(Io东[0][i]*(np.exp((v+(i*RS东[i]))/a东[0][i]-1))-((v+(i*RS东[i])/Rsh东[0][i])-i
文件“C:\Python27\lib\site packages\pandas\core\series.py”,第613行,在\uu getitem中__
返回self.index.get_值(self,key)
文件“C:\Python27\lib\site packages\pandas\tseries\index.py”,第1132行,在get\u值中
返回索引。获取_值(self、series、key)
文件“C:\Python27\lib\site packages\pandas\core\index.py”,第769行,在get\u值中
返回tslib.get_value_框(系列,键)
文件“tslib.pyx”,第364行,在pandas.tslib.get拞u value拞框(pandas\tslib.c:8228)中
文件“tslib.pyx”,第379行,在pandas.tslib.get_value_框中(pandas\tslib.c:8075)
索引器:索引超出范围

您能提供完整的回溯吗?很抱歉,我更改了变量的名称…Io_east[0]是一个8760值的数据帧…就像其他变量的wise一样…由于缩进错误或非常规样式,我发现很难读取您的代码。
power
是在另一个函数的循环内部定义的吗?另外,在调用
newton
的两行中,您没有使用
v
,即使这是列表的变量。虽然我假设您依赖于
v
的范围来包括
power
函数的范围。是的,power是在for循环中定义的…我已经更正了缩进