#python #numpy #matplotlib #math
#python #numpy #matplotlib #математика
Вопрос:
Я работаю над проектом Uni, и нам нужно написать функцию, которая задала 4 аргумента f, a, b и h.
f — это дескриптор функции, который присваивается функции
a и b — это включающие интервальные пределы функции, на которых должен быть график
и h должно быть расстоянием между двумя соседними точками.
У меня пока все есть, но я не понимаю, как увеличить или уменьшить расстояние между соседними точками.
К настоящему времени это мой код:
def plot_function_h(f,a,b,h=10**-3):
interval = np.linspace(a,b)
y = list()
for i in range(len(interval)):
y.append(f(interval[i]))
plt.plot(interval,y, 'bo')
plt.title('h-plot')
plt.xlabel('x')
plt.ylabel('f(x)')
plt.show()
Ответ №1:
Прежде всего, поскольку вы используете numpy, вам не нужно иметь цикл. Вы можете сделать это:
y = f(interval)
Что быстрее и проще.
Во-вторых, np.linspace может принимать много аргументов, один из которых — num, по умолчанию num равно 50 и определяет количество генерируемых точек. Я думаю, это должно вам помочь:
num_points = (b - a) // h
interval = np.linspace(a, b, num_points)
Комментарии:
1. Я знаю об этом факте с количеством точек в np.linspace. Но есть ли способ построить точки на определенном расстоянии друг от друга. Я не понимаю, как это может помочь.
2. А также, когда я пытаюсь использовать y = f (интервал), он сообщает мне, что только массивы размера 1 могут быть преобразованы в скаляры python