Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 22. 02. 2011 14:08

ilaplace
Zelenáč
Příspěvky: 2
Reputace:   
 

Algoritmus pre riesenie DR NR v MATLAB-e

Dobry den,
Potreboval by som pomoct s algortitmom pre riesenie DR NR v MATLAB-e.
Tyka sa to mojej Bakalarskej prace : "Identifikacia a riadenie laboratorneho objektu" , Mam k dispozicii namerane vystupne hodnoty v case. Z tychto hodnot potrebujem vytvorit matematicky model realnej sustavy. Ako vstupny signal pouzivam Heavisideovu skokovu zmenu o hodnote 1. Povodne som mal identifikovat ariadit tuto sustavu len ako celociselnu sustavu. V podstate to uz mam, no mam este cely mesiac cas, tak by som chcel skusit nieco tazsie a v praci porovnat vysledky.
Co sa tyka toho algoritmu, pre sustavu s parametrami a0,a1,alfa , to uz spravene mam,
    $a2^\alpha y(t)+a1^\beta y(t)+a0y(t)=u(t)$
Pre aproximaciu derivacie vyuzivam nasledujuci vztah:
$y^{(\alpha)} (t)\approx _{\mathrm{(t-1)}}D^\alpha_t y(t)=h^{-\alpha} \sum_{j=1}^N b_j y(t-jh)$
kde $\alpha$ je "rad derivacie" , h je casovy krk a N je "dlzka pamate".
Pre vypocet bj:
$b0=1, b_j=\left (1-\frac {1+\alpha}{j} \right )b_{j-1}$
pre $y_m$ :
$y_m=\frac {u_m-a_2h^{-\alpha}\sum_{j=1}^mb_jy_{m-j}+a_1h^{-\beta}\sum_{j=1}^mc_jy_{m-j}}{a_2h^{-\alpha}b_0+a_1h^{-\beta}c_0+a0}$
Algoritmus ktory potrebujem opravit:
clear all;
cas=20;
del_tau=0.1;
N=cas/del_tau+1;
t=[0:del_tau:cas];
u=1;
a2=3; a1=2; a0=1; alfa=2.3; beta=1.4;
b(1)=1;
c(1)=1;
for j=1:N,
    b(j+1)=(1-(1+alfa)/j)*b(j);
    c(j+1)=(1-(1+beta)/j)*c(j);
end
y0=0'
j=1;
y(j)=y0;
for m=2:N,
    S1=0;
    S2=0;
    for j=2:m,
        S1=S1+b(j)*y(m-j+1);
        S2=S2+c(j)*y(m-j+1);
    end
    y(m)=(u-a2/del_tau^alfa*S1+a1/del_tau^beta*S2)/(a2/del_tau^alfa+a1/del_tau^beta+a0);
end

plot(t,y);
grid on;

Tento program samozrejme nevyuzivam na identifikaciu ale na porovnanie , ak mi toto bude fungovat, algoritmus na identifikaciu si z toho odvodim. Myslim si, ze chyba je v cykloch. Skusal som to menit, no nedostavam adekvatne vysledky.
Za pomoc a ochotu vopred Dakujem.

Offline

 

#2 23. 02. 2011 11:36

ilaplace
Zelenáč
Příspěvky: 2
Reputace:   
 

Re: Algoritmus pre riesenie DR NR v MATLAB-e

↑ ilaplace:
Ak by to niekoho zaujimalo, tak tu je spravne riesenie pre vypocet prech. char. DR NR 2.stupna v MATLAB-e

clear all;
cas=20;
del_tau=0.1;
% del_tau=0.01;
a2=3; a1=2; a0=1; alfa=2.3; beta=1.4;
u=1;
N=cas/del_tau+1;
t=[0:del_tau:cas];
b(1)=1;
c(1)=1;
for j=1:N,
    b(j+1)=(1-(1+alfa)/j)*b(j);
    c(j+1)=(1-(1+beta)/j)*c(j);
end
y0=0;
y01=0;
% pociatocne podmienky
j=1;
y(j)=y0;
j=2;
y(j)=y01;
for m=3:N,
    S1=0;
    S2=0;
    for j=2:m,
        S1=S1+b(j)*y(m+1-j);
        S2=S2+c(j)*y(m+1-j);
    end
    y(m)=(u-a2/del_tau^alfa*S1-a1/del_tau^beta*S2)/(a2/del_tau^alfa+a1/del_tau^beta+a0);

end
plot(t,y); grid on;
save('C:\subX1.dat','t','y','-ASCII');

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson