Я пытаюсь написать скрипт, который вычисляет числовые производные, используя прямое, обратное и центрированное приближения, и отображает результаты. Я сделал linspace от 0 до 2pi с 100 очками. В прошлом я делал много массивов и linspace, но я никогда не видел эту ошибку: «ValueError: последовательность слишком большая; не может быть больше 32»
Я не понимаю, в чем проблема. Вот мой сценарий:
import numpy as np
import matplotlib.pyplot as plt
def f(x):
return np.cos(x) + np.sin(x)
def f_diff(x):
return np.cos(x) - np.sin(x)
def forward(x,h): #forward approximation
return (f(x+h)-f(x))/h
def backward(x,h): #backward approximation
return (f(x)-f(x-h))/h
def center(x,h): #center approximation
return (f(x+h)-f(x-h))/(2*h)
x0 = 0
x = np.linspace(0,2*np.pi,100)
forward_result = np.zeros(x)
backward_result = np.zeros(x)
center_result = np.zeros(x)
true_result = np.zeros(x)
for i in range(x):
forward_result[i] = forward[x0,i]
true_result[i] = f_diff[x0]
print('Forward (x0={}) = {}'.format(x0,forward(x0,x)))
#print('Backward (x0={}) = {}'.format(x0,backward(x0,dx)))
#print('Center (x0={}) = {}'.format(x0,center(x0,dx)))
plt.figure()
plt.plot(x, f)
plt.plot(x,f_diff)
plt.plot(x, abs(forward_result-true_result),label='Forward difference')
Я попытался установить 32 для точек linspace, но это дало мне еще одну ошибку: «TypeError:« numpy .float64 'объект не может быть интерпретирован как целое число »I тоже этого не понимаю. Что я делаю не так?