1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/chfenger-goNum

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

О goNum

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

Из-за ограниченного времени автора в настоящее время функциональность всё ещё находится в стадии разработки, а алгоритмы постоянно добавляются. Большинство алгоритмов прошли типичные тесты состояния, но не гарантируется, что все алгоритмы безопасны и надёжны во всех состояниях. Кроме того, следует отметить, что эта библиотека алгоритмов предназначена для решения проблем, а не для реализации определённых возможностей языка, хотя автор прилагает усилия, чтобы особенности Go были полностью реализованы в ней. Если вам нравится работа автора, пожалуйста, следите за обновлениями goNum; если у вас есть предложения по работе автора, вы можете связаться с ним по электронной почте: chengfengcool@sina.com. Или, если вы хотите поддержать работу над goNum, вы также можете связаться с автором по электронной почте.

Приглашаем заинтересованных присоединиться к разработке.

Также автор надеется, что больше людей будут использовать этот код, поэтому, несмотря на то, что используется лицензия GPL v3.0, любой может свободно и бесплатно использовать этот код или фрагменты кода, оставив уведомление об авторстве (это предложение действительно только для граждан Китая или организаций, в которых граждане Китая занимают более двух третей решающих голосов; остальные должны полностью соблюдать лицензию GPL v3.0).

Среда установки

Linux или Windows:

  1. Go 1.11 (рекомендуется) или более поздняя версия;
  2. LiteIDE X34 или более поздняя версия (необязательно). Пожалуйста, обратите внимание на различия в переносах строк в Linux и Windows.

Способ установки

Онлайн-установка

  1. Установите Go;
  2. Выполните команду go get:
go get gitee.com/chfenger/goNum

Загрузка исходного кода и установка

  1. Загрузите исходный код и распакуйте его в каталог src или его подкаталог в указанном каталоге (например, «UserDir/src/» или «UserDir/src/xxx/xxx/»);
  2. Добавьте UserDir в GOPATH;
  3. Перезапустите IDE или терминал.

О наименовании

  1. Пакет с именем 'goNum' является библиотекой алгоритмов;
  2. Пакет с именем 'goNum_test' является тестовой библиотекой (Benchmark);
  3. Файлы с именами *_test.go являются файлами тестов, их содержимое можно использовать в качестве справочного руководства для использования библиотеки алгоритмов.

Основная идея дизайна

  1. Предоставить себе и другим простую и понятную библиотеку числовых алгоритмов с мощными функциями;
  2. Приоритет скорости и точности, поэтому такие методы, как defer, которые слишком сильно влияют на скорость, фактически не используются;
  3. Полностью разработано на Go, независимо от внешних библиотек.

Алгоритмы (продолжение следует...)

  • Основные математические операции:

    • перестановки;
    • бинарный поиск;
    • комбинации;
    • факториал;
    • максимальное значение среза элементов;
    • абсолютное значение максимального значения среза элементов;
    • сортировка среза элементов от большего к меньшему;
    • минимальное значение среза элементов;
    • абсолютное значение минимального значения среза элементов;
    • сортировка среза элементов от меньшего к большему;
    • норма вектора 1;
    • бесконечная норма матрицы;
    • векторное пространство;
    • расширение степени;
    • тригонометрические и обратные тригонометрические функции угла;
    • вращение вектора в трёхмерном пространстве;
    • ряд Фибоначчи;
    • производная многочлена;
  • Структуры данных:

    • односвязный список;
    • двусвязный список;
    • дерево;
  • Матрицы:

    • определение и операции с матрицами;
    • исключение Гаусса-Жордана для нахождения определителя матрицы;
    • возврат единичной матрицы n-го порядка (двумерный срез);
    • нахождение обратной матрицы методом исключения Гаусса-Жордана;
    • метод квадратного корня для симметричных положительно определённых матриц;
    • разложение LU матрицы Doolittle;
    • все собственные значения и собственные векторы симметричной матрицы классическим методом Якоби;
    • собственные значения и собственные векторы симметричной матрицы методом Якоби через критический переход;
    • главное собственное значение матрицы A и собственный вектор;
  • Решение общих уравнений:

    • решение нелинейных уравнений методом Ньютона;
    • поиск корней уравнения;
    • секущий метод одной точки;
    • секущий метод двух точек;
    • простой итерационный метод решения уравнения вида x = g(x);
    • итерационный метод Айткена для решения уравнения вида x = g(x);
    • метод Мюллера для решения f(x) = 0;
  • Интерполяция:

    • интерполяция Эрмита;
    • функция интерполяции Эрмита;
    • интерполяционный полином Лагранжа;
    • функция интерполяционного полинома Лагранжа;
    • интерполяция Ньютона;
    • прямая интерполяция Ньютона;
    • кубический сплайн с первой производной в узлах (граничное условие первой производной);
    • кубический сплайн с первой производной в узлах (граничное условие второй производной);
    • кубический сплайн со второй производной в узлах (граничное условие первой производной);
    • кубический сплайн со второй производной в узлах (граничное условие второй производной);
  • Численное интегрирование:

    • формулы численного интегрирования Ньютона-Котеса от 1 до 8 порядков;
    • формула численного интегрирования Котеса с последовательным делением пополам от 1 до 8 порядка; — формула численного интегрирования Гаусса-Лагерра до 8-го порядка; — формулы численного интегрирования Ньютона-Котэса от 1 до 8 порядка; — формула Рунгеберга (Румбегра) численного интегрирования;
  • Решение систем линейных уравнений: — метод наименьших квадратов для решения противоречивых систем уравнений; — итеративный метод для решения строго диагонально доминирующих трёхдиагональных систем уравнений с коэффициентами; — исключение Гаусса для решения систем линейных уравнений; — итерационный метод Якоби для решения системы линейных уравнений n-порядка; — итерационный метод Зейделя для решения системы линейных уравнений n-порядка;

