|

О возможностях использования языка программирования Julia для решения научных и технических задач

Авторы: Белов Г.В., Аристова Н.М. Опубликовано: 05.06.2020
Опубликовано в выпуске: #2(131)/2020  
DOI: 10.18698/0236-3933-2020-2-27-43

 
Раздел: Информатика, вычислительная техника и управление | Рубрика: Математическое моделирование, численные методы и комплексы программ  
Ключевые слова: язык программирования Julia, математическое моделирование, прикладная библиотека

Приведено краткое описание языка Julia, рассмотрены некоторые прикладные библиотеки и программные платформы, написанные на этом языке, предназначенные для решения задач из разных областей науки и техники. Язык Julia относительно молод, однако проведенный анализ литературных источников свидетельствует о его растущей популярности. Представлен обзор лишь небольшого числа библиотек и программных платформ, которые могут быть полезны научным сотрудникам и инженерам, связанным с разработкой средств моделирования и проведением расчетов на компьютере. В частности, не рассмотрены специализированные библиотеки, предназначенные для исследований в области экономики, биологии и медицины. В настоящее время существует большое число языков программирования, причем каждый создавался для того, чтобы преодолеть недостатки уже имеющихся языков. Каждый язык применяется в своей области и имеет свои плюсы и минусы. Цель настоящей работы --- ознакомить читателей с возможностями языка программирования Julia для решения научных и технических задач

Литература

[1] Ayer V.M., Miguez S., Toby B.H. Why scientists should learn to program in Python. Powder Diffr., 2014, vol. 29, no. s2, pp. S48--S64. DOI: https://doi.org/10.1017/S0885715614000931

[2] Lubin M., Dunning I. Computing in operations research using Julia. INFORMS J. Comput., 2015, vol. 27, no. 2, pp. 193--430. DOI: https://doi.org/10.1287/ijoc.2014.0623

[3] Bezanson J., Karpinsky S., Shah V.B., et al. Julia: a fast dynamic language for technical computing. arXiv.org: веб-сайт. URL: https://arxiv.org/abs/1209.5145 (дата обращения: 19.12.2019).

[4] Bezanson J., Edelman A., Karpinsky S., et al. Julia: a fresh approach to numerical computing. SIAM Rev., 2017, vol. 59, no. 1, pp. 65--98. DOI: https://doi.org/10.1137/141000671

[5] Lattner C., Adve V. LLVM: A compilation framework for lifelong program analysis & transformation. Proc. CGO Int. Symp., 2004, pp. 75--86. DOI: https://doi.org/10.1109/CGO.2004.1281665

[6] Mogensen P.K., Riseth A.N. Optim: a mathematical optimization package for Julia. J. Open Source Softw., 2018, vol. 3, no. 24. DOI: https://doi.org/10.21105/joss.00615

[7] Dunning I., Huchette J., Lubin M. JuMP: a modeling language for mathematical optimization. SIAM Rev., 2017, vol. 59, no. 2, pp. 295--320. DOI: https://doi.org/10.1137/15M1020575

[8] Udell M., Mohan K., Zeng D., et al. Convex optimization in Julia. Proc. 1st Workshop for High Performance Technical Computing in Dynamic Languages, 2014, pp. 18--28. DOI: https://doi.org/10.1109/HPTCDL.2014.5

[9] Grant M., Boyd S., Ye Y. Disciplined convex programming. In: Global optimization. Springer, 2006, pp. 155--210.

[10] Biel M., Johansson M. Efficient stochastic programming in Julia. arXiv.org: веб-сайт. URL: https://arxiv.org/abs/1909.10451 (дата обращения: 19.12.2019).

[11] Rackauckas C., Nie Q. DifferentialEquations.jl --- a performant and feature-rich ecosystem for solving differential equations in Julia. J. Open Res. Softw., 2017, vol. 5, no. 1, art. 15. DOI: https://doi.org/10.5334/jors.151

[12] Garstka M., Cannon M., Goulart P. COSMO: a conic operator splitting method for convex conic problems. arXiv.org: веб-сайт. URL: https://arxiv.org/abs/1901.10887 (дата обращения: 19.12.2019).

[13] Castelani E.V., Lopes R., Wesley V.I., et al. RAFF.jl: robust algebraic fitting function in Julia. J. Open Res. Softw., 2019, vol. 4, no. 39. DOI: https://doi.org/10.21105/joss.01385

[14] Otter M., Elmqvist H., Zimmer D., et al. Thermodynamic property and fluid modeling with modern programming language construct. Proc. 13th Int. Modelica Conf. Regensburg, Germany, 2019, pp. 589--598. DOI: https://doi.org/10.3384/ecp19157589

[15] Pawar S., San O. CFD Julia: a learning module structuring an introductory course on computational fluid dynamics. Fluids, 2019, vol. 4, no. 3, art. 159. DOI: https://doi.org/10.3390/fluids4030159

