MATLAB.Exponenta
–Û·Ë͇ Matlab&Toolboxes

Simulink

Работы-участники конкурса Simulink-моделей.

Интерактивная аппроксимация функций в среде Matlab/Simulink

архив работы zip-файл

Выдолоб Г. М., Московский государственный институт электронной техники (технический университет), Москва, Зеленоград, gevy@mail.ru

При проектировании вычислительных устройств и систем управления часто возникает задача нахождения аппроксимирующих функций для зависимостей, которые не могут быть вычислены с помощью простых арифметических операций: сложение, вычитание, умножение и деление. Для решения этой задачи исходная функция заменяется полиномом или рациональной дробью, параметры которых находятся в процессе минимизации ошибки приближения по выбранному критерию, например, среднеквадратичному или равномерному [1]. В некоторых случаях в качестве аппроксимирующей функции применяется совокупность полиномов (сплайн) или рациональных дробей.

Имеющиеся в среде MATLAB средства для приближения функций (команда polyfit, Curve Fitting Toolbox, пакет numapprox из ядра Maple, интегрированного в MATLAB) решают поставленную задачу в классическом виде и не позволяют управлять поведением аппроксимирующей функции на интервале приближения и его краях, а также вводить взаимную зависимость параметров аппроксимирующей функции.

Цель данной работы - создание в среде MATLAB инструмента для гибкой и наглядной аппроксимации функций полиномами или рациональными дробями с возможностью интерактивного управления ошибкой приближения. Это позволяет при поиске аппроксимирующих функций более полно учитывать особенности технической задачи и возможности практической реализации полученных приближений в приборах и системах.

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

для функции F(x) на интервале xmin x xmax. Заметим, что хотя бы один из коэффициентов знаменателя b0 … bM отличен от нуля. Следовательно, можно сделать этот коэффициент равным единице путем деления на него всех коэффициентов числителя и знаменателя рациональной дроби. В дальнейшем будем считать b0 = 1.

1этап. Интерполируем функцию F(x) рациональной дробью R(x) на интервале xmin x xmax в N+M+1 точках

Число точек интерполяции соответствует количеству независимых переменных R(x). Значения узлов интерполяции выберем произвольно, например, равномерно. В результате интерполяции получим систему N+M+1 линейных уравнений

(1)

Решением данной системы уравнений является набор параметров a0 … aN , b1 … bM аппроксимирующей функции R(x).

2 этап. Построим график ошибки приближения Δ(x) с весом q(x)

Для абсолютной ошибки q(x)=1 , для относительной ошибки q(x)=1/F(x).

3 этап. Проанализируем график ошибки приближения и изменим положение узлов интерполяции там, где необходимо изменить величину ошибки приближения. Сближение узлов интерполяции приводит к уменьшению ошибки аппроксимации между узлами, а удаление - к увеличению ошибки соответственно.

После этого переходим к этапу 1 с новыми узлами интерполяции. В результате повторения этапов 1,2 и 3 до достижения требуемого вида ошибки аппроксимации получаем итоговые значения параметров a0 … aN , b1 … bM аппроксимирующей функции R(x).

Выполнение этапов 1 и 2, связанных с большим объемом вычислений, возложено на компьютер. Этап 3 проводит человек. Такое распределение обязанностей делает процесс аппроксимации интерактивным и позволяет наиболее полно использовать возможности человека и компьютера.

Для реализации изложенного алгоритма в среде MATLAB/ Simulink разработана модель approximation.mdl, приведенная на рис.1.

Рис.1. Модель интерактивной аппроксимации функций.

Данная модель интерполирует функцию

рациональной дробью в виде отношения полиномов второго порядка с взаимосвязанными коэффициентами знаменателя

Такие условия возникают при аппроксимации синусной и косинусной функций рациональными дробями с одинаковыми знаменателями.

Модель включает генератор четырех управляемых узлов аппроксимации, выполненных на основе стандартных блоков Slider Gain SG1 … SG4, формирователь и решатель системы линейных уравнений (1) SOLVER, вычислитель аппроксимирующей функции и ошибки приближения CALCULATOR и дисплеи для отображения результатов моделирования: X[I] - вектор узлов аппроксимации, C[I] - вектор параметров аппроксимирующей функции, блок SCOPE отображает аппроксимирующую функцию и ошибку приближения. Установив бесконечное время моделирования и предел временного интервала в блоке Scope, равный единице, можно непрерывно наблюдать графики аппроксимирующей функции и ошибки приближения в процессе коррекции узлов аппроксимации. Изменяя положения узлов аппроксимации с помощью блоков Slider Gain SG1 … SG4, добиваемся желаемой формы ошибки аппроксимации. На дисплеях X[I] и C[I] отображаются вектора узлов аппроксимации и параметров аппроксимирующей функции.

Реализация блоков SOLVER, CALCULATOR и блока ERROR изображена на рис.2,3 и 4.

Рис.2. Модель блока SOLVER.

Рис.3. Модель блока CALCULATOR.

Рис.4. Модель блока ERROR.

В результате моделирования получено три варианта аппроксимирующей функции:

- при произвольном расположении узлов аппроксимации

- при расположении одного из узлов аппроксимации в начале диапазона изменения аргумента функции

- при расположении двух узлов аппроксимации в начале и конце диапазона изменения аргумента функции

Модель approximation.mdl является удобным инструментом для интерактивной аппроксимации функций в среде MATLAB/Simulink. Она наглядно показывает процесс поиска желаемого приближения и может быть легко настроена на особенности конкретной рациональной дроби или полинома.

Литература

1. Калиткин Н. Н. Численные методы.- М.: Наука, 1978.- 512 с.


Поиск по сайту:

Система Orphus

Яндекс.Метрика