Oct. 9th, 2010

const: (Default)
Тут меня попросили рассказать историю про программирование. Решил попробовать ;)

Давным-давно, в далёкой-далёкой галактике…

Когда я учился на третьем курсе решил я заработать автомат по курсу квантовой механики у покойного ныне профессора Фарзтдинова. И было мне поручено написать программу, которая бы в адекватное время на имеющейся тогда на кафедре машине с процессором 80286 рисовала распределение плотности электронного облака атома водорода.

Как такую задачу решает студент? пишет программу, прямо реализующую имеющуюся математику.
Вот только в той математике имеется интеграл от нуля до бесконечности. Страшно? ничуть! есть же замечательный метод трапеций, интеграл сходится, считаем до некоторого эпсилон (и чем меньше эпсилон, — тем лучше!). И так в каждой вычисляемой точке, коих немало.

Программа получилась что надо: машина гудела минут 20, после чего выводила хорошо известную кривую.

И вот в этот момент я очень удачно попался в лапы замечательному численнику Плавскому. Посмотрел он на моё творение, похмыкал на явные проявления ЧСВ студента, после чего почти за ухо отвёл к шкафу в котором стоял толстенный справочник: схемы вычисления определённых интегралов с заданной точностью по ограниченному числу точек.

В моём случае пришлось использовать 5 точек, в которых вычислялась подинтегральная функция, домножалась на коэффициент из справочника, полученные значения суммировались, и… вместо 20 минут искомая кривая рисовалась практически мгновенно, причём с большей точностью, чем в случае первоначальной 20-минутной программы.

Ergo: прежде, чем писать программу, лучше хорошо подумать как, чем и зачем. Ибо, как сказал классик: «Лучше день потерять, потом за пять минут долететь».
const: (Default)
Тут меня попросили рассказать историю про программирование. Решил попробовать ;)

Давным-давно, в далёкой-далёкой галактике…

Когда я учился на третьем курсе решил я заработать автомат по курсу квантовой механики у покойного ныне профессора Фарзтдинова. И было мне поручено написать программу, которая бы в адекватное время на имеющейся тогда на кафедре машине с процессором 80286 рисовала распределение плотности электронного облака атома водорода.

Как такую задачу решает студент? пишет программу, прямо реализующую имеющуюся математику.
Вот только в той математике имеется интеграл от нуля до бесконечности. Страшно? ничуть! есть же замечательный метод трапеций, интеграл сходится, считаем до некоторого эпсилон (и чем меньше эпсилон, — тем лучше!). И так в каждой вычисляемой точке, коих немало.

Программа получилась что надо: машина гудела минут 20, после чего выводила хорошо известную кривую.

И вот в этот момент я очень удачно попался в лапы замечательному численнику Плавскому. Посмотрел он на моё творение, похмыкал на явные проявления ЧСВ студента, после чего почти за ухо отвёл к шкафу в котором стоял толстенный справочник: схемы вычисления определённых интегралов с заданной точностью по ограниченному числу точек.

В моём случае пришлось использовать 5 точек, в которых вычислялась подинтегральная функция, домножалась на коэффициент из справочника, полученные значения суммировались, и… вместо 20 минут искомая кривая рисовалась практически мгновенно, причём с большей точностью, чем в случае первоначальной 20-минутной программы.

Ergo: прежде, чем писать программу, лучше хорошо подумать как, чем и зачем. Ибо, как сказал классик: «Лучше день потерять, потом за пять минут долететь».