Самоучитель Matlab
y=3*exp(-0.2*x)+0.4*sin(pi*x/5). В данном случае использована функциональная зависимость y(x) = 3 exp(−0.2x) + 0.4 sin(πx 5) . Эта зависимость близка к экспоненциальной, но с некоторой поправкой (добавлен синус). Затем командой z=log(y) определяется новый набор точек. На основе этого набора командой p=polyfit(x,z,1) вычисляются коэффициенты аппроксимирующего полинома первой степени (линейная функция). Вычисленные коэффициенты записываются в список p. Элементы этого списка в команде a=[exp(p(2)) p(1)] используются для определения нового списка. В результате выполнения этой команды получаем следующий результат (ввод пользователя выделен жирным шрифтом):
>> a=[exp(p(2)) p(1)] a =
3.7148 -0.2795
Командой f=@(x)(a(1)*exp(a(2)*x)) определяем функциональную зависимость, на основе которой строится аппроксимирующее выражение. В этой зависимости использованы вычисленные на предыдущем шаге коэффициенты (список a). Прочий код предназначен для отображения базовых точек и аппроксимирующей кривой:
>>t=0:0.01:10;
>>plot(x,y,'rs','LineWidth',2)
>>hold on
>>grid on
>>plot(t,f(t),'b--','LineWidth',2)
Такого типа код использовался достаточно часто и особых комментариев, думается, не требует. Результат показан на рис. 8.18.
Можно полагать, что результат достаточно приемлемый. И получен он минимальными усилиями. Тем не менее, такой простой путь не всегда возможен.
В случае, если задачу к линейной свести не удастся, можно воспользоваться, например, встроенной функцией fminsearch(), предназначенной для поиска минимума функции нескольких переменных. Первым аргументом функции fminsearch() передается указатель на минимизируемую функцию, а также список начальных приближений для параметров этой функции. Поэтому общий подход может быть таким: если необходимо вычислить параметры ap (индекс p = 1,2,...,m ) функции f (x,a1,a2,...,am ) на
основе табличных значений (xk,yk ) (индекс k = 1,2,...,n ), то минимизиро-
n
вать будем функцию Φ(a1,a2,...,am ) = ∑(yk − f (xk,a1,a2,...,am ))2 по па-
k =1
раметрам a1,a2,...,am . Реализация этого подхода проиллюстрирована в следующем примере. Обратимся к документу, представленному на рис. 8.19.