#python #math
Вопрос:
я следую книге «математика для программистов», и в главе, посвященной векторам, есть следующее упражнение.
Мини-проект 2.26: Пусть u-вектор (1, 2). Предположим, что существует другой вектор v с целочисленными положительными координатами (n, m), такой, что n > m и имеет расстояние 13 от u. Каково смещение от u к v? (Подсказка: вы можете использовать Python для поиска вектора v.)
Я чувствую, что понимаю логику этого упражнения, но данное решение не соответствует. вот мое решение
# the point to calculate displacement from
u = (1,2)
# requirement for v => v = (n,m) amp;amp; n > m
# (1-n, 2-m) = (displacement_x, displacement_y)
# pythago says distance squared equals sum of squared dsiplacements => 13^2 = displacement_x^2 displacement_y^2
def length(v):
return sqrt(v[0]**2 v[1]**2)
def subtract(v1, v2):
return (v1[0] - v2[0], v1[1] - v2[1])
def distance(v1, v2):
v = subtract(v1, v2) # vector subtraction tells us to go to x units to left | right and y units up | down to go from (a - b) b to a
return length(v)
for n in range(0,14):
for m in range(0, 14):
dist = distance((n,m), u)
if dist == 13 and n > m > 0:
print((n,m))
# prints (13, 7)
однако данное решение заключается в следующем
for n in range(-12,15):
for m in range(-14, 13):
if distance((n,m), (1,-1)) == 13 and n > m > 0:
print((n,m))
мой вопрос двоякий (в том случае, если я ошибаюсь)
- откуда берется вектор (1,-1) в решении ?
- почему диапазоны начинаются с отрицательных значений, если n и m должны быть положительными целыми числами ?
Комментарии:
1. Они оба кажутся мне совершенно правильными вопросами, и все, что я могу сказать, это то, что решение, данное в математическом тексте, было бы не в первый раз неверным. Но если вас обучает профессор, он должен знать об ошибках в тексте и не назначать эту проблему.
2. хорошо, спасибо за подтверждение, что я следую книге сам, так что решения-это все, что у меня есть. тогда, вероятно, это небольшая ошибка со стороны книг 🙂