У меня возникают проблемы с повторением каждого элемента массива с помощью функции brentq
. q
в определенной ниже функции представляет собой файловый массив FITS, и мы используем каждый элемент в этом массиве в качестве входных данных для запуска функции brentq
, чтобы найти T
.
По сути, моя проблема заключается в том, что я не знаю, где и как реализовать соответствующий цикл for
для итерации функции по каждому элементу q
.
Любые предложения о том, как решить эту проблему?
def f(T,q,coeff1,coeff2,coeff3):
return q*const3 - ((exp(const2/T)-1)/(exp(const/T)-1))
a = brentq(f, 10, 435.1, args=(q,4351.041,4262.570,0.206))
print a
newhdu = fits.PrimaryHDU(a)
newhdulist = fits.HDUList([newhdu])
newhdulist.writeto('Temp21DCOT.fits')
Дополнительное объяснение: в основе того, что я пытаюсь сделать, лежит использование brentq
для определения значений температуры с использованием значений интенсивности нашего исходного массива (нашего файла FITS).
Уравнение получено из отношения двух длин волн уравнения Планка, поэтому q = B_1/B_2
, если мы хотим быть верными физике, где каждый элемент в q
является значением интенсивности. brentq
решит это аналитически неразрешимое уравнение для T
(температуры) для каждого элемента в q
и создаст новый массив температур того же размера, что и q
. Другими словами, я пытаюсь определить температуру каждого пикселя в файле FITS, используя уравнение Планка.
Примечание. Я повторно опубликовал это, чтобы более эффективно прояснить проблему.
f
. Вы используетеscipy.optimize.brentq
? - person wwii   schedule 12.07.2015brentq
args
- похоже,f.q
в вашем примере равно 1. вы спрашиваете, как выполнить итерацию по массиву и заменить значение вargs(1, 4351.041 ...
примера значениями из множество? - person wwii   schedule 12.07.2015arg(q,...)
, остальные являются константами. - person Wolfgang   schedule 13.07.2015