Библиотека численных методов для PascalABC.NET

Библиотека пополнена и содержит 8 численных методов:

  • интерполяция табличной функции кубическим сплайном (Spline/Seval);
  • отыскание корня уравнения на заданном интервале изоляции (Zeroin);
  • адаптивная квадратурная программа для вычисления определенного интеграла (Quanc8);
  • поиск минимума функции одной переменной на заданном интервале (FMin)
  • нахождение всех корней полинома степени не выше 36 с действительными коэффициентами методом Ньютона - Рафсона (PolRT)
  • решение систем линейных уравнений путем LU-разложения методом Гаусса (Decomp/Solve)
  • поиск начального интервала неопределенности для локализации минимума унимодальной функции методом Свенна (Svenn)
  • нахождение безусловного минимума функции многих переменных методом адаптивного случайного поиска (ARS).

Примеры вызовов находятся в тестирующей программе StudLibTest. Планируется со временем создание файла с инструкциями и рекомендациями в формате PDF для облегчения использования программ библиотеки численных методов. StudLib.pas (18,9 КБ) StudLibTest.pas (11,2 КБ)

Начато написание файла, документирующего StudLib Библиотека численных методов StudLib.pdf (32,0 КБ) С благодарностью приму замечания и предложения, но будьте готовы к тому, что мне (возможно) захочется их обсудить :smile:

ну введение и объяснение того как что делает StudLibTest.pas хорошо написано, вряд ли там есть достаточно чтоб к чему нибудь придраться, а я ожидал что основной частью будет описание функций, а не только название :slight_smile: в общем полную версию давай, тогда судить можно будет нормально

Естественно, основным будет описание. Но и из уже написанного можно примерно представить себе наполнение библиотеки. Возможно, кто-то сочтет полезным добавить еще какие-то программы для решения задач на упущенную мной тематику…

Библиотека содержит 8 численных методов:

  • интерполяция табличной функции кубическим сплайном (Spline/Seval);
  • отыскание корня уравнения на заданном интервале изоляции (Zeroin);
  • адаптивная квадратурная программа для вычисления определенного интеграла (Quanc8);
  • поиск минимума функции одной переменной на заданном интервале (FMin)
  • нахождение всех корней полинома степени не выше 36 с действительными коэффициентами методом Ньютона - Рафсона (PolRT)
  • решение систем линейных уравнений путем LU-разложения методом Гаусса (Decomp/Solve)
  • поиск начального интервала неопределенности для локализации минимума унимодальной функции методом Свенна (Svenn)
  • нахождение безусловного минимума функции многих переменных методом адаптивного случайного поиска (ARS).

Примеры вызовов находятся в тестирующей программе StudLibTest. Инструкции и рекомендации находятся в файле StudLib.pdf. В класс Spline добавлен метод Diff, возвращающий первую и вторую производные. StudLib.pas (19,4 КБ) StudLibTest.pas (11,2 КБ) Библиотека численных методов StudLib.pdf (85,8 КБ)

Библиотека содержит 9 численных методов:

  • интерполяция табличной функции кубическим сплайном (Spline/Seval);
  • отыскание корня уравнения на заданном интервале изоляции (Zeroin);
  • адаптивная квадратурная программа для вычисления определенного интеграла (Quanc8);
  • поиск минимума функции одной переменной на заданном интервале (FMin)
  • нахождение всех корней полинома степени не выше 36 с действительными коэффициентами методом Ньютона - Рафсона (PolRT)
  • решение систем линейных уравнений путем LU-разложения методом Гаусса (Decomp/Solve)
  • поиск начального интервала неопределенности для локализации минимума унимодальной функции методом Свенна (Svenn)
  • нахождение безусловного минимума функции многих переменных методом адаптивного случайного поиска (ARS)
  • Изоляция корней уравнения y(x)=0 на заданном интервале просмотра (RootsIsolation).

Примеры вызовов находятся в тестирующей программе StudLibTest. Инструкции и рекомендации по мере написания помещаются в файл StudLib.pdf. StudLib.pas (20,3 КБ) StudLibTest.pas (12,1 КБ) StudLib.pdf (139,3 КБ)

Библиотека содержит 10 численных методов:

  • интерполяция табличной функции кубическим сплайном (Spline/Seval);
  • отыскание корня уравнения на заданном интервале изоляции (Zeroin);
  • адаптивная квадратурная программа для вычисления определенного интеграла (Quanc8);
  • поиск минимума функции одной переменной на заданном интервале (FMin)
  • нахождение всех корней полинома степени не выше 36 с действительными коэффициентами методом Ньютона - Рафсона (PolRT)
  • решение систем линейных уравнений путем LU-разложения методом Гаусса (Decomp/Solve)
  • поиск начального интервала неопределенности для локализации минимума унимодальной функции методом Свенна (Svenn)
  • нахождение безусловного минимума функции многих переменных методом адаптивного случайного поиска (ARS)
  • изоляция корней уравнения y(x)=0 на заданном интервале просмотра (RootsIsolation)
  • операции с полиномами (класс Polynom).

Примеры вызовов находятся в тестирующей программе StudLibTest. Инструкции и рекомендации по мере написания помещаются в файл StudLib.pdf. StudLib.pas (24,1 КБ) StudLibTest.pas (13,4 КБ) StudLib.pdf (146,0 КБ)

Изменена PolRt для работы с классом Polynom. Дополнен документ StudLib.pdf StudLib.pas (24,1 КБ) StudLibTest.pas (13,3 КБ) StudLib.pdf (152,8 КБ)

