Pakiety Matematyczne
Transkrypt
Pakiety Matematyczne
Pakiety matematyczne Matematyka Stosowana dr inż. Krzysztof Burnecki 10.04.2013 Wykład 8 Rachunek różniczkowy i całkowy Operacje symboliczne w Matlabie Slajdy powstały na podstawie prezentacji „Informatyka” otrzymanej od dr hab. Małgorzaty Kotulskiej Całkowanie. Funkcje „quad”, „quadl” Funkcja quad wykorzystuje regułę Simpson’a (3-punktowa reguła Newton-Cotes’a), dokładna dla wielomianów do 3 stopnia. Funkcja quadl 4-punktową regułę dokładna dla wielomianów do 5 stopnia. Gauss-Lobatto, Obie metody sa metodami adaptacyjnymi. Dzielą przedział całkowania na podprzedziały o zmiennej długości tak, aby najkrótszy przedział wypadał w miejscu największej zmienności funkcji podcałkowej. Funkcje „quad”, „quadl” quad (@oblicz, początek_x, koniec_x, tolerancja) quadl (@oblicz, początek_x, koniec_x, tolerancja) tolerancja (jak duży błąd) – opcjonalnie Całkowanie. Przykład 5 x ln(x) dx 1 function wynik = oblicz(x) wynik = x.*log(x); >> quad (@oblicz, 1,5) ans = 14.1180 >> quadl (@oblicz, 1,5) ans=14.1180 Tolerancja w całkowaniu >> quadl(@oblicz, 1,5,1e-1) ans = 14.1180 >> quadl(@oblicz, 1,5,1e-25) Warning: Maximum function count exceeded; singularity likely. (Type "warning off MATLAB:quadl:MaxFcnCount" to suppress this warning.) > In C:\MATLAB6P5\toolbox\matlab\funfun\quadl.m at line 94 ans = 14.1872 Całkowanie za pomocą „trapz” Z = trapz(Y) Z = trapz(X,Y) %Y-wektor wyznaczający przedział dziedziny Metoda NIEADAPTACYJNA Całkowanie za pomocą „trapz” >> x = linspace(1,5,5) >> f = x.*log(x); >> trapz(x,f) ans =14.2509 >>x = linspace(1,5,15) >> trapz(x,f) ans =14.1289 Całkowanie za pomocą „trapz” sin( x)dx 0 >> X = 0:pi/100:pi; >> Y = sin(X); >> Z = trapz(X,Y) Z = 1.9998 Całkowanie podwójne. Funkcja „dblquad” q = dblquad(fun,xmin,xmax,ymin,ymax) q = dblquad(fun,xmin,xmax,ymin,ymax,tol) q = dblquad(fun,xmin,xmax,ymin,ymax,tol,method) function out=fxy(x,y) out=y^2*exp(x)+x*cos(y); >> dblquad(@fxy,0,1,4,6) ans=87.2983 Różniczkowanie. Funkcja „diff” diff(y) - oblicza różnicę pomiędzy kolejnymi elementami wektora diff(y,n) – różnica obliczana n razy Przykład: >> x = [1, 3, 5, 3, 4, 8] >> diff(x) ans = 2 2 -2 1 3 3 >> diff(x,2) ans = 0 -4 4 Różniczkowanie. Funkcja „diff” f ' ( x) lim x f (x 0 x) x f ( x) diff(y)./diff(x) – aproksymacja różniczkowania Przykład >> x=[0:0.1:2*pi]; >> funkcja=sin(x); >> pochodna=diff(funkcja)./diff(x); >> plot(x, funkcja, x(2:end),pochodna,':') >> legend(' funkcja ', ' pochodna '); axis equal ans = 0 -4 3 3 Operacje symboliczne. Symbolic Math Toolbox Toolbox symboliczny pochodzi od programu MuPAD – komercyjnego programu algebry komputerowej (CAS) opracowanego przez grupę badawczą MuPAD z Uniwersytetu w Paderborn pod kierunkiem profesora Benno Fuchssteiner we współpracy z SciFace Software GmbH. Składnia MuPAD jest wzorowana na Pascalu i jest podobna do tej w pakiecie Maple. Różnica pomiędzy tymi programami polega na tym, że MuPAD umożliwia programowanie obiektowe. Różniczkowanie symboliczne >> syms x >> f = sin(5*x) f= sin(5*x) >> diff(f) ans = 5*cos(5*x) Różniczkowanie symboliczne – pochodne cząstkowe >> syms s t >> f = sin(s*t) >> diff(f,t) ans = cos(s*t)*s Wybrane operacje symboliczne Całkowanie: Suma szeregu: R = int(S) r = symsum(s) R = int(S,v) r = symsum(s,v) Obliczanie granicy: Rozwiązywanie równań limit(F,x,a) g = solve(eq,var) limit(F,x,a,'right') F-wyrażenie, x-zmienna, a- granica Przykłady. Całkowanie >> syms x y n; >> f = x^n + y^n; >> int(f, y) >> syms x y n; >> f = x^n + y^n; >> int(f, n)