Jump to content

Научный язык программирования

В компьютерном программировании язык научного программирования может относиться к двум степеням одного и того же понятия.

В широком смысле научный язык программирования — это язык программирования , который широко используется в вычислительной науке и вычислительной математике . В этом смысле C/C++ и Python можно считать научными языками программирования.

В более строгом смысле научный язык программирования — это язык, разработанный и оптимизированный для использования математических формул и матриц . [1] Такие языки характеризуются не только наличием библиотек, выполняющих математические или научные функции, но и синтаксисом самого языка. [2] Например, ни в C++, ни в Python нет встроенных матричных типов или функций для матричной арифметики (сложение, умножение и т. д.); вместо этого эта функциональность доступна через стандартные библиотеки. научного программирования в более строгом смысле включают ALGOL , APL , Fortran , J , Julia , Maple , MATLAB , Octave и R. Языки [3] [4]

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

Примеры [ править ]

Линейная алгебра [ править ]

Языки научного программирования предоставляют возможности для работы с линейной алгеброй . Например, следующая программа Julia решает систему линейных уравнений :

A = rand(20, 20)  # A is a 20x20 matrix
b = rand(20)      # b is a 20-element vector
x = A\b           # x is the solution to A*x = b

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

Математическая оптимизация [ править ]

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

using Optim

P(x,y) = x^2 - 3x*y + 5y^2 - 7y + 3

z₀ = [ 0.0
       0.0 ]     # starting point for optimization algorithm

optimize(z -> P(z...), z₀, Newton();
         autodiff = :forward)

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

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

См. также [ править ]

Ссылки [ править ]

  1. ^ «Определение научного языка» . Энциклопедия журнала PC Magazine . Зифф Дэвис . Проверено 13 мая 2021 г.
  2. ^ «Научный язык - Определение научного языка» . Ваш словарь . Компания Computer Language Company Inc. Проверено 27 марта 2014 г.
  3. ^ Нин, Эндрю. «Языки научного программирования» . Лаборатория полета, оптимизации и ветра . Университет Бригама Янга . Проверено 13 мая 2021 г.
  4. ^ Закари, Джозеф. «Введение в научное программирование: решение вычислительных задач с использованием Maple и C» . Джозеф Л. Закари . Университет Юты . Проверено 13 мая 2021 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 580b9d62b5acec0e67ca6d3ea0dddb46__1718063640
URL1:https://arc.ask3.ru/arc/aa/58/46/580b9d62b5acec0e67ca6d3ea0dddb46.html
Заголовок, (Title) документа по адресу, URL1:
Scientific programming language - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)