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

Внесены изменения в работу c классом FMin. Скорректировано описание. StudLib.pas (57,8 КБ) StudLibTest.pas (20,1 КБ) StudLib.pdf (314,0 КБ)

Как насчёт добавить шум Перлина?

P.S. сделайте пожалуйста в программе тестирования вместо коментария перед каждой секцией - регион, чтоб можно было сворачивать код:

{$region ARS}begin
...
end;{$endregion}

вместо

//ARS
begin
...
end;

P.P.S. в программе тестирования на строчке 628 наверно имелось в виду Spline4-4 а не Spline4-1

Спасибо за предложения. Шум Перлина я добавлять не буду сразу по двум причинам. Первая - я не знаю, что это такое, вот только что в Интернет прочитал))). Вторая, более серьезная причина - шум Перлина не имеет никакого отношения к численным методам. А насчет регионов - хорошая мысль, уже сделал.

Шум Перлина это функция дающая случайные числа но более сглажено чем рандом, поэтому с помощью него можно делать красивые текстуры. Сам по себе он является функцией рандома+много математики… я подумал что раз есть часть “много математики” то он сюда подойдёт :slight_smile: Ну а вообще он может быть в нескольких измерениях, то есть он даёт не только сглаженый 2D график но и 3D, 4D и так далее, если бы вы сделали хотя бы сплайн для большего количества измерений это было бы уже лучше чем ничего.

По Вашим сообщениям на форуме я понял, что Вы работаете с графикой. От меня эта тематика очень далека. Но что Вам самому мешает сделать свою библиотеку графики и в зависимости от контента либо пополнить GraphABC/ABCSprites, либо это будет четвертая библиотека. В конце-концов, я не математик, я “простой советский инженер”, которому “вышку” давали два первых курса в объеме технического вуза. Посему я не вижу смысла лезть в чуждую предметную область без особой нужды.

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

Не совсем так. Если Вы просмотрите начало ветки, там видно, что предварительно было достаточно большое обсуждение, в том числе, с разработчиками PascalABC.NET, нужна ли библиотека численных методов, и если нужна, то на какую аудиторию она будет ориентирована и какую область охватывать. Если забыли уже, откройте программу вузовского курса по численным методам и посмотрите перечень имеющихся там тем. Так что это не просто “математические функции”, это набор классов, который во-первых, позволит строить на базе PascalABC.NET 3.2 какие-то работы по курсу, во-вторых позволит решать практические задачи без обращения к каким-то сложным пакетам и в-третьих, покажет, как можно реализовать программирование задач средствами PascalABC.NET, уйдя от “стиля программирования 70-х годов”. И последнее, возможно, это поспособствует дальнейшей популяризации этой системы программирования. С этой целью я пишу руководство, в котором, быть может, несколько пространно, а местами, возможно даже излишне примитивно рассказываю о каждом численном методе. Но это лишь с целью сделать эти численные методы доступных пониманию школьниками, которым сей курс не читают)))

P.S. Тестовая программа в библиотеке численных методов, кстати, неплохой добавочный тест системы после очередного обновления))))

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

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

StudLib.pas (64,3 КБ) StudLibTest.pas (25,9 КБ) StudLib.pdf (385,0 КБ)

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

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

Класс ARS удален; в класс FMinN помещен метод ARS (нахождение безусловного минимума функции многих переменных методом адаптивного случайного поиска). Добавлено описание метода ARS в руководство.

StudLib.pas (63,8 КБ) StudLibTest.pas (25,8 КБ) StudLib.pdf (399,5 КБ)

1 лайк

Добавим Ваш модуль в инсталлят?

1 лайк

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

А руководство в каком формате будете добавлять?

Пока планирую в PDF - не вижу ему равноценной альтернативы. А у Вас есть другое предложение? В chm если это дополнительно сделать, надо много перекраивать. Давать в Word 2007, в котором это набрано - значит требовать наличие у пользователя всех использованных шрифтов, PDF еще тем хорош, по крайней мере тот вариант, что я прикладываю, что оттуда можно текст брать обычной копипастой, в том числе, работоспособные тексты программ из приведенных примеров, т.е. это не картинка, требующая оптического распознавания.

вроде в справке всё в HTML, вроде не плохая альтернатива

Да, только у меня как-то нет желания переводить все это в HTML, ибо как идиосинкразия у меня к маркап-языкам. Да и все равно в таком виде, как написано, в справку это не пойдет, так что там отдельная работа.

В принципе, можно добавлять, все готово. Единственное, мне нужно знать, в каком виде все это будет добавлено и что куда при инсталляции попадет. Например, GraphABC после инсталляции по умолчанию попадает в \Program Files\PascalABC.NET\Lib\GraphABC.pcu и \Program Files\PascalABC.NET\LibSource\GraphABC.pas. Если и библиотека установится так же (StudLib.pcu, StudLib.pas), куда попадет пособие StudLib.pdf ? Или все будет совсем иначе? Как быть со StudLibTest.pas? Если “закопать” его в исходники, то могут не найти. Может, положить в папку PABCWork.NET? Эта информация мне нужна, чтобы описать пути установки в StudLib.pdf. И еще, у меня на все времени очень мало: с утра пятницы меня не будет примерно две недели.

Версия от 06.09.2017 NumLibABC170906.rar (467,7 КБ)

И? :slight_smile:

1 лайк

Последняя версия с небольшой редакционной правкой NumLibABC170924.rar (472,8 КБ)

1 лайк

Уже боюсь сюда что-то писать… больше месяца тут только мои посты.