22
23 % znajdowanie pierwiastków
24 %
25 x0 = [];
26 for k = 1:7
27 x0 = [x0; fzero( eq, (k-l)*pi) ];
28 end
29
30 % wyniki jako kolumna liczb i na wykresie
31 %
32 format long
33 disp(x0);
34 hołd on; plot(x0,lhs(x0),’or');
Ilustracja 24. Graficzne przedstawienie pierwiastków równania sin* = e *
Zadanie 34. Napisz skrypt, który znajduje wszystkie dodatnie rozwiązania równanie e~2t^T sm2(2nft) = 0.5, wiedząc że T = 10 sekund, / = 50 hertzów.
Zadanie to można rozwiązać w podobny sposób jak poprzednie. Ponieważ |sin(27r/t)| < 1, to gdy e-2t/r < 0.5 rozwiązań być nie może. Dlatego szukamy takich pierwiastków xk, dla których 0 <xk < — irin0.5 » 0.357\ Okres sinusoidalnych zmian wynosi 1/f, dlatego będziemy badać funkcję y = e~2t^T s\n(2nft) — 0.5 dzieląc każdy taki okres na dziesięć podprzedziałów (funkcja sinus ma tylko 3 miejsca zerowe na okres). W każdym podprzedziale, dzięki pętli while, używamy funkcji fzero, której przekazujemy jako pierwszy parametr równanie, a jako drugi parametr zakres. Blok try-catch służy do wyciszenia sygnalizacji błędu, jakim jest szukanie miejsca zerowego gdzie go nie ma.
; 1 % definicja funkcji
| 2 %
i 3 T = 10.0; X sekund i 4 f = 50.0; % Hz
: 5 eq = @(t)( exp(-2.0*t/T) .* sin(2.0*pi*f*t) - 0.5 );
i 6
! 7 % zakres wykresu i ilość punktów
dr Sławomir Marczyński
Matlab - ćwiczenia
17/38