#python #arrays #integration #numeric
#python #массивы #интеграция #числовое
Вопрос:
Я пытаюсь написать некоторый код для численного интегрирования с использованием метода средней точки. A и b являются границами интегрирования. Я продолжаю получать только одно значение в моем списке средних точек. Я хочу, чтобы python просмотрел список моих значений и вычислил среднюю точку для всех значений в списке.
Это то, что я хочу: binlist = [1,2,3,4] средняя точка = [1,5, 2,5,3,5]
a=0
b=5
bins=10 #Number of bins
binnumber = np.linspace(a,b,bins)
binlist = binnumber.tolist()
midpoint= []
for elements in range(10):
i=0
midpoint1 = (binlist[i 1]-binlist[i])/2
midpoint.append(midpoint1)
i =1
print(midpoint)
Комментарии:
1. Вопрос не ясен.. Чего вы ожидаете?
2. Извините. По сути, я хочу, чтобы программа просматривала мой список значений и вычисляла среднюю точку между каждым из значений. Например: a = [1,2,3,4] средняя точка = [1,5, 2,5,3,5]
3. Тщательно подумайте о значении, которое
i
имеет каждая точка процесса. Также подумайте, какое значениеelements
будет иметь каждая точка процесса, а затем подумайте, действительно ли вы используете это значение для чего-либо и можете ли вы использовать это значение для чего-либо.4. Также, пожалуйста, прочитайте ericlippert.com/2014/03/05/how-to-debug-small-programs
5. @KarlKnechtel спасибо за ссылку. Ошибка была в логике вычисления средней точки. Я не добавлял разницу обратно к i-му значению, поэтому я получал одно и то же значение снова и снова. Во-вторых, если у меня есть список из 10 точек, я должен получить список из 9 средних точек. И да, мне не нужно было повторять с i, я мог просто использовать «элементы» в коде, и этого было бы достаточно.
Ответ №1:
l = [1,2,3,4]
n = 0
output = []
for x in range(len(l) -1):
n = (l[x] l[x 1]) /2
output.append(n)
print(output)
Вывод:
[1.5, 2.5, 3.5]
Комментарии:
1. Спасибо за публикацию этого. Я увидел, что я помещал свое определение i в неправильное место. Код переопределял i каждый раз, когда выполнялся цикл.
Ответ №2:
Проблема с вашим решением заключается в следующем
midpoint1 = (binlist[i 1]-binlist[i])/2
Это должно быть: midpoint1 = (binlist[i 1] binlist[i])/2
Вы должны добавлять элементы в список, а затем разделять
Следующий код выдает желаемый результат
import numpy as np
a=0.0
b=5.0
bins=10 #Number of bins
binnumber = np.linspace(a,b,bins)
binlist = binnumber.tolist()
midpoint= []
i = 0
while i < len(binlist)-1:
midpoint1 = (binlist[i 1] binlist[i])/2
midpoint.append(midpoint1)
i =1
print(midpoint)