Все программы в библиотеке переработаны в классы. Внесены соответствующие правки в документацию. На заполнение колонтитулов просьба внимания пока не обращать: Word - не издательская программа и не умеет нормально их оформлять, а непрерывно править колонтитулы руками я уже устал. StudLib.pas (27,3 КБ) StudLibTest.pas (13,4 КБ) StudLib.pdf (154,8 КБ)

Лирическое отступление.

Оформление математической документации в PDF - это “еще та” работенка. Особенно, если у вас Windows XP. Задача подружить формулы и русский текст, похоже, решается только в профессиональных издательских пакетах. Большинство математической литературы уровня журналов и брошюр сейчас набирается шрифтом гарнитуры Officina Serif - он компактный и содержит достаточно обширный набор математических символов, одновременно давая возможность работы с кириллицей. Увы, шрифт платный, найти его “пиратскую версию”, причем такую, чтобы при печати символы не “бились”, достаточно непросто. Набирать текст приходится в Word не ниже версии 2007, потому что дохленький Microsoft Equation 3.0 из состава Word 2003 не умеет корректно изображать многие вещи. Использовать сторонние системы набора формул уровня TeX/LaTeX тоже не выход: простейшие вещи превращать кусочками в JPEG/TIFF/WMF - это еще ладно, но они же не желают корректно встраиваться в строки Word, “разгоняя” межстрочные интервалы! Далее, все набранное нужно превратить в PDF и тут выясняется, что бесплатный софт не умеет корректно превращать из DOC в PDF файлы, содержащие кириллицу и математические формулы, набранные шрифтом гарнитуры Officina Serif и подменяет эту гарнитуру собственными примитивными шрифтами. Более того, этого нормально не умеет делать и Adobe Acrobat, если на платформе Windows XP (точнее, не умеет компонент Adobe Distiller). Единственный на сегодня работающий метод - выводить документ из Word на PDF-принтер. Увы, при этом происходит растеризация шрифтов и становится невозможным поиск текста в PDF-документе, но такова плата за возможность нормально читать и печатать документ.

Как вариант MathML и LibreOffice. MS Office в топку.

1 лайк

Спасибо за Вашу, несомненно, полезную работу!

Хотел бы про LaTeX заметить. Его имеет смысл использовать только как самодостаточный инструмент. То есть безо всяких вспомогательных “Вордов”. Сделать шаблон под себя и набирать всё только в нём. Вы не представляете (или представляете?), какое это облегчение после “Ворда”. Затем pdflatex превращает латеховский код в pdfку. Отдельно хочется упомянуть латеховские пакеты для вёрстки кода. В общем, если хочется без мороки и полиграфически аккуратно, то в LaTeX. Здесь на форуме есть участники, которые могут помочь с частностями. Ну и я тоже могу что-то посоветовать в меру сил и умения.

3 лайка

LibreOffice под WinXP? Может я и похож на извращенца, но не до такой же степени… MathML стоит, но толку-то… он все равно не интегрируется c Word.

Работать пробовал, формулы отлично, но верстать всё…

а что тут такого?

с вордом вообще мало что интегрируется. поэтому не нужно

Хотя бы то, что коней на переправе не меняют.

Библиотека содержит 11 численных методов:

  • нахождение безусловного минимума функции многих переменных методом адаптивного случайного поиска (класс ARS);
  • решение систем линейных уравнений путем LU-разложения методом Гаусса (класс Decomp);
  • разложение полинома с целочисленными коэффициентами на рациональные линейные множители вида ux-v (класс Factors);
  • поиск минимума функции одной переменной на заданном интервале (класс FMin);
  • нахождение всех корней полинома степени не выше 36 с действительными коэффициентами методом Ньютона - Рафсона (класс PolRT);
  • операции с полиномами (класс Polynom);
  • адаптивная квадратурная программа для вычисления определенного интеграла (класс Quanc8);;
  • изоляция корней уравнения y(x)=0 на заданном интервале просмотра (класс RootsIsolation);
  • интерполяция табличной функции кубическим сплайном (класс Spline);
  • поиск начального интервала неопределенности для локализации минимума унимодальной функции методом Свенна (класс Svenn);
  • отыскание корня уравнения на заданном интервале изоляции (класс Zeroin).

Примеры вызовов находятся в тестирующей программе StudLibTest. Инструкции и рекомендации по мере написания помещаются в файл StudLib.pdf. StudLib.pas (30,6 КБ) StudLibTest.pas (14,4 КБ) StudLib.pdf (164,6 КБ)

Кстати, используйте краткие документирующие комментарии к функциям. Например: ///Находит все корней полинома с действительными коэффициентами методом Ньютона - Рафсона (не выше 36-й степени)

1 лайк

Спасибо за напоминание. Это пока текст “непричесанный”, как бы альфа-версия. Наполню пакет, потом начну его окультуривать и оптимизировать. Кое-где остались массивы с завышенной размерностью: они в фортрановском исходнике были (естественно!) от 1 и я их просто сделал от 0 и начало не использую. Тут же еще все эти лицензионные страсти… приходится внимательно изучать, чтобы не нарушить лицензию при переработке какой-то части программы. Планирую также подогнать все под схожие интерфейсы с тем, чтобы было удобно передавать данные от одной задаче к другой.

Вот печально, что пока никто не отписался из тех, кто преподает студентам численные методы… я все же не математик, а инженер и у меня взгляд на все это чисто утилитарный)))

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

Примеры вызовов находятся в тестирующей программе StudLibTest. Поскольку вопрос с тестированием класса ApproxCheb пока не решен, редакция этой программы осталось прежней… Инструкции и рекомендации по мере написания помещаются в файл StudLib.pdf. StudLib.pas (34,9 КБ) StudLib.pdf (227,8 КБ)

приложи всё же StudLibTest из предыдущего обновления, чтоб всё вместе было