tan(x)
Transkrypt
tan(x)
Wybrane funkcje matematyczne programu Matlab Funkcja Opis sin(x) cos(x) tan(x) cot(x) asin(x) acos(x) atan(x) acot(x) sinh(x) cosh(x) tanh(x) coth(x) asinh(x) acosh(x) atanh(x) acoth(x) Funkcje trygonometryczne których argumentem jest kąt podawany w radianach Funkcja cylkometryczna w wyniku podaje kąt w radianach Funkcja hiperboliczna której argumentem jest kąt podawany w radianach Funcke pola, odwotne hiperboliczne, w wyniku podają kąt w radianach exp(x) Wykładnicza, tworzy macierz z elementów e(xij) log(x) Logarytm naturalny o podstawie e logy(x) Logarytm przy podstawie y z x (np. log10(x) – logarytm dziesiętny, log2(x) – logarytm z x przy podstawie 2 sqrt(x) Pierwiastek kwadratowy z x abs(x) Wartość bezwzględna nthroot(x,n) Pierwiastek stopnia n z x mod(a) Reszta z dzielenia a sign(x) Znak 1 gdy x>0, 0 gdy x=0,-1 gdy x<0 factorial(n) Silnia (iloczyn kolejnych liczb) z liczb naturalnych cross(a,b) Iloczyn wektorowy dwóch wektorów współpłaszczyznowych a i b (np. w płaszczyźnie xy: a = (x1,y1,0), b = (x2,y2,0). W wyniku operacji cross(a,b) uzyskany zostanie wektor prostopadły c=(0,0,z) Sposoby zaokrąglania liczb rzeczywistych: Funkcja fix(a) Opis Najbliższa liczba całkowita w kierunku 0 floor(a) Zaokrąglanie w dół ceil(a) Zaokrąglanie w górę round(a) Najbliższa liczba całkowita Funkcje operujące na wektorach Funkcja Opis max(x) Zwraca największy element wektora x min(x) Zwraca najmniejszy element wektora x sum(x) Zwraca sumę elementów wektora x prod(x) Zwraca iloczyn elementów wektora x mean(x) Zwraca średnią arytmetyczną elementów wektora x Operacje macierzowe. Dzielenie macierzy, to mnożenie przez macierz odwrotną: A/B (prawostronne) = A*B-1 lub A\B (lewostronne) = A-1*B Macierze możemy podzielić, tylko gdy występuje zgodność wymiarów macierzy, oraz gdy macierz, która powinna zostać odwrócona, jest odwracalna. W pierwszej kolejności należy sprawdzić wyznacznik macierzy odwracanej: det(A) – Wyznacznik macierzy A oraz możliwość jej odwrócenia inv(A) – Macierz odwrotna macierzy A Obliczenia numeryczne Prowadząc obliczenia numeryczne z wykorzystaniem pakietu Matlab zgadzamy się na pewne założenia a proiri: - operując na liczbach , dopuszczamy możliwość ich niedokładnej reprezentacji - podczas obliczeń mogą występować niedokładności - niewielkie błędy mogą się pojawiać na każdym etapie obliczeń - może okazać się że wynik będzie obarczony niewielką niedokładnością, która jednak nie może zostać zaakceptowana W obliczeniach numerycznych konieczne jest określenie wielkości charakteryzujących macierz, takich jak wyznacznik, rząd, norma czy wartość własna macierzy Funkcja Opis det(A) Wyznacznik macierzy A rank(A) Rząd macierzy A norm(A) Norma macierzy A. cond(A) Liczba warunkowa macierzy A L=eig(A) Zwraca wektor L zawierający wartości własne macierzy kwadratowej A [V,D]=eig(A) Wyznacza macierz D, zawierającą na przekątnej wartości własne macierzy A oraz macierz V wektorów własnych odpowiadających tym wartościom Miejsca zerowe, minima funkcji nieliniowych. W pakiecie Matlab wbudowane są funkcje umożliwiające obliczanie miejsc zerowych oraz minimów dowolnych nieliniowych funkcji matematycznych: Funkcja Opis Zwraca miejsce zerowe x1 nieliniowej funkcji jednej zmiennej f(x). Argument x0 określa początkowe przybliżenie wartości szukanego x1=fzero(f,x0) miejsca zerowego (punkt startowy). f jest łańcuchem znaków określających funkcję Matlaba: nazwę funkcji (standardowej lub z mpliku) lub definicję funkcji inline Zwraca wartość x1, dla której nieliniowa funkcja jednej zmiennej f(x) osiąga minimum. Argumentami funkcji są: liczby x0 i xk, określające x1=fminbnd(f,x0,xk) początek i koniec przedziału poszukiwań oraz f – łańcuch znaków, jak w przypadku fzero. Zwraca wektor wartości X, dla których funkcja nieliniowa wielu X=fminsearch zmiennych osiąga minimum. Argumentami funkcji są: wektor X0, punkt startowy oraz f – łańcuch znaków, jak w przypadku określający (f,X0) fzero. Przykład Znaleźć miejsce zerowe funkcji: f(x)=cos(2x-π) w otoczeniu punktu 3 >> fzero(inline('cos(2*x-pi)'),3) ans = 2.3562 Znaleźć miejsce zerowe funkcji: f(x)=cos(x) w otoczeniu punktu 3 >> fzero('cos',3) ans = 1.5708 Wszystkie w.w. funkcje można wywołać z wykorzystaniem opcjonalnych parametrów opcje : >>x1=fzero(f,x0,opcje) Opcje określają parametry wywołania tych funkcji. Domyślne ustawienia tych parametrów można zmienić za pomocą funkcji optimset: >>Opcje=optimset(parametr,wartość,…) Argumentami funkcji optimset są pary parametr-wartość, przy czym parametr określany jest za pomocą łańcuchów znaków. Parametry zmieniane za pomocą funkcji optimset: Funkcja Opis ‘Diagnostics’ ‘Display’ ‘MaxFunEvals’ Wydruk diagnostyki minimalizowanej funkcji lub rozwiązywanego równania; dopuszczalne wartości: ‘on’ lub ‘off’ (domyślna) Sposób wyświetlania wyników: bez wyświetlania (‘off’), wyświetlanie wyników po każdej iteracji (‘iter’), wyświetanie tylko ostatecznego rozwiązania (‘final’ – wartość domyślna) Maksymalna dozwolona liczba obliczeń wartości funkcji (liczba całkowita dodatnia) ‘MaxIter’ Maksymalna dozwolona liczba iteracji (liczba całkowita dodatnia) ‘TolX’ Dokładność wykonywania obliczeń (liczba dodatnia, np. 2.2e-016) Przykład: Znaleźć miejsce zerowe funkcji: f(x)=cos(x) w otoczeniu punktu 1.6 >> fzero('cos',1.6,optimset('Display','iter')) Search for an interval around 1.6 containing a sign change: Func-count a 1 1.6 2 1.55475 f(a) -0.0291995 0.0160505 b f(b) 1.6 -0.0291995 initial interval 1.6 -0.0291995 search Search for a zero in the interval [1.55475, 1.6]: Func-count x f(x) 2 1.55475 0.0160505 3 1.5708 -1.0276e-006 Procedure Procedure initial interpolation 4 1.5708 4.41237e-011 interpolation 5 1.5708 6.12323e-017 interpolation 6 1.5708 6.12323e-017 interpolation Zero found in the interval [1.55475, 1.6] ans = 1.5708 Wielomiany Zakładając, że wielomian stopnia n ma ogólną postać: W(x,a)=a1xn+a2xn-1+…+anx+an+1 gdzie: ai – to współczynniki wielomiany uszeregowane według malejącej potęgi zmiennej x, wyznaczyć można pierwiastki wielomiany z wykorzystaniem funkcji: Funkcja a=poly(r) p=polyval(a,x0) r=roots(a) Opis Zwraca wektor a współczynników ai wielomianu W(x,a) o pierwiastkach podanych w postaci wektora r=[r1,r2,…,rn] Zwraca wartość wielomiany W(x,a) w punkcie x=x0. Współczynniki wielomianu określa wektor a, przy czym muszą być one uszeregowane w kolejności od najbardziej znaczącego (a1) do wyrazu wolnego (an+1). Jeśli x0 jest wektorem (macierzą), wartości wielomianu obliczane są dla wszystkich elementów wektora x0 Zwraca wektor r pierwiastków wielomianu W(x,a). a – wektor współczynników wielomiany ai Przykład: Wyznaczyć pierwiastki wielomianu: W(x) = x2+3x-4 >> roots([1 3 -4]) ans = -4 1 Wartość wielomianu w punkcie x0=0 >> polyval([1 3 -4],5) ans = 36 Układ równań liniowych (kwadratowy) Kwadratowy układ równań liniowych, w którym liczba równań i niewiadomych jest jednakowa, można zapisać w sposób ogólny w postaci: + + ⋯+ = + + ⋯+ = …………………………………… + +⋯+ = Układ taki można rozwiązać na dwa sposoby. I Metoda macierzowa – z wykorzystaniem macierzy odwrotnej macierzy wyznaczników A*X=B X=A-1*B W pierwszej kolejności należy stworzyć potrzebne macierze. Na podstawie współczynników układu równań macierz A, oraz kolumnową macierz wyrazów wolnych B. >>A=[a11 a12 … a1n;a21 a22 … a2n;… … … …;an1 an2 … ann] >>B=[b1;b2;…;bn] W kolejnym kroku sprawdzamy czy macierz A spełnia warunke odwracalności, tzn. czy posiada niezerowy wyznacznik macierzy: >>det(A) Gdy det(A) ≠ 0, można znaleźć rozwiązanie układu równać stosując wzór: >> X=inv(A)*B W wyniku otrzymany zostanie wektor kolumnowy wartości niewiadomych X ułożonych w kolejności rosnących współczynników. Ia Zamiast mnożenia przez macierz odwrotną można wykonać dzielenie lewostronne A przez B >> X=A\B Przykład: Rozwiąż układ równań Rozwiązanie: >> A=[2 3 0;1 1 1;0 -3 1] A= 2 3 0 2 +3 =8 + + =6 −3 + = −3 1 1 1 0 -3 1 >> B=[8;6;-3] B= 8 6 -3 >> det(A) ans = 5 >> X=inv(A)*B X= 1 2 3 Oznacza to, że x1 = 1, x2 = 2 x3 = 3 Stosując dzielenie lewostronne >> X=A\B ans = 1 2 3 Oznacza to, że x1 = 1, x2 = 2 x3 = 3 II Metoda Crammera – metoda wyznacznikowa z wykorzystaniem wzorów Crammera = det( ) det( ) = det( ) det( ) = det( ) det( ) W pierwszej kolejności należy stworzyć potrzebne macierze. Na podstawie współczynników układu równań macierz A, oraz kolumnową macierz wyrazów wolnych B. >>A=[a11 a12 … a1n;a21 a22 … a2n;… … … …;an1 an2 … ann] >>B=[b1;b2;…;bn] W następnej kolejności tworzymy macierze A1, A2 i A3 Liczymy wartość wyznaczników i za pomocą wzorów Crammera wyznaczamy wartości niewiadomych x. Przykład: Rozwiąż układ równań, identyczny jak w poprzednim przykładzie: >> A=[2 3 0;1 1 1;0 -3 1] A= 2 3 0 1 1 1 0 -3 1 >> B=[8;6;-3] B= 8 6 -3 >> A1=[B,A(1:3,2:3)] A1 = 8 3 0 6 1 1 -3 -3 1 >> A2=[A(:,1),B,A(:,3)] A2 = 2 8 0 1 6 1 0 -3 1 >> A3=[A(1:3,1:2),B] A3 = 2 3 8 1 1 6 0 -3 -3 >> X1=det(A1)/det(A) X1 = 1 >> X2=det(A2)/det(A) X2 = 2 >> X3=det(A3)/det(A) X3 = 3 Oznacza to, że x1 = 1, x2 = 2 x3 = 3 Układ równań liniowych (prostokątny) Prostokątny układ równań liniowych, w którym liczba równań i niewiadomych jest różna, można zapisać w sposób ogólny w postaci: + + ⋯+ = + + ⋯+ = …………………………………… + +⋯+ = Układ taki może być z niedoborem gdy jest więcej niewiadomych niż równań, lub z nadmiarem gdy jest więcej równań niż niewiadomych. Aby rozwiązać układ równań, konieczne jest zastosowanie twierdzenia Kroneckera-Capellego i określić rząd macierzy: W pierwszej kolejności należy stworzyć potrzebne macierze. Na podstawie współczynników układu równań macierz A, oraz kolumnową macierz wyrazów wolnych B. >>A=[a11 a12 … a1n;a21 a22 … a2n;… … … …;an1 an2 … ann] >>AB==[a11 a12 … a1n b1;a21 a22 … a2n b2;… … … …;an1 an2 … ann bn] >>B=[b1;b2;…;bn] W kolejnym kroku sprawdzamy rząd macierzy A i macierzy AB: >>rA=rank(A) >>rAB=rank(AB) Gdy rA = rAB =h układ ma rozwiązanie i postępujemy zgodnie z zasadami opisanymi powyżej (dla układu kwadratowego), zakładając że ilość potrzebnych do rozwiązania układu równań równań jest równa h, jak również że tylko h niewiadomych jest możliwe do wyznaczenia w danym układzie pozostałe są rozpatrywane jako parametry układu. Po ustaleniu rzędu macierzy pozwalającego na rozwiązanie układu, wycinamy z macierzy A podmacierz współczynników na podstawie której zostanie przeprowadzone rozwiązanie. Następnie rozwiązujemy układ zgodnie z zasadami I, Ia Tworzymy macierz c złożoną z współczynników przy parametrach i liczymy współczynniki dla wyrazów parametrycznych z wzory x=AB-1*c, a następnie uzupełniając rozwiązanie podstawowe o ten wynik. Tak powstaje ostateczne rozwiązanie układu równań Przykład: Rozwiąż układ równań Rozwiązanie: >> A=[1 1 1;1 -2 3] A= 1 1 1 1 -2 3 + −2 + =3 +3 =2 >> B=[3;2] B= 3 2 >> r1=rank(A) r1 = 2 >> r2=rank([A B]) r2 = 2 >> AA=A(1:2,1:2) AA = 1 1 1 -2 >> X=inv(AA)*B X= 2.6667 0.3333 >> c=[-1;-3] c= -1 -3 >> x=inv(AA)*c x= -1.6667 0.6667 Ostateczne rozwiązanie ma wiec postać x1 = 2.67-1.67*x3, x2 = 0.33-0.67*x3