LINUX.ORG.RU

what if analysis

 


0

2

Периодически возникает надобность выполнить какой-нибудь расчет в несколько десятков действий, потом поменять несколько цифр и еще раз пересчитать,посмотреть как результаты изменится. По-буржуйски это называют «what if analysis». Многократно пересчитывать на калькуляторе - долго. Писать полноценную программу - из пушки по воробьям,особенно если gui ей делать,это займет еще больше времени чем пересчитать на калькуляторе.

Эдак четверть века назад видел у одного знакомого какой-то софт,виндовый разумеется, в котором можно было написать текст с рассуждениям,вставить в него формулы и клеточки куда цифры вводить, и потом с этим работать, оно само пересчитывало. Даже можно было заставить рисовать и перерисовывать несложные графики. Более того,это можно было преобразовать в отдельный исполняемый файл,который содержал в себе пользовательский текст и формулы вместе с рантаймом который это считал, и в таком виде кому-нибудь переслать при необходимости. Естественно название софта я за давностью лет не помню,а может даже и не спросил тогда. А теперь вот задумался - чем бы такое в линуксе реализовать? Графики мне не сильно надо,а вот интерактивный пересчет вместо получаса тыкания кнопок в калькуляторе - хочется.

Может кто-то из присутствующих уже задумывался о решении для такой задачи? Или просто идей накидайте как/чем это можно сделать. Желательно не дико монстрообразным. Например та виндовая штука работала на типичном компе из начала нулевых.

оно само пересчитывало. Даже можно было заставить рисовать и перерисовывать несложные графики.

Электронная таблица напрашивается.

Если есть знания питона, то есть pyspread.

Есть python notebook (правильно Jupyter Notebook).

Есть ещё системы типа maxima, octave, scilab – и их можно использовать, как написано в ОП.

greenman ★★★★★
()
Последнее исправление: greenman (всего исправлений: 2)

Полноценную программу с GUI — действительно из пушки по воробьям, а скриптец на том же питоне — как раз то, что нужно. Времени написание простого скрипта, перебирающего варианты (подряд, или с запросом пользователя) много не отнимает — примерно как и на калькуляторе один раз посчитать.

Сам таким не занимаюсь — пробовал, не моё, скрипты как-то роднее, но упомяну, что некоторые люди решают подобные задачи в Excel или аналогах, вписывая соответствующие формулы в ячейки, а потом в ячейках с изначальными данными просто меняют значения, когда хочется.

P.S. Ещё для части таких задач может лучше всего подойти numbat.

CrX ★★★★★
()
Последнее исправление: CrX (всего исправлений: 1)

Wolfram alpha

google Collab (по сути упомянутый jupiter notebook)

Это из облачных сервисов чтобы ничего не ставить в систему

cobold ★★★★★
()
Последнее исправление: cobold (всего исправлений: 1)

Эдак четверть века назад видел у одного знакомого какой-то софт,виндовый разумеется, в котором можно было написать текст с рассуждениям,вставить в него формулы и клеточки куда цифры вводить, и потом с этим работать, оно само пересчитывало

Матлаб какой?

Zhbert ★★★★★
()

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

Тот же матлаб в вайне. Или у него вроде аналог был, октава или как-то так.

Zhbert ★★★★★
()

Ну и это, самое быстрое и простое: табличка в гуглодоке/либреофисе.

Zhbert ★★★★★
()

Таблицу в Microsoft Excel/LibreOffice Calc/Google Spreadsheet составить с формулами, графиками и т. д. Для задач хорошо ложащахся на формулы (стоит подтянуть матчасть по Excel и аналогам, потому что формулы гораздо мощнее, чем думает средний обыватель), самое простое и быстрое.

Если логика слишком громоздко ложиться на формулы, то Python. Никакой GUI не нужен - параметры хардкодить в константах, вычисления писать в global scope, графики выводить через matplotlib.

Изменил параметры, перезапустил скрипт, посмотрел вывод.

Если хочется совсем красиво, то Jupyter Notebook. Тогда можно будет писать markdown комментарии к коду, а все графики выведенные через matplotlib будут отображаться inline, а не в отдельных окнах. И будет кнопка быстрого перевычисления блока кода.

Ещё есть matlab и его opensource частичный аналог octave. Опять же, пишется скрипт, все входы хардкодятся в константах. Потом их меняют и перезапускают.

В случае именно matlab у него есть плагин simulink, где можно накидать gui в визуальном режиме из всяких кнопок и крутилок, но это больше актуально для всяких сложных физических симуляций и т п. Плюс оно платное и надо знать много матчасти.

