Автор Гілка: Вільна заміна MathCAD  (Прочитано 8748 раз)

Відсутній Володимир Лісівка

  • Адміністратор ЩОДО
  • Видавець
  • *****
  • дописів: 3822
  • Карма: +11/-0
  • Програміст
Вільна заміна MathCAD
« : 2021-01-15 00:52:15 »
Давно шукав якусь адекватну заміну MathCAD для інженерних розрахунків, щоб можна було набрати текст з розрахунками та графіками не заморочуючись з калькулятором. Нарешті знайшов: це HTML, точніше Markdown, в якому можна використовувати HTML. Ідея полягає в тому, щоб розрахунки вести в JavaScript, а текст писати в Markdown. Результати обчислень виводити через document.write(v);. Якщо потрібно зробити графік чи провести складніші обчислення, то можна підключити відповідну бібліотеку, напр. D3.
[Fedora Linux]

Відсутній ysenko

  • Новачок
  • *
  • дописів: 38
  • Карма: +1/-0
  • Python developer
Re: Вільна заміна MathCAD
« Відповідей #1 : 2021-01-15 13:29:48 »
Думаю, що якщо немає якихось специфічних вимог, до викорисання JS, то з Jupyter може бути трохи простіше https://jupyter.org/. Це вже, де факто, стандарт.
« Змінено: 2021-01-15 13:32:10 від ysenko »
import antigravity

Відсутній Володимир Лісівка

  • Адміністратор ЩОДО
  • Видавець
  • *****
  • дописів: 3822
  • Карма: +11/-0
  • Програміст
Re: Вільна заміна MathCAD
« Відповідей #2 : 2021-01-16 17:09:24 »
Я зробив розрахунок тепловтрат для свого майбутнього будинку при -20°Ц, і роздрукував у PDF. Як мені зробити таке саме у Юпітері?
[Fedora Linux]

Відсутній ysenko

  • Новачок
  • *
  • дописів: 38
  • Карма: +1/-0
  • Python developer
Re: Вільна заміна MathCAD
« Відповідей #3 : 2021-01-16 18:30:31 »
Jupyter підтримує markdown і добрий десяток мов програмування для обчислення, та конвертується у різні формати, включаючи pdf за допомогою nbconvert https://nbconvert.readthedocs.io/en/latest/
« Змінено: 2021-01-16 18:57:27 від ysenko »
import antigravity

Відсутній Олександр Барановський

  • Модератор дошки
  • Графоман
  • *****
  • дописів: 366
  • Карма: +0/-0
Re: Вільна заміна MathCAD
« Відповідей #4 : 2021-01-24 20:01:42 »
Володимире, не дуже зрозумів, як це працює. Ок, є Markdown-файл з JavaScript-вставками. А яким програмним засобом Ви потім інтерпретуєте/компілюєте цей файл, щоб отримати файл з результатами розрахунків?
У своїх заявках дехто з науковців описував, якими корисними будуть їхні заплановані дослідження для національних інтересів, тоді як насправді ними рухала щира наукова допитливість і бажання написати пару статей.
Станіслав М. Улям, «Пригоди математика»

Відсутній Володимир Лісівка

  • Адміністратор ЩОДО
  • Видавець
  • *****
  • дописів: 3822
  • Карма: +11/-0
  • Програміст
Re: Вільна заміна MathCAD
« Відповідей #5 : 2021-01-24 20:41:48 »
Коли редагую, то Marker дає найкращий результат з усіх редакторів, які я спробував. Хоча і там є певні баги — напр. спецсимволи в межах <script> інтерпретуються. Потім я використовую jekyll, щоб скомпілювати (тема lanyon, але хочу перейти на centrarium), і викладаю на GitHub. Приклад: https://slonoblock.com/2021/01/15/calculation_of_thermal_losses/ , https://github.com/vlisivka/slonoblock/blob/master/_posts/2021-01-15-calculation_of_thermal_losses.md .

Я зараз хочу відмовитися від document.write(), і перейти або на vue, або на веб-компоненти. З vue ніби простіше, але для веб-компонентів не потрібні зовнішні залежності.
[Fedora Linux]

Відсутній Олександр Барановський

  • Модератор дошки
  • Графоман
  • *****
  • дописів: 366
  • Карма: +0/-0
Re: Вільна заміна MathCAD
« Відповідей #6 : 2021-01-24 21:10:31 »
Ок, зрозумів. Дякую!

Тоді я теж думаю, що є більш ніж один спосіб це робити, і всі хороші. А вибір залежить від наявних інструментів і особистих смаків.

Ваш підхід: робити розрахунки за допомогою JavaScript і показувати результати через веб. Тоді, напевно, це хороший варіант. У будь-якому разі цікаво!