[16] Frondelius T., Aho J. JuliaFEM --- open source solver for both industrial and academia usage. Rakenteiden Mekaniikka, 2017, vol. 50, no. 3, pp. 229--233. DOI: https://doi.org/10.23998/rm.64224

[17] Revels J., Lubin M., Papamarkou T. Forward-mode automatic differentiation in Julia. arXiv.org: веб-сайт. URL: https://arxiv.org/abs/1607.07892 (дата обращения: 19.12.2019).

[18] Rapo M., Aho J., Frondelius T. Natural frequency calculations with JuliaFEM. Rakenteiden Mekaniikka, 2017, vol. 50, no. 3, pp. 300--303. DOI: https://doi.org/10.23998/rm.65040

[19] Fairbrother J., Nemeth C., Rischard M., et al. GaussianProcesses.jl: a Nonpara-metric Bayes package for the Julia language. arXiv.org: веб-сайт. URL: https://arxiv.org/abs/1812.09064 (дата обращения: 19.12.2019).

[20] Besancon M., Anthoff D., Arslan A., et al. Distributions.jl: definition and modeling of probability distributions in the JuliaStats ecosystem. arXiv.org: веб-сайт. URL: https://arxiv.org/abs/1907.08611 (дата обращения: 19.12.2019).

[21] Koolen T., Deits R. Julia for robotics: simulation and real-time control in a high-level programming language. Proc. ICRA, 2019. DOI: https://doi.org/10.1109/ICRA.2019.8793875

[22] Ge H., Xu K., Ghahramani Z. Turing: A language for flexible probabilistic inference. Proc. 21st Int. Conf. on Artificial Intelligence and Statistics. Vol. 4. 2018, pp. 1682--1690.

[23] Kramer S., Plankensteiner D., Ostermann L., et al. QuantumOptics.jl: a Julia framework for simulating open quantum systems. Comput. Phys. Commun., 2018, vol. 227, pp. 109--116. DOI: https://doi.org/10.1016/j.cpc.2018.02.004

[24] Tan S.M. A computational toolbox for quantum and atomic optics. J. Opt. B: Quantum Semiclass. Opt., 1999, vol. 1, no. 4, art. 424. DOI: https://doi.org/10.1088/1464-04266/1/4/312

[25] Johansson J.R., Nation P.D., Nori F. QuTiP: an open-source Python framework for the dynamics of open quantum systems. Comput. Phys. Commun., 2012, vol. 183, no. 8, pp. 1760--1772. DOI: https://doi.org/10.1016/j.cpc.2012.02.021

[26] Gawron P., Kurzyk D., Pawela L. QuantumInformation.jl --- a Julia package for numerical computation in quantum information theory. PlOS ONE, 2018, vol. 13, no. 12, art. e0209358. DOI: https://doi.org/10.1371/journal.pone.0209358

[27] Fieker C., Hart W., Hofmann T., et al. Nemo/Hecke: computer algebra and number theory packages for the Julia programming language. Proc. ACM ISAAC, 2017, pp. 157--164. DOI: https://doi.org/10.1145/3087604.3087611

[28] Tomasi M., Giordano M. Towards new solutions for scientific computing: the case of Julia. arXiv.org: веб-сайт. URL: https://arxiv.org/abs/1812.01219 (дата обращения: 19.12.2019).

[29] Luo X.Z., Liu J.G., Zhang P., et al. Yao.jl: extensible, efficient framework for quantum algorithm design. arXiv.org: веб-сайт. URL: https://arxiv.org/abs/1912.10877 (дата обращения: 19.12.2019).

[30] Sinaie S., Nguyen V.P., Nguyen C.T., et al. Programming the material point method in Julia. Adv. Eng. Softw., 2017, vol. 105, pp. 17--29. DOI: https://doi.org/10.1016/j.advengsoft.2017.01.008

[31] Pastell M. Weave.jl: scientific reports using Julia. J. Open Source Softw., 2017, vol. 2, no. 11, art. 204. DOI: https://doi.org/10.21105/joss.00204

[32] Boyd S., Vandenberghe L. Introduction to applied linear algebra: vectors, matrices, and least squares. Cambridge University Press, 2018.

[33] Kochenderfer M.J., Wheeler T.A. Algorithms for optimization. MIT Press, 2019.

[34] Kwon C. Julia programming for operations research: a primer on computing. Independently Publ., 2019.

[35] Klok H., Nazarathy Y. Statistics with Julia: fundamentals for data science, machine learning and artificial intelligence. URL: https://github.com/h-Klok/StatsWithJuliaBook (дата обращения: 19.12.2019).

[36] Антонюк В.А. Язык Julia как инструмент исследователя. М., Изд-во МГУ им. М.В. Ломоносова, 2019.

[37] Sherrington M. Mastering Julia. Birminghan, Packt Publishing Ltd., 2015.