— Решение систем нелинейных уравнений: — многомерный метод Зейделя для решения систем нелинейных уравнений;

— Подбор данных: — полиномиальная аппроксимация; — линейная аппроксимация методом наименьших квадратов; — подгонка контрольных точек кривой Безье; — тригонометрическая аппроксимация многочленами Фурье;

— Оценка ошибок: — максимальная ошибка; — средняя ошибка; — среднеквадратичная ошибка;

— Оптимизация: — золотое сечение для поиска минимума одномерной функции с одним переменным; — поиск минимума одномерной функции с одним переменным методом Фибоначчи; — симплексный метод поиска минимума функции многих переменных;

— Обыкновенные дифференциальные уравнения: — четырёхшаговый метод Адамса (ODE); — трёхшаговый метод Адамса для внутренних формул (ODE); — метод Эйлера (ODE); — коррекция метода Эйлера (ODE); — трапециевидный метод (ODE); — двухуровневый двухэтапный метод Рунге-Кутта; — четырёхуровневый четырёхэтапный метод Рунге-Кутта; — четырёхэтапный метод Рунге-Кутты-Фельберга с переменным шагом; — метод Хейна; — комбинированный метод Адамса-Башфорта-Мултона с коррекцией; — комбинированный метод Милна-Симпсона с коррекцией; — комбинированный метод Хэмминга с коррекцией; — разностный метод;

— Уравнения в частных производных: — уравнение в частных производных гиперболического типа с разделением переменных (первый формат разделения); — уравнение в частных производных гиперболического типа с разделением переменных (второй формат разделения); — уравнение в частных производных параболического типа (явный формат); — уравнение в частных производных параболического типа (неявный формат); — уравнение в частных производных параболического типа (шеститочечный симметричный формат); — уравнение Лапласа в частных производных эллиптического типа (пятиточечный формат); — уравнение Пуассона в частных производных эллиптического типа (пятиточечный формат); — уравнение Гельмгольца в частных производных эллиптического типа (пятиточечный формат);

— Сортировка: — пузырьковая сортировка; — сортировка выбором; — вставка сортировки; — пирамидальная сортировка (сортировка Шелла); — быстрая сортировка; — сортировка кучей; — подсчёт сортировки; — корзинная сортировка; — поразрядная сортировка.

Автор: Чэн Фэн. Все права защищены. goNum является открытым исходным кодом, который вы можете публиковать или изменять в соответствии с вашими потребностями, но это должно быть сделано под лицензией GNU GPL (General Public License) версии 3.0 или более поздней версии. Содержание этой лицензии подробно описано в файле LICENSE в корневом каталоге или на веб-сайте http://www.gnu.org/licenses/. Чэн Фэн, авторское право принадлежит ему, 2018 г.

Благодарности: 00. Большое спасибо семье и друзьям за поддержку и понимание, благодаря которым я отказался от многих хобби.

  1. Особенно благодарю Google за такой замечательный язык программирования, надеюсь, что мы продолжим совершенствоваться и улучшать его.
  2. Спасибо определённой лаборатории за предоставление бесплатного сервера.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Библиотека численных алгоритмов с открытым исходным кодом, написанная исключительно на языке программирования Go. Развернуть Свернуть
GPL-3.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/chfenger-goNum.git
git@api.gitlife.ru:oschina-mirror/chfenger-goNum.git
oschina-mirror
chfenger-goNum
chfenger-goNum
master