LINUX.ORG.RU
ФорумTalks

[fp?] Вычислительный практикум


0

1

Добрый день.

Здесь наверняка кто-нибудь проходил курс «численные методы» и практикум к нему. Вот пришла и моя очередь.

Основной вопрос — выбор подходящего инструмента. Преподаватель называл в качестве возможных вариантов C, Maple, Matlab и т.п., но можно и что-нибудь своё.

На C и прочей императивщине тупо кодить задание неохота. Также неохота разбираться с чем-то мёртвым и прикопанным. Более-менее знаком с Хаскелем, но показывать чисто функциональный код далёкому от этих сфер человеку, думаю, будет невесело.

Думаю, идеальным был бы хороший многопарадигменный язык, живой и красивый.

Прошу варианты.

Ответ на: комментарий от ChALkeR

>Я не защищаю матлаб, я на косяки октавы указываю. Ты говорил, что всё беспроблемно.

ну так и есть. Те проблемы, что ты назвал ими не являются.

dikiy ★★☆☆☆
()
Ответ на: комментарий от dikiy

Доберусь до того компьютера снова — проверю, отпишусь.

ChALkeR ★★★★★
()

Python же.

Сдавал лабы по курсу, препод оценила.

Solace ★★
()

Когда я сдавал численные методы, мы делали задания на «C и прочей императивщине», чтобы разобраться, как эти методы работают на низком уровне. Функциональные языки, несмотря на всю их прелесть, здесь и рядом не стояли.
Знал бы ассемблер на должном уровне - сдавал бы на ассемблере.
А все эти maple-matlab-прочее входили в отдельный курс матмоделирования, где основная задача была не в изучении ЧМ, а решении практических задач.

Не стоит совать свои любимые инструменты куда попало.
Синдром утёнка налицо.

schizoid ★★★
()

Итак вариантов всего два:

1) R

2) J

в обоих вариантах избегать использования циклов

psv1967 ★★★★★
()
Ответ на: комментарий от dikiy

ну, если ему нужно сделать именно программу, то еще какая проблема. Хочешь поиграть в Half-Life, с устройством вывода - файлом png?

stevejobs ★★★★☆
()
Ответ на: комментарий от yoghurt

>Бумага и ручка