KivApple ★★★★★
()
Последнее исправление: KivApple (всего исправлений: 1)

Желательно не дико монстрообразным.

Карманно-андроидные таблички: 1, 2, 3, 4, …

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

Электронная таблица напрашивается.

Данные ну совсем не табличные никак. И нуждаются в пространных текстовых пояснениях как это посчитано. Чтобы и самому через месяц не забыть и показать кому-нибудь можно было бы на предмет обсуждения не только итоговых цифр но и методики расчета.

На питоне - да, написать можно,как и на примерно любом языке. Вопрос лишь в «накладных расходах» на написание полноценной программы которые на разных языках будут разными.

Я вобщем-то интересовался опытом тех кто уже что-то пробовал для решения описанной мной задачи.

Вот например есть такое решение: https://planetcalc.ru/320/ Вчера в почту ссылку человек прислал. Специально очень простой пример выбрал,там и существенно сложнее расчеты есть. Надо примерно такое же. Интересно, что страничка с этого сайта некоторое время остается работоспособной в браузере даже если интернет отключился. Надо бы изучить как это сделано и можно ли это себе на диск сохранить чтобы потом работало вообще без интернета. Соответственно и своё локальное писать по образу и подобию.

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

Это из облачных сервисов

У меня дома интернет только от сотового оператора, зависеть от него совсем не хотелось бы. Ибо его обязательно не будет именно тогда когда потребовалось очередную гениальную идею обсчитать:) Идеи не спрашивают когда в голову приходить,делают это произвольно, часто ночью:)

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

Чтобы цифры пересчитать? Зачем тут гуй-то?

Потому что если считать чем-то команднострочным то информация имеет дико бесячее свойство уползать за верхний край экрана. Я сейчас для таких расчетов пользуюсь команднострочным калькулятором wcalc и именно этим он бесит.

Максимально простой пример того что надо - например вот: https://planetcalc.ru/320/ Понятно что на практике цифр и формул существенно больше бывает, это лишь иллюстрация. Нужно примерно тоже самое,но полностью в оффлайне,чтобы без интернета работало.

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

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

Вывод перенаправь в файл. Ты же в линуксе, ну.

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

Вот например есть такое решение: https://planetcalc.ru/320/

Как раз ближе всего к электронной таблице. И в электронную таблицу можно вгонять просто текст, как комментарии и пояснения.

Без программирования будет не так красиво, но вполне работоспособно.

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

Нужно примерно тоже самое,но полностью в оффлайне,чтобы без интернета работало.

Глянь свежый инструментальный комплекс «BlackBox» ©.
Там текст интерпретируют как документ со встроенными вычислениями в оном – open-source среда разработки-выполнения в линукс ©.

quickquest ★★★★★
()
Последнее исправление: quickquest (всего исправлений: 1)
Ответ на: комментарий от KivApple

Таблицу в Microsoft Excel/LibreOffice Calc/Google Spreadsheet составить с формулами

Данные совсем вообще не табличные. Да и абзац текста для описания логики вычислений засовывать в таблицу неудобно.

Если хочется совсем красиво, то Jupyter Notebook.И будет кнопка быстрого перевычисления блока кода.

Спасибо, посмотрю что это такое.

Если логика слишком громоздко ложиться на формулы, то Python. Изменил параметры, перезапустил скрипт, посмотрел вывод.

И обязательно самый нужный кусок информации от предидущего запуска уехал за верхний край экрана. Бесит сильно. Я и без Питона на обычном привычном Си такое писал и перезапускал. Оно конечно считает, но вот именно what-if analysis - неудобно. Особенно если этих перезапусков больше чем 3-5.

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

Вывод перенаправь в файл.

И потом эту простыню опять куртить туда-сюда. В xterm крутить буфер туда-сюда из без файла можно,причем довольно много. Но удобным такой способ анализа полученных цифр я не назову,хотя им и пользуюсь. Мой вопрос и был о том как бы сделать удобнее.

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

Тот же матлаб в вайне.

Без обид, буду сейчас бить арматурой. Заслуженно!

Во-первых, матлаб есть и всегда был нативный. Какой к черту вайн!

Во-вторых, рехнулись что ли? Для такой задачи матлаб, ты знаешь сколько он стоит и просто на диске весит? Использовать матлаб как калькулятор это клиника.

Тот софт, который описывается в стартовой посте - это маткад. А не матлаб.

У маткада - аналоги сложно найти.

Я лично рекомендую wxMaxima пробовать. Это максимально близкий workflow.

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

