Прежде всего, обратите внимание, что (p*1/2*k)
- очень запутанный способ написать умножение. (Во всех) языках программирования умножения и деления выполняются слева направо, поэтому (p*1/2*k)
равно (p*k/2)
, хотя, возможно, вы имели в виду (p/(2*k))
.
Когда строит 2D-график , вы должны думать, что вы хотите в направлении x
, а что в направлении y
. Поскольку вы даете только x
, нечего строить. Кроме того, plot
по умолчанию хотят рисовать линии, и для линии необходимы как минимум 2 пары xy. Чтобы нарисовать только точку, plot принимает третий параметр, например, «ro» для представления красной точки. Предположим, что u
означает направление y
, а у вас нет x
, вы можете задать ему ноль:
plt.plot(0, u, 'ro')
Теперь, вероятно, вы хочу нарисовать кривую u
для различных значений некоторых x
. Поскольку в вашем уравнении нет ни x
, ни t
, мне трудно узнать, что вы хотели бы видеть в горизонтальном направлении.
Предположим, вы хотите показать u
как функция d
и значение d
изменяется от 0.0
до 0.0005
. Как правило, с numpy вы создаете последовательность значений для d
, скажем, разделить на 200 небольших интервалов: d = np.linspace(0.0, 0.0005, 200)
. Затем существует магия numpy, которая, когда вы пишете u = f(d)
, numpy создает массив для u
с таким количеством записей, как d
.
Пример:
import numpy as np
from matplotlib import pyplot as plt
n = 0.4
k = 53
d = np.linspace(0.0, 0.0005, 200) # 0.000264
r = 0.000132
p = 15000
u = (n / n + 1) * (p * 1 / 2 * k) ** (1 / n) * (d ** ((n + 1) / n) - r ** ((n + 1) / n))
plt.plot(d, u)
plt.show()
![the plot](https://i.stack.imgur.com/g2VaB.png)