Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Аппроксимация. Метод наименьших квадратовСодержание книги
Поиск на нашем сайте Пусть данные некоторого эксперимента представлены в виде таблицы значений независимой переменной x и зависимой переменной y. Требуется отыскать аналитическую зависимость f(x,a0,a1,…,am), являющуюся функцией одной независимой переменной x и параметров a0,a1,a2,…,am, которая наилучшим образом описывала бы эти экспериментальные данные в смысле минимума квадратичного критерия рассогласования R(a0,a1,…,am): Функцию f(x,a0,a1,…,am) определим как полином степени m вида:
или
Полученную линейную относительно искомых параметров a0,a1,a2, систему уравнений запишем в матричном виде:
При аппроксимации полиномами высших порядков матрица В общем случае количество строк в матрице
Программа. Аппроксимация.
function DATA global x y m n; x=[-4:4]; y=[254;75;12;0;1;2;21;92;287]; n=9; m=4; end
function [ a,dy,r,yr ] = fun_Approximation(x,y,m,n) for i=1:n for j=1:m+1 F(i,j)=x(i)^(j-1); end %for j end %for i Ft=F'; N=Ft*F; b=Ft*y; Nobr=N^(-1); a=Nobr*b; yr=F*a; dy=y-yr; r=dy'*dy; end % function
function GLAV_Approximation global x y m n a dy r yr; DATA; [ a,dy,r,yr ] = fun_Approximation(x,y,m,n); REPORT; end
function REPORT global x y m n a dy r yr; disp('Approximation'); disp(' '); disp(' i x y yr dy'); disp(' ________________________________________________________') i=0; for i=1:length(x) xx=x(i); yy=y(i); yrr=yr(i); dyy=dy(i); disp(sprintf('%10.1f\t%10.5f\t %10.5f\t%10.5f\t %10.5f',i,xx,yy,yrr,dyy)); end %for disp(' '); disp(' i a '); disp(' _______________') i=0; for i=1:length(a) aa=a(i); disp(sprintf('%10.1f\t%10.5f',i,aa)); end %for plot(x,y,'r*',x,yr,'k-'); grid on; xlabel('x *, xx --'); ylabel('y *, yr --'); title('Approximation'); end
Блок-схема аппроксимации.
Интегрирование Пусть на отрезке [a; b] определена непрерывная функция f(x). f=inline(‘<функция>'); Требуется определить значение определенного интеграла
Рис.2.6.1. Интегрирование. Разбиение на равные отрезки. f=inline(‘<функция>'); x=a:h:b; plot(x,f(x),'k-') Площадь S можно вычислить как сумму элементарных площадей определенных для соответствующих элементарных отрезков длиной h: S = s0+s1+s2+…si+…..+sn–1 Произвольную площадь si можно вычислить, как определенный интеграл на отрезке [xi;xi+1] от более простой функции φi(x), которой заменим реальную функцию f(x): Методы прямоугольников. Значение функции φi(x) на отрезке [xi;xi+1] принимается константой Метод прямоугольников вперед. Для функции φi(x) = yi значения элементарной si и общей S площади можно вычислить как: x=a:h:b-h; S=h*sum(f(x)); Метод прямоугольников назад. Для функции φi(x) = yi значения элементарной si и общей S площади можно вычислить как: x=a+h:h:b; S=h*sum(f(x)); Метод прямоугольников в среднем. Вычислим x=a+h/2:h:b; S=h*sum(f(x)); Метод трапеций. Функцию φi(x) будем определять как линейную на отрезке [xi;xi+1], т.е. ее график должен проходить через две смежные точки (xi,yi) и (xi+1,yi+1). Функцию φi(x) можно будет представить как интерполяционный многочлен Лагранжа, построенный по двум точкам (xi,yi) и (xi+1,yi+1):
Метод Симпсона. Определим точку xi+½ = xi+½·h в середине элементарного отрезка [xi;xi+1] и значение функции в этой точке yi+½ Функцию φi(x) будем определять как квадратичную на отрезке [xi;xi+1], т.е. её график должен проходить через три смежные точки (xi,yi),(xi+½ , yi+½) и (xi+1,yi+1). Функцию φi(x) можно будет представить как интерполяционный многочлен Лагранжа, построенный по трём точкам xi, xi+½ и xi+1:
Тогда значения общей S площади можно вычислить как:
Программа. Интегрирование. Сравнение погрешностей методов при одинаковом числе шагов function DATA global a b n; a=-1; b=4; n=50; end
function [ fx ] = f(x) fx=x.^2-5; end
function [ Integr ] = Pramougoln_Vpered(a,b,n) disp('Pramougoln_Vpered'); h=(b-a)/n; for i=1:n+1 if i==1 x(i)=a; else x(i)=x(i-1)+h; end%if y(i)=f(x(i)); end%for i sum=0; for i=1:n sum=sum+y(i); end%for i Integr=h*sum; end
function [ Integr ] = Pramougoln_Nazad(a,b,n) disp('Pramougoln_Nazad'); h=(b-a)/n; for i=1:n+1 if i==1 x(i)=a; else x(i)=x(i-1)+h; end%if y(i)=f(x(i)); end%for i sum=0; for i=2:n+1 sum=sum+y(i); end%for i Integr=h*sum; end
function [ Integr ] = Pramougoln_Sredn(a,b,n) disp('Pramougoln_Sredn'); h=(b-a)/n; for i=1:n if i==1 x(i)=a+h/2; else x(i)=x(i-1)+h; end%if y(i)=f(x(i)); end%for i sum=0; for i=1:n sum=sum+y(i); end%for i Integr=h*sum; end
function [ Integr ] = Trapez(a,b,n) disp('Trapez'); h=(b-a)/n; for i=1:n+1 if i==1 x(i)=a; else x(i)=x(i-1)+h; end%if y(i)=f(x(i)); end%for i sum=0; sum=(y(1)+y(n+1))/2; for i=2:n sum=sum+y(i); end%for i Integr=h*sum; end
function [ Integr ] = Symps(a,b,n) disp('Symps'); h=(b-a)/n; for i=1:n+1 if i==1 x(i)=a; else x(i)=x(i-1)+h; end%if y(i)=f(x(i)); end%for i for i=1:n if i==1 xsr(i)=a+h/2; else xsr(i)=xsr(i-1)+h; end%if ysr(i)=f(xsr(i)); end%for i sum=0; for i=1:n sum=sum+y(i)+4*ysr(i)+y(i+1); end%for i Integr=h*sum/6; end
function GLAV_Integr global a b n Integral; DATA; [ Integral(1) ] = Pramougoln_Vpered(a,b,n); [ Integral(2) ] = Pramougoln_Nazad(a,b,n); [ Integral(3) ] = Pramougoln_Sredn(a,b,n); [ Integral(4) ] = Trapez(a,b,n); [ Integral(5) ] = Symps(a,b,n); REPORT; end
function REPORT global a b n Integral; disp('Arguments f(x)=x^2-5'); disp(['left board a = ' num2str(a,'%10.5f') ]); disp(['right board b = ' num2str(b,'%10.5f') ]); disp(['Number of steps n = ' num2str(n,'%10.5f') ]); disp(['Pramougoln_Vpered = ' num2str(Integral(1),'%10.5f') ]); disp(['Pramougoln_Nazad = ' num2str(Integral(2),'%10.5f') ]); disp(['Pramougoln_Sredn = ' num2str(Integral(3),'%10.5f') ]); disp(['Trapez = ' num2str(Integral(4),'%10.5f') ]); disp(['Symps = ' num2str(Integral(5),'%10.5f') ]); end
|
||||||||||||||||||||||||||||||||||||||||||||||||||
|
Последнее изменение этой страницы: 2021-11-27; просмотров: 248; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.156 (0.01 с.) |