На скріншоті в першому дописі — це якраз Marker? Я раніше не чув про такий редактор. Тому не розпізнав його.
У своїх заявках дехто з науковців описував, якими корисними будуть їхні заплановані дослідження для національних інтересів, тоді як насправді ними рухала щира наукова допитливість і бажання написати пару статей.
Станіслав М. Улям, «Пригоди математика»

Відсутній Володимир Лісівка

  • Адміністратор ЩОДО
  • Видавець
  • *****
  • дописів: 3822
  • Карма: +11/-0
  • Програміст
Re: Вільна заміна MathCAD
« Відповідей #7 : 2021-01-24 21:39:56 »
Так, це Marker: https://fabiocolacio.github.io/Marker/ .

Можна показувати у HTML, але можна й у PDF надрукувати. Як заміна для MathCAD мені цілком підходить. Кращої альтернативи я не бачу.
[Fedora Linux]

Відсутній Олександр Барановський

  • Модератор дошки
  • Графоман
  • *****
  • дописів: 366
  • Карма: +0/-0
Re: Вільна заміна MathCAD
« Відповідей #8 : 2021-01-25 20:58:33 »
Якби мені треба було робити щось таке, я б розмітку робив у LaTeX, а розрахунки можна програмувати мовою Lua (якщо використовувати LuaTeX як TeX-рушій) або Perl, Python тощо (для стандартних рушіїв). Про JavaScript не знаю. Нашвидку наґуґлив тільки, що ConTeXt пропонує механізм для JavaScript-вставок.

Але я в жодному разі не пропоную це як альтернативу. Бо Ваш варіант цілком підходить під Ваші задачі. А мій краще підійде, якщо орієнтуватися передусім на вивід на папері й програмування на Perl, скажімо. Ну, й для мене LaTeX — звичний інструмент, на відміну від Markdown і JavaScipt. Тому я й писав вище, що вибір залежить від наявних інструментів і особистих смаків.
У своїх заявках дехто з науковців описував, якими корисними будуть їхні заплановані дослідження для національних інтересів, тоді як насправді ними рухала щира наукова допитливість і бажання написати пару статей.
Станіслав М. Улям, «Пригоди математика»

Відсутній Олександр Барановський

  • Модератор дошки
  • Графоман
  • *****
  • дописів: 366
  • Карма: +0/-0
Re: Вільна заміна MathCAD
« Відповідей #9 : 2021-02-28 18:02:14 »
Спробував реалізувати той варіант, про який я говорив: для розмітки — LaTeX, для розрахунків — Perl-вставки. Може, ще когось таке цікавить, то поділюся.

Код: LaTeX
  1. \documentclass[a4paper,12pt]{report}
  2.  
  3. \usepackage[T2A]{fontenc}
  4. \usepackage[utf8]{inputenc}
  5. \usepackage[ukrainian]{babel}
  6.  
  7. \usepackage{perltex}
  8.  
  9. \newcommand{\NormNum}[1]{\textnormal{#1}}
  10. \newcommand{\BoldNum}[1]{\textbf{#1}}
  11.  
  12. %% Задати значення:
  13. %% різниця температур
  14. \perlnewcommand{\SetDeltaT}[1]{$DeltaT = $_[0]; return ""}
  15. %% теплопровідність соломи
  16. \perlnewcommand{\SetLambdaS}[1]{$LambdaS = $_[0]; return ""}
  17. %% довжина, ширина і висота
  18. \perlnewcommand{\SetLength}[1]{$L = $_[0]; return ""}
  19. \perlnewcommand{\SetWidth}[1]{$W = $_[0]; return ""}
  20. \perlnewcommand{\SetHeight}[1]{$H = $_[0]; return ""}
  21. %% товщина стіни
  22. \perlnewcommand{\SetThickness}[1]{$Th = $_[0]; return ""}
  23.  
  24. %% Видати значення:
  25. %% різниця температур
  26. \perlnewcommand{\GetDeltaT}{$DeltaT}
  27. %% теплопровідність соломи
  28. \perlnewcommand{\GetLambdaS}{$LambdaS}
  29. %% довжина, ширина і висота
  30. \perlnewcommand{\GetLength}{$L}
  31. \perlnewcommand{\GetWidth}{$W}
  32. \perlnewcommand{\GetHeight}{$H}
  33. %% товщина стіни
  34. \perlnewcommand{\GetThickness}{$Th}
  35.  
  36. %% Порахувати:
  37. %% теплопровідність стіни
  38. \perlnewcommand{\LambdaWall}{
  39.  $LambdaWall = $LambdaS / $Th;
  40. }
  41. %% площа
  42. \perlnewcommand{\Area}{
  43.  $AreaWall = 2 * ($L + $W) * $H;
  44.  $AreaCeil = $L * $W;
  45.  $Area = $AreaWall + $AreaCeil;
  46. }
  47. %% втрати тепла
  48. \perlnewcommand{\HeatLoss}{
  49.  $LambdaWall * $Area * $DeltaT;
  50. }
  51. \begin{document}
  52. \chapter{Розрахунок термічних властивостей будівлі}
  53. \SetDeltaT{80}
  54. \SetLambdaS{0.05}
  55. \SetLength{10}
  56. \SetWidth{8}
  57. \SetHeight{5}
  58. \SetThickness{0.40}
  59. \section{Втрати тепла через стіни}
  60. Втрати тепла через стіни та стелю вимірюються як
  61. \[
  62.  S \cdot d \cdot \lambda \cdot \Delta T,
  63. \]
  64. де
  65. $S$ "--- це площа стін та стелі (м$^2$),
  66. $d$ "--- товщина стін та стелі (м),
  67. $\lambda$ "--- теплопровідність стіни з утеплювачем (усереднена, Вт/м$^\circ$Ц),
  68. $\Delta T$ "--- різниця температур
  69. (при комфортній температурі в 20~$^\circ$Ц у будинку
  70. і при температурі $-20$~$^\circ$Ц ззовні
  71. різниця температур складає 40~$^\circ$Ц).
  72. Усереднена теплопровідність стін з соломи товщиною
  73. \NormNum{\GetThickness}~м
  74. складає
  75. \BoldNum{\LambdaWall}~Вт/м$^\circ$Ц.
  76. Загальна площа утеплених зовнішніх поверхонь будинку розміром
  77. \NormNum{\GetLength}~x~\NormNum{\GetWidth}~x~\NormNum{\GetHeight}~м,
  78. без врахування площі фундаменту:
  79. \BoldNum{\Area}~м$^2$.
  80. Таким чином, втрати тепла через стіни,
  81. при різниці температур в~\NormNum{\GetDeltaT}~$^\circ$Ц,
  82. складатимуть
  83. \BoldNum{\HeatLoss}~Вт.
  84.  
  85. \end{document}
  86.  
У своїх заявках дехто з науковців описував, якими корисними будуть їхні заплановані дослідження для національних інтересів, тоді як насправді ними рухала щира наукова допитливість і бажання написати пару статей.
Станіслав М. Улям, «Пригоди математика»

Відсутній Володимир Лісівка

  • Адміністратор ЩОДО
  • Видавець
  • *****
  • дописів: 3822
  • Карма: +11/-0
  • Програміст
Re: Вільна заміна MathCAD
« Відповідей #10 : 2021-02-28 18:14:25 »
Занадто багато спецсимволів. В очах рябить, текст важко знайти. Також, мені здається що там не підтримується унікод в назвах змінних.

До речі, ось непоганий варіант у тому ж стилі, що і мій:  https://mkhan45.github.io/CalcuLaTeX-Web/ , https://github.com/mkhan45/CalcuLaTeX

На відміну від мого, він підтримує одиниці величин, тому їх не потрібно тримати в голові, і менше помилок. Але не підтримує назви змінних кирилицею чи грецькою. Ну і потім потрібно компілювати, не можна просто вивалити в блог.


« Змінено: 2021-02-28 18:17:06 від Володимир Лісівка »
[Fedora Linux]

Відсутній Олександр Барановський

  • Модератор дошки
  • Графоман
  • *****
  • дописів: 366
  • Карма: +0/-0
Re: Вільна заміна MathCAD
« Відповідей #11 : 2021-02-28 18:37:19 »
Занадто багато спецсимволів. В очах рябить, текст важко знайти.
Так, згоден. І ще й форумний підсвічувач коду чомусь «зʼїв» порожні рядки у тілі документа. Тому преамбула ще поділена на якісь логічні частини, а тіло вийшло суцільним нечитабельним шматком.

Також, мені здається що там не підтримується унікод в назвах змінних.
Це, мабуть, не є особливість саме цього варіанту (LaTeX + Perl). В LaTeX можуть виникнути проблеми, якщо назви команд писати кирилицею (а можуть і не виникнути). Тому вирішив не ризикувати, для мене це не було принциповим питанням. Perl сам собою, мабуть, не має проблем з кириличними іменами змінних. Але чи будуть проблеми у звʼязці з LaTeX — не знаю.

До речі, ось непоганий варіант у тому ж стилі, що і мій:  https://mkhan45.github.io/CalcuLaTeX-Web/ , https://github.com/mkhan45/CalcuLaTeX
Цікаво!
У своїх заявках дехто з науковців описував, якими корисними будуть їхні заплановані дослідження для національних інтересів, тоді як насправді ними рухала щира наукова допитливість і бажання написати пару статей.
Станіслав М. Улям, «Пригоди математика»