плюсую неистово, не могу заставить студентов набросать схему на бумаге, начинают что-то набивать сразу, но при этом часто не могут даже объяснить что хотят сделать (((

WerNA ★★★★★
()
Ответ на: комментарий от stevejobs

>ну, если ему нужно сделать именно программу, то еще какая проблема. Хочешь поиграть в Half-Life, с устройством вывода - файлом png?

да боже ж мой, ну используй octaviz. Он для этого хорош, насоколько я помню.

dikiy ★★☆☆☆
()
Ответ на: комментарий от schizoid

>А зачем, по-твоему, придумали Фортран? Чтобы раз попользоваться и забыть?

да. Он был придуман в мохнатые 50-ые. А matlab был придуман для того, чтобы не забивать голову лишней фигней и сразу решать задачи.

Чтобы сейчас писать на фортране надо иметь чрезвычайно весомые аргументы для этого.

dikiy ★★☆☆☆
()
Ответ на: комментарий от schizoid

>Знал бы ассемблер на должном уровне - сдавал бы на ассемблере.

я знаю ассемблер на должном уровне. Но мне и в голову не придет реализовывать на нем лабы по численным методам. Это просто фимоз.

dikiy ★★☆☆☆
()

Так как я сейчас Python изучаю, то его и посоветую :-)
А если серьезно, то неограниченная точность в вычислениях + простой и понятный синтаксис + хорошие мат. библиотеки должны помочь в поставленной задаче.

deterok ★★★★★
()

Однозначно Mathematica. Есть под линукс, версия для студентов (которой просто за глаза хватает для базового курса) стоит всего $140, если хочется лицензию. Развивается, поддерживается, можно писать в разных стилях, очень быстро осваивается.

note173 ★★★★★
()
Ответ на: комментарий от note173

>Однозначно Mathematica. Есть под линукс, версия для студентов (которой просто за глаза хватает для базового курса) стоит всего $140, если хочется лицензию.

Только зачем она ТС нужна, а тем более за 140$ - непонятно.

dikiy ★★☆☆☆
()
Ответ на: комментарий от schizoid

> мы делали задания на «C и прочей императивщине», чтобы разобраться, как эти методы работают на низком уровне. Функциональные языки, несмотря на всю их прелесть, здесь и рядом не стояли.

Это полезно только если хочется улучшить свои знания в одном из языков. При изучении чего-то нового лучше, все-таки, чтобы ничего от самой задачи не отвлекало.

note173 ★★★★★
()
Ответ на: комментарий от note173

>Так подходит по всем пунктам же.

зато ресурсов жрет больше чем octave - раз. Предназначена в первую очередь для символных вычислений - два.

ТС нужен octave 100%. С ним он сразу получит опыт для работы в реале. Да и тем более он гнутый, немного весит и ресурсов не жрет.

dikiy ★★☆☆☆
()
Ответ на: комментарий от dikiy

> ТС нужен octave 100%. С ним он сразу получит опыт для работы в реале. Да и тем более он гнутый, немного весит и ресурсов не жрет.

Если хочется полностью разобраться во всем процессе — не спорю, есть другие инструменты. При обучении оно нафиг не нужно.

note173 ★★★★★
()
Ответ на: комментарий от power

>>тем более за 140$ - непонятно.

Советую зайти на http://wolfram.com/ и посмотреть на возможности восьмой Математики :)

я повторю еще раз: зачем она нужна ТС - непонятно.

dikiy ★★☆☆☆
()
Ответ на: комментарий от note173

>> ТС нужен octave 100%. С ним он сразу получит опыт для работы в реале. Да и тем более он гнутый, немного весит и ресурсов не жрет.

Если хочется полностью разобраться во всем процессе — не спорю, есть другие инструменты. При обучении оно нафиг не нужно.

не понял. Что не нужно? Mathematica? ну так я о том и говорю.

dikiy ★★☆☆☆
()

Забавно. Буквально прошлой весной помогал принимать зачет у физиков-третьекуров, по ЧМам для flow dynamics. Мы тоже разрешили студентам не ограничиваться стандартным С/С++, хотя это были базовые языки курса. Так вот, один «юноша бледный со взором горящим» (С) притащил разностный метод на F# (!!!), умудрившись запустить это под Mono. Поскольку студент мне изначально показался головастым, я не поленился ему разжевать кое-какие моменты из C++, включая Boost и некоторые новинки С++11, типа тех же лямбд. Также аккуратно намекнул, что рекурсия - не самый лучший способ решать сеточные задачи. Рассказал про параллельные алгоритмы и GPU. После того, как код на С++ получился короче раза в три, а выигрыш по производительности, дай Б-г памяти, составил раз 25, у юноши больше не возникало вопросов насчет использования ФЯП в ЧМах. На закономерный вопрос «а накуя, собственно, F#?» - студент честно признался, что начитался какого-то местного «Вестника свидетелей Иеговы» "Теоретикума Практикума функционального программирования". Диплом свой он делает на С++ и Thrust.

Зато одна смышленая девчушка представила решение на Python, разумно используя NumPy там, где надо было. На разборе решений профессор похвалил ее решение как одно из самых изящных.

Казалось бы разумным предложить Python и топикстартеру: хороший, живой и в чем-то изящный мультипарадигменный язык. Но, сдается мне, ТС отвергнет это предложение. У него несколько другие задачи, нежели оптимальное, производительное и красивое решение. Своим заявлением:

На C и прочей императивщине тупо кодить задание неохота.

- ТС четко постулирует, что его цель - решить задачу наименее мейнстримовым (наиболее маргинальным) методом, игнорируя технические преимущества и недостатки, равно как и саму применимость оного. Это - признак обычного юношеского нонконформизма; со временем это проходит (увы, не у всех). Посему воздержусь от рекомендаций конкретных языков, зато пожелаю: поменьше читать ЛОР, Нульчан, ПФП и прочие рассадники сектантства; повзрослеть; заиметь собственную голову на плечах; толкового научного руководителя; хорошую практическую и полезную задачу в качестве курсовика/диплома.

С приветом, доктор Кукинштейн

Kuka ★★
()
Ответ на: комментарий от dikiy

Не нужны инструменты, которые нужно изучать. Математику специально изучать не нужно и можно с третьей минуты знакомства написать что-нибудь интересное.

note173 ★★★★★
()
Ответ на: комментарий от note173

>Не нужны инструменты, которые нужно изучать. Математику специально изучать не нужно и можно с третьей минуты знакомства написать что-нибудь интересное.

как и octave.

dikiy ★★☆☆☆
()

P.S. Может, лучше в Development?

Kuka ★★
()
Ответ на: комментарий от Kuka

Буквально прошлой весной помогал принимать зачет у физиков-третьекуров, по ЧМам для flow dynamics.

А потом ты проснулся и полез в Википедию, разбираться, что же тебе приснилось?

power
()
Ответ на: комментарий от note173

>Это полезно только если хочется улучшить свои знания в одном из языков.
Это полезно, в первую очередь, если хочется улучшить свои знания о том, как переносятся алгоритмы из точной, формальной математики в дискретную компьютерную среду, с кучей вытекающих следствий от простого переполнения переменных до измерения погрешностей/дискретности и т.д.
Это для численных методов (о коих спрашивал ТС), конечно, не для матмоделирования.

schizoid ★★★
()
Ответ на: комментарий от schizoid

> Это полезно, в первую очередь, если хочется улучшить свои знания о том, как переносятся алгоритмы из точной, формальной математики в дискретную компьютерную среду, с кучей вытекающих следствий от простого переполнения переменных до измерения погрешностей/дискретности и т.д.

Ну не всем ведь это нужно — разбираться в реализации на низком уровне. Инструмент для быстрого и простого написания решения я привел, после получения рабочего кода можно переписать хоть на ассемблере, сравнивая результаты с более очевидной версией.

note173 ★★★★★
()
Ответ на: комментарий от note173

>после получения рабочего кода можно переписать хоть на ассемблере, сравнивая результаты с более очевидной версией.
Это переизобретённый псевдокод, что ли? :)

Я не призываю писать на ассемблере. Тот же NumPy здесь подойдёт без проблем.
Нам преподавали численные методы как дисциплину, изучающую возможность, к примеру, найти решение дифура с учётом всех вышемнойсказанных отличий вычислительной техники от аналитической математики (на низком уровне разобраться в процессе).
А не дающую знание о том, как найти решение в матлабе.
Наверное, это тоже синдром утёнка.

schizoid ★★★
()
Ответ на: комментарий от power

> А потом ты проснулся и полез в Википедию, разбираться, что же тебе приснилось?

Описанная выше история идет настолько вразрез с вашей картиной мира, что кажется фантастической? Что же, могу вам посочувствовать. Вы, судя по-всему, относитесь к разряду «толкиенистов от IT», живущих в идеалистическом розовом мире зигохистоморфных препроморфизмов, шестиуровневых квазиквотаций и кластеров метапарадигм. При первом же столкновении с реальными, практическими задачами пелена спадает. Как правило.

Kuka ★★
()
Ответ на: комментарий от power

Кстати, забавно: эльфийский никнейм топикстартера подтверждает мою гипотезу. Склонность к маргинальным ЯП - это точно такое же неприятие реальности, как и толкиенутость. Я ничему не удивлен.

Kuka ★★
()
Ответ на: комментарий от Kuka

Описанная выше история кажется фантастической по причине твоей некомпетентности, многократно доказанной тобой ранее. Твой же баттхерт и переход на личности при первом критичном комментарии лишь подтверждает наблюдения.

power
()
Ответ на: комментарий от Kuka

И да, понятия не имею, о какой «толкиенутости» идет речь. Опять же, я не удивлен появлению у тебя «гипотез» на ровном месте.

power
()
Ответ на: комментарий от Reset

Вот поэтому и не хочется брать чисто функциональный язык. С другой стороны, без некоторых красивостей, свойственных этим языкам, грустно.

Пример на функции высших порядков из доки по Octave:

  function y = gauss(x)
    y = exp(-x.^2/2);
  end

  function S = mpr(fun,a,b,N)
    h = (b-a)/N;
    S = h*sum(feval(fun,[a+h/2:h:b]));
  end
Делается через eval, что, по-моему, плохо. А в Си же такое ещё хуже будет выглядеть?

Felagund
() автор топика
Ответ на: комментарий от Felagund

Нет, в Си будет хорошо и без eval'ов в данном случае.

Reset ★★★★★
()
Ответ на: комментарий от power

> переход на личности

Ну, а что прикажете делать, если проблема именно в личности?

Описанная выше история кажется фантастической по причине твоей некомпетентности


...сказал он и перешел на личности. Попутно применив «argumentum ad hominem». Аргументов по существу не будет, я полагаю? И, кстати, вам еще надо заслужить право критиковать мою компетентность, молодой человек.

баттхерт


Патологическое стремление выявить некую симптоматику у окружающих, как правило, свидетельствует о латентном течении болезни у самого подозревающего (ср. народн. «У кого что болит...»)

Доктор Кукинштейн рекомендует локальные анестетики, охлаждающую мазь и свечи.

Kuka ★★
()
Ответ на: комментарий от power

> я не удивлен появлению у тебя «гипотез» на ровном месте.

Понимаете ли в чем дело, молодой человек. Homo Sapiens'у присуще строить гипотезы для объяснения окружающих его феноменов. То, что вы видите здесь «ровное место» и не видите феноменов - исключительно потому, что феноменом являетесь вы сами.

И да, Человеку Разумному присуще делиться гипотезами с окружающими его Разумными Людьми. Hint: мой пост не предназначался для вас.

Kuka ★★
()
Ответ на: комментарий от anonymous_incognito

> Поигрался бы с кластерами

Увы, под рукой нет.

CUDA на видеоплате…

Да, было бы занятно. Пожалуй. Но кругом есть множество более интересных занятий. Впрочем, из-за нежелания напрягать мозг даже им я уделяю очень мало внимания. Вряд ли дело дойдёт до параллельщины.

Felagund
() автор топика
Ответ на: комментарий от Kuka

Доктор, тебе смешно, а это, между прочим, совсем не весело. Оффтопик, но чем неприятие реальности посоветуешь лечить?

Felagund
() автор топика
Ответ на: комментарий от Kuka

Кстати, про Питон прозвучало убедительно. Но в целом как-то слегка троллевато и грубо. Или как раз поэтому и убедительно?…

Felagund
() автор топика
Ответ на: комментарий от Kuka

Аргументов по существу не будет, я полагаю? И, кстати, вам еще надо заслужить право критиковать мою компетентность, молодой человек.

Показывай код, сынок.

power
()
Ответ на: комментарий от Felagund

> чем неприятие реальности посоветуешь лечить?

Ох-хо-хо. Сложный вопрос, молодой человек; в трех словах вам на него никто не ответит, не только я. Но разрешите процитировать совершенно потрясающий жизненный принцип:

Господи, даруй мне смирения принять то, чего не могу изменить;
Смелости изменить то, чего не могу принять;
Мудрости, чтобы отличить одно от другого.

Сразу оговорюсь, что к религии я, как бы это сказать, «не отношусь». (Надо признать, это вызывало немало проблем в насквозь пораженной КатГМ'ом Америке, но это совсем другая история). Сию цитату (изначально молитву, так называемый «Serenity Prayer») я услышал от одного тогдашнего коллеги. Несмотря на изначальную природу, в ней содержится мудрейший совет. Намекаю, что самая важная строчка - последняя. Но, увы, универсального рецепта для «прокачки» этого «скилла» человечество еще не придумало. Только время, молодой человек, только время. Запаситесь терпением.

Kuka ★★
()
Ответ на: комментарий от Felagund

> Кстати, про Питон прозвучало убедительно. Но в целом как-то слегка троллевато и грубо. Или как раз поэтому и убедительно?…

Ну, полноте. Видит Б-г, я обидить не хотел. Недооценил вас сначала, каюсь.

Если вас действительно интересует красивое решение на немаргинальном (современном, мультипарадигменном, хорошо поддерживаемом и динамично развивающемся) языке - действительно, попробуйте Python. Однако, следует отдавать себе отчет в сильных и слабых его сторонах (которые есть у любой технологии). Рекомендую сразу поинтересоваться NumPy - с высокой долей вероятности вам придется его задействовать. Python, несмотря на сознательно упрощенный подход ко многим концепциям, весьма популярен в научной среде для прототипирования алгоритмов, реализации связующего кода и описания моделей. При этом тяжелые вычислительные подзадачи делегируются NumPy, PyCUDA или коду на Си.

Есть еще один важный принцип: выбирать инструмент сообразно с решаемой задачей. Численные методы - предмет довольно объемный; разрешите поинтересоваться, какого сорта задачи, решаемые конкретно вами?

Kuka ★★
()
Ответ на: комментарий от power

> Показывай код, сынок.

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

P.S. Если действительно интересуетесь моими разработками, приезжайте в CERN, вам все покажут. Только, предупреждаю, в таком тоне с вами никто разговаривать не будет - прогонят, извиняюсь, ссаными тряпками. Несмотря на то, что Швейцария.

Kuka ★★
()
Ответ на: комментарий от Kuka

Все ок, я так только с клоунами типа тебя обращаюсь.

Всем, кому я хотел доказать компетентность, я уже доказал: диссертационному совету, ВАКу, редакциям реферируемой периодики по CS, работодателям.

Ссылки на статьи и автореферат, раз уж заговорил. Без пруфов ты болтун-фантазер.

Если действительно интересуетесь моими разработками, приезжайте в CERN, вам все покажут.

Мне приехать в CERN и попросить показать результаты работы Шмоэля Кукинштейна?

power
()
Ответ на: комментарий от power

> Ссылки на статьи и автореферат

Молодой человек. Вы ведь знаете, что я люблю высказываться резко и прямо. Что многие меня на ЛОРе из-за этого не любят, и что ЛОР кишит неадекватами. Раскрытие моей identity может негативно повлиять на карьеру и безопасность семьи. Пусть даже вероятность этого 1%; неужели вы думаете, что я пойду на такой риск ради возможности что-то доказать первому попавшемуся форумному олуху?

Мне приехать в CERN и попросить показать результаты работы Шмоэля Кукинштейна?


Если вам _действительно_ интересны мои разработки, и вы выберетесь в CERN до февраля будущего года, то я вас готов лично встретить :) Смелее.

Kuka ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.