7306


Laboratorium Modelowania i Symulacji

Ćwiczenie 3

Aproksymacja funkcji wielomianem stopnia N

  1. Program ćwiczenia

  1. Przed wykonaniem kolejnych punktów programu ćwiczenia należy dokładnie zapoznać się z załączonymi programami w języku Matlab,

  2. Wybierając odpowiednie parametry wejściowe uruchomić program f1 obliczania wartości funkcji sin(x)/x, a następnie wywołać program aproksymacji aprmf.

  3. Napisać program w języku Matlab wykorzystujący funkcje f1 i aprmf wykonujący następujące działania:

  1. obliczanie M = 200 wartości funkcji sin(x)/x dla Pmax = 0.25, 0.5, 0.75,...,2.0,

  2. obliczanie współczynników wielomianu aproksymującego przy zadanym błędzie aproksymacji eg = 0.00001,

  3. wykreślania wykresu zależności stopnia wielomianu aproksymującego od maksymalnej wartości argumentu funkcji N = f(Pmax),

  1. Uruchomić program f1 obliczania wartości funkcji sin(x)/x, a następnie wywołać program aproksymacji aprmf przyjmując następujące parametry: Pmax = 5, eg =0.00001,

  2. Napisać program w języku Matlab obliczania M wartości funkcji sign(x). Zbadać zależność stopnia wielomianu aproksymującego od zadanej dokładności eg.

  3. Napisać program w języku Matlab obliczania wartości indywidualnie wybranej funkcji, a następnie wykonać obliczenia według schematu z p. 1.3.

  1. Sprawozdanie

Sprawozdanie powinno zawierać raport z przebiegu ćwiczenia z wykresami otrzymanych przebiegów sygnałów i parametrów oraz uwagami i wnioskami.

  1. Programy wykorzystywane w ćwiczeniu

  1. aprmf.m - aproksymacja funkcji wielomianem stopnia N

% eg - zadana wartość sumy kwadratów błędów

% z - współczynniki wielomianu

% N - stopień wielomianu

% x - wektor wartości zmiennej niezależnej

% y - wektor watości funkcji

function[N,z]=aprmf(x,y,eg);

ER=10; % Początkowa wartość sumy kwadratów błędów

close all; clear z; clear u; clear e; clear err;

figure(1);

plot(x,y,'.w'); % wyświetlenie wykresu funkcji

title('Funkcja y(x) i wielomian u(x)');

hold on % zamrożenie wykresu

i=0;

while ER>eg, % pętla

i=i+1;

z=polyfit(x,y,i-1); % obliczenie współczynników wielomianu

u(i,:)=polyval(z,x); % obliczenie wartości wielomianu

e(i,:)=y-u(i,:); % obliczenie błędu aproksymacji

err(i)=sumsqr(e(i,:))/length(x); % Suma kwadratów błędów

ER=err(i);

end;

N=i-1,

plot(x,u(i,:),'b-'); % wyświetlenie wykresu wielomianu

figure(2);

plot(x,e(i,:));

title('Błąd aproksymacji');

hold off

figure(3);

semilogy([0:i-1],err,'*y'); % wyświetlenie wykresu sumy kwadratów błędów

hold on;

semilogy([0:i-1],err,'c');

title('Suma kwadratów błędów'); hold off;

3.2. f1.m - funkcja sin(x)/x

% f1.m - funkcja sin(x)/x

% Pmax - maksymalna wartość zmiennej niezależnej

% M - liczba wartości funkcji

function[x,y]=f1(Pmax,M);

x=linspace(0,Pmax,M);

y=sin(10*x)./(10*x);

y(1)=1;

3.2. f2.m - funkcja sign(x)

% f2.m - funkcja sign(x)

% Pmax - maksymalna wartość zmiennej niezależnej

% M - liczba wartości funkcji

function[x,y]=f2(Pmax,M);

x=linspace(-Pmax,Pmax,M);

y=sign(x);

4. Literatura

  1. Eykhoff P.: Identyfikacja w układach dynamicznych. PWN. Warszawa. 1980.

  1. Mańczak K., Nahorski Z.: Komputerowa identyfikacja obiektów dynamicznych. PWN. Warszawa. 1983.

  1. Niederliński A.: Systemy komputerowe automatyki przemysłowej. t. 2 . Zastosowania. WNT. Warszawa. 1985.

1



Wyszukiwarka

Podobne podstrony:
7306
7306
7306
7306
7306
7306
praca-magisterska-7306, Dokumenty(2)
7306

więcej podobnych podstron