плагин simulink

Плагин, лол. По кодовой базе как несколько линуксов с DE сразу.

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

Глянь свежый инструментальный комплекс «BlackBox»

Спасибо! Не знал о его существовании, непременно сегодня ознакомлюсь.

Там текст интерпретируют как документ со встроенными вычислениями в оном

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

P.S. О,оно еще и архитектуру i386 поддерживает! Совсем хорошо.

watchcat382
() автор топика
Последнее исправление: watchcat382 (всего исправлений: 1)
Ответ на: комментарий от watchcat382

Именно произвольный текст с вставленными формулами,а не таблица.

wxMaxima.

Плюс, в Emacs мире, есть org-mode и там можно в текст формулы тоже вставлять и считать, но это очень специфическая штука.

James_Holden ★★★★★
()

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

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

Без обид, буду сейчас бить арматурой. Заслуженно!

Во-первых, матлаб есть и всегда был нативный. Какой к черту вайн!

Ну тут да, заслуженно. Я его видел в жизни пару раз, ещё когда учился и потом когда в НИИ работал в самом начале пути. Поэтому отложилось, что он виндовый.

Во-вторых, рехнулись что ли? Для такой задачи матлаб, ты знаешь сколько он стоит и просто на диске весит? Использовать матлаб как калькулятор это клиника.

Ну, видимо, перацкей. Тоже со времён НИИ отложилось. У нас там дядьки в нём чуть ли не картошку считали на обед.

Тот софт, который описывается в стартовой посте - это маткад. А не матлаб.

А вот сейчас я задумался…

Zhbert ★★★★★
()

Юпитер, матлаб и тд и тп. Вплоть до екселя.

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

самый нужный кусок информации от предидущего запуска уехал за верхний край экрана.

Складывайте в файл.

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

Складывайте в файл.

Так и делал. Только потом этот файл опять туда-сюда крутить приходится,также можно и без файла крутить буфер в xterm. В том-то и дело что хочется иметь не это простыню,а «текст с пересчитываемыми формулами». Что-то изменил (числовые данные или сами формулы),нажал «пересчитать» и посмотрел что получилось. Вон выше сказали что BlackBox(https://oberoncore.ru/blackbox/start) именно это умеет. Сижу,читаю про него.

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

marimo.io ( ну это усушенное ipython которая jupyter notebook (там и на bash bc dc gcc можно «считать» - фактически наконец-то реализация литературного(грамотного) программирования проросла в массах - как раз за смену поколения 20-30 лет) )

результаты можно в какую csv|любую табличность что бы duckdb from извлекать

blackbox хорош что почти застыл и интерфейсы достаточно антикварны-архАичны что бы пользователь очучал себя умудрённым консерватором

qulinxao3 ★☆
()
Последнее исправление: qulinxao3 (всего исправлений: 2)
Ответ на: комментарий от watchcat382

Электронная таблица напрашивается.

Данные ну совсем не табличные никак. И нуждаются в пространных текстовых пояснениях как это посчитано.

Что мешает написать пространные текстовые пояснения в ёкселе? Ёксель популярен именно потому, что позволяет соорудить цепочку расчётов, легко скопировать их нужное число раз и оформить результат как тебе надо.

Вопрос лишь в «накладных расходах» на написание полноценной программы которые на разных языках будут разными.

Так у тебя простенький расчёт на разные диапазоны или система управления орбитальной группировкой спутников?

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

абзац текста для описания логики вычислений засовывать в таблицу неудобно.

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

Это всё и многое другое можно делать ещё с 95-ого года.

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

текст с пересчитываемыми формулами». Что-то изменил (числовые данные или сами формулы),нажал «пересчитать» и посмотрел что получилось.

Это ты ерунду хочешь. На практике для what if’а нужна именно табличка - входные данные + результаты расчёта для сравнения. В what if’е единичный результат расчёта не имеет смысла без сравнения с результатами расчёта на других входных данных.

LamerOk ★★★★★
()
Последнее исправление: LamerOk (всего исправлений: 1)

Для таких вещей существует Jupiter notebook. По сути это программируемый калькулятор на python/julia/R с интерактивной графикой и оформлением в маркдаун.

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

хочется иметь не это простыню,а «текст с пересчитываемыми формулами».

Юпитер ноутбук же, именно так он себя и ведёт. Там ещё и символьные вычисления есть и много всякого.

Я в командной строке правда все равно гораздо быстрее работаю чем даже проверенные студенты в этом Юпитере, но тут уж опыт…

AntonI ★★★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)