Python I';在为牛顿绘制方法图时,我得到一个值错误';s法

Python I';在为牛顿绘制方法图时,我得到一个值错误';s法,python,newtons-method,Python,Newtons Method,我有一个学校作业。首先,你能帮我确认一下我对这个问题的解释是否正确吗?代码看起来还可以吗?在此之前还有其他任务,比如用二维函数创建类,编写牛顿法等等。现在是这个问题。我还没有完成编程,但我有点卡住了,我觉得我不知道该怎么办。我用什么来运行牛顿法?在点P上。我是否像在绘图方法中那样创建它 问题是: 写一个方法图,检查牛顿方法对 几个初始向量x0。此方法应绘制所描述的内容 在以下步骤中: •使用“网格网格”命令设置网格 集合G中的N2点=[a,b]×[c,d](参数N,a,b,c和 d是方法的参数)

我有一个学校作业。首先,你能帮我确认一下我对这个问题的解释是否正确吗?代码看起来还可以吗?在此之前还有其他任务,比如用二维函数创建类,编写牛顿法等等。现在是这个问题。我还没有完成编程,但我有点卡住了,我觉得我不知道该怎么办。我用什么来运行牛顿法?在点P上。我是否像在绘图方法中那样创建它

问题是:

写一个方法图,检查牛顿方法对 几个初始向量x0。此方法应绘制所描述的内容 在以下步骤中:
•使用“网格网格”命令设置网格 集合G中的N2点=[a,b]×[c,d](参数N,a,b,c和 d是方法的参数)。得到两个矩阵X和Y 其中,特定网格点定义为pij=(Xij,Yij)

类分形2d(对象):
Allzeroes=[]#一个列表,用于添加每次运行牛顿方法时存储的所有值
定义初始化(self,f,x):
self.f=f
f0=self.f(x)#给出一个变量名以及在ckass中使用的函数
n=len(x)#表示矩阵的大小
jac=zeros([n])#创建用于雅可比矩阵的数组
h=1.e-8#为导数设置h
self.jac=jac
对于范围(n)中的i:#创建循环以从f中的x获取x和y的偏导数
温度=x[i]
#打印(x[i])
x[i]=temp+h#为什么设置x[i]两次?
#打印(x[i])
f1=f(x)
x[i]=温度
#打印(x[i])
jac[:,i]=(f1-f0)/h
def牛顿法(自身,猜测):
f_val=f(猜测)
猜
对于范围(40)内的i:
delta=求解(self.jac,-f_val)
猜测=猜测+增量

如果norm((delta),ord=2)不知道牛顿法的代码,我们无法判断。但是,如果数据为:
,则可能会出现类似于
的语句;当
数据
是一个列表时,这种方法很有效,但当数据是一个NumPy数组时就不行了。通常还应该包括完整的回溯:而不仅仅是一条(最后一条)错误行。
class fractals2D(object):
Allzeroes = []       #a list to add all stored values from each run of newtons method
def __init__(self,f, x):
    self.f=f
    f0 = self.f(x)          #giving a variable name with the function to use in ckass
    n=len(x)               #for size of matrice
    jac=zeros([n])        #creates an array to use for jacobian matrice
    h=1.e-8                 #to set h for derivative
    self.jac = jac
    for i in range(n):     #creating loop to take partial derivatives of x and y from x in f
        temp=x[i]  
        #print(x[i])
        x[i]=temp +h        #why setting x[i] two times?  
        #print(x[i])
        f1=f(x)
        x[i]=temp
        #print(x[i])
        jac[:,i]=(f1-f0)/h
def Newtons_method(self,guess):
    f_val = f(guess)
    self.guess = guess

    for i in range(40):


        delta = solve(self.jac,-f_val)
        guess = guess +delta
        if norm((delta),ord=2)<1.e-9:
            return guess    #alist for storing zeroes from one run
def ZeroesMethod(self, point):
    point = self.guess
    self.Newtons_method(point)             
                  #adds zeroes from the run of newtons to a list to store them all
    self.Allzeroes.append(self.guess)
    return (len(self.Allzeroes))          #returns how many zeroes are found 

def plot(self, N, a, b, c, d):
    x = np.linspace(a, b, N)
    y = np.linspace(c, d, N)
    P = [X, Y] = np.meshgrid(x, y)
    return P    #calling ZeroesMethos with our newly meshed point of several arrays







x0 = array([2.0, 1.0])    #creates an x and y value?  
x1= array([1, -5]) 
a= array([2, 8])
b = array([-2, -6])



def f(x):
    f = np.array(
            [x[0]**2 - x[1] + x[0]*cos(pi*x[0]),
             x[0]*x[1] + exp(-x[1]) - x[0]**(-1)])