Передмова
- Page ID
- 66989
Рішення задач - суть наукових обчислень. Багато проблем виникають природно з наук або математики і часто для вирішення важкої задачі покладається на деякі обчислювальні ресурси. У двох словах, цей текст є сумішшю науки, математики та інформатики, необхідної для вирішення проблем.
Призначена аудиторія для цього тексту той, хто зацікавлений в написанні комп'ютерного коду, який вирішить проблему, яка у вас виникла. Є кілька основ, які ви повинні мати з цим текстом:
- Деякий фон в написанні комп'ютерних програм. Ваша базова мова не має значення, але ви повинні бути знайомі в написанні коротких програм.
- Деяке обчислення. Більшість прикладів тут не потребують обчислення, але є теми по всій книзі, що принаймні диференціальне обчислення корисно.
Як багато підручників, це почалося як набір нотаток для мого класу наукових обчислень у Державному університеті Фічбурга. Студенти в класі, як правило, або інформатика або математика основні і, як правило, зацікавлені в обчислювальної техніки. Коли я керував цими сторінками з набору нотаток до підручника, я все ще тримаю ці студенти на увазі. Однак я розумію, що текст бакалаврату часто підхоплюють аспіранти, ті, хто в промисловості та інших факультетах, щоб побудувати певну базу знань, яку ніколи не було. Я також маю на увазі цих читачів.
Я також хочу відрізнити цей текст від тексту числового аналізу або числових методів. Текст числових методів часто охоплює багато основних алгоритмів математики, таких як числове диференціювання, числове інтегрування, пошук коренів, лінійна алгебра тощо, і способи реалізації таких алгоритмів; це можна зробити за допомогою псевдокоду або з певною мовою. Чисельний аналіз часто охоплює ті ж алгоритми в чисельних методах з акцентом на аналіз алгоритмів. Цей текст не охоплює в цілому всі теми в чисельних методах, а також не робить жодного аналізу. Є багато хороших книг, перерахованих в посиланнях. Натомість цей текст охоплює, як вирішити певні проблеми, і часто алгоритми були закодовані в існуючій бібліотеці, і ми будемо використовувати їх тут.
Навіщо використовувати Julia або якась конкретна мова?
Підзаголовок тексту говорить про те, що вирішення проблем у Scientific Computing не відбувається у вакуумі або обов'язково в землі псевдокоду, тому я спеціально вибрав мову, щоб пояснити поняття в тексті так само, як я роблю в своєму класі, і обчислювальною мовою, яка буде використовуватися, буде Юлія.
Перш ніж перебирати технічні причини вибору Юлії, цікава наступна особиста історія. Я запропонував викладати наукові обчислення в Державному університеті Фічбурга, і клас буде працювати восени 2014 року. Попередню весну я знав, що мені потрібно вибрати якусь мову для заняття. Є багато мов, які було б добре використовувати, включаючи Maple, який наші спеціалісти вивчали у необхідному класі, і це було б простим вибором. Однак в одному з блогів, які я регулярно читаю, була стаття Лі Філіпса під назвою «Майбутнє наукових обчислень: Чи може будь-яка мова кодування на вершині 1950-х бегемота?» Суть статті полягає в тому, що в наукових обчислювальній техніці Фортран є королем, в силу двох причин: 1) він швидкий головним чином тому, що він був розроблений для легкого перекладу на машинну мову, що в кінцевому підсумку є те, що працює на комп'ютері і 2) є багато важливих математичних бібліотек, написаних на Fortran були перевірено часом і практично без помилок.
Однак ніхто не хоче кодувати в Fortran. Він не має багатьох особливостей сучасних мов і вимагає компіляції. При виборі Юлії, як зазначено на головній сторінці, ``Юлія була розроблена з самого початку для високої продуктивності». Оскільки проблеми в Scientific Computing збільшуються в розмірі та складності, вкрай важливо, щоб код працював швидко, і Юлія, як правило, робить. Це одна з найшвидших обчислювальних мов високого рівня в бенчмарках (REF) і порівняно з іншими науковими мовами обчислень, це найшвидший. У той час, коли стаття була написана, Юлія була у версії 0.2 і була досить сирою, але була захоплюючою для розгляду і на задньому погляді, я радий, що зробив це.
Ще одним важливим аспектом Джулії є те, що це така мова сценаріїв, як python. Це означає, що у вас є налаштування середовища, ви можете просто почати вводити команди julia і йти. Немає жодної компіляції (як це в C або Fortran). Хоча компіляція часто знаходить помилки, це повільно робити прототипування.
Як читати цей текст
Як можна прочитати цей текст? Звичайно, коротка відповідь все одно ви хочете. Сподіваюся, ви зможете підібрати його і прочитати те, що актуально. Там є кілька пунктів про макет, а також деякі стандартні конвенції.
Погляньте на зміст. Текст розбитий на кілька частин. Частина I складається з деяких основ як мови julia, так і наукових обчислень. Решта частин тексту є окремими розділами (Моделювання, Аналіз даних, Лінійна алгебра) і деякі розширені можливості julia. Після прочитання частини I решта частин є незалежними, однак є деякі ідеї в частині III, які дуже корисні пізніше в тесті. На наступній схемі показані залежності глави:
Крім того, оскільки по всьому тексту є фрагменти коду, ви повинні запускати код під час читання тексту. Глава 1 - це початок, щоб ви почали запускати julia, але рекомендується прочитати Додаток А для більш докладної інформації. Весь код julia написаний в і або вбудований в текст, як або написаний окремим блоком на кшталт
А = [1,2,3]
Будь-які блоки коду повинні бути в змозі копіювати і вставляти безпосередньо в julia REPL або блокнот Юпітера.
Крім того, висновок з julia також є шрифтом фіксованої ширини, але, як правило, в блоці, як це:
«Це рядок виводу»
Ось деякі з стилю кодування, який використовується по всьому тексту, а також. Це допомагає з читаністю:
- функції написані в CamelCase, як
FindRealRoot
. - якщо функція повертає логічне значення (true або false), вона повинна починатися з is або has, як
isFullHouse
з глави 15 - змінні записуються в
snake_case
, якnum_trials
Під час написання коду вам не потрібно дотримуватися цієї конвенції, але я намагався залишатися послідовним у тексті. Як правило, ця конвенція допоможе з читаністю в тому, що ви безпосередньо знаєте, яка змінна або функція щось є.
Кодові блоки
Всі блоки коду в тексті записуються і виконуються як код julia (див. Наступний розділ нижче). Тому ви повинні мати можливість скопіювати будь-який з блоків і вставити їх безпосередньо. Єдина проблема може бути для довгих рядків. Наприклад, якщо у вас є
Якщо ви спробуєте скопіювати та вставити вказаний вище рядок, він видасть помилку, поки ви не виймете символи зі стрілками, що вказують на обтікання рядка, і не повернете його назад на один рядок. Після цього його слід запустити.
Створення цього тексту
Думаю, цікаво, як створювався цей текст. JuliaCon (про яку піде мова далі) - щорічна конференція по юлії. У 2019 році Тім Уілер виступив з доповіддю під назвою. Я багато засновував цей підручник на їхній роботі. Ось деякі конкретні деталі про це:
Є кілька причин написати його таким чином, і вони пов'язані між собою. По-перше, він усуває помилки, які часто виникають при копіюванні та вставці звідкись, де код запускається в документ. По-друге,