Ćwiczenie 4. Matlab - funkcje, wielomiany, obliczenia symboliczne
Obliczenia z wykorzystaniem tzw. funkcji anonimowej
Składnia funkcji anonimowej:
nazwa_funkcji=@(lista_argumentów)(wyrażenie)
gdzie:
- wyrażenie jest ciałem funkcji zawierającym pojedynczy wzór funkcji;
- lista_argumentów występujących we wzorze funkcji, oddzielanych przecinkami
Zadanie: Obliczyć wartości drogi dla podanego wzoru na drogę: s= dla a=4 w przedziale dla t=[0, 5]
Generujemy listę argumentów w macierzy jednowierszowej t od 0 do 5 z krokiem 0.1.
t=[0:0.1:5]
Dla wzoru s=at2/2 tworzymy funkcję anonimową (Uwaga: operator potęgowania na elementach macierzy .^)
f = @(t)(a*t.^2/2)
Wywołujemy funkcję anonimową:
s=f(t)
Metoda obliczeń w Matlab-ie:
t=[0:0.1:5]
a=4
f = @(t)(a*t.^2/2);
s=f(t)
plot(t,s)
Wyniki obliczeń:
t =
0 1 2 3 4 5
s =
0 2 8 18 32 50
Obliczenia przy pomocy funkcji zdefiniowanej w osobnym m-pliku
Najpierw tworzymy m-plik funkcyjny o nazwie fs.m:
% obliczanie wartości funkcji fs(t,a)=2*t^2
function y = fs(t, a) %argumenty funkcji:t oraz a
y=a*t.^2/2;
Generujemy macierz jednowierszową argumentów t:
t=[0:0.1:5]
Obliczamy ilość elementów macierzy t przy pomocy funkcji length
n=length(t)
Obliczamy wartości:
s1 = fs(t ) dla i=1:n
i i
Metoda obliczeń w Matlab-ie:
% Program oblicza tablicę wartości drogi s dla tablicy argumentów t
t=[0:0.5:5];
n=length(t);
for i=1:n
s (i)=fs
fs(t(i), a);
fs
fs
end
plot(t,s), grid %utworzenie wykresu s(t)
Wyniki obliczeń: w macierzy t zadane są argumenty czasu t, zaś w macierzy s1 obliczone są wartości drogi dla
każdej chwili t. Wyniki są wyświetlane w postaci wykresu.
Wielomiany w Matlabie
W matematyce często wielomian n-tego stopnia zmiennej x zapisujemy w postaci:
1 2
( ) = + a + + ï" + + ï" + + +
W wersji skróconej zapis wielomianu można przedstawić w następującej postaci:
( ) =
0
W języku Matlab indeksy macierzy zaczynają się od liczby 1 , a nie od liczby 0. Dlatego też, dla potrzeb pro-
gramowania w Matlabie musimy zmienić indeksy we współczynnikach wielomianu:
1
1 2 1 1
( ) = + a2 + + ï" + + ï" + + =
1 3 1
1
Ćwiczenie
Zapisać współczynniki wielomianu w Matlab-ie:
w1(x) =2x2 6x+3 w macierzy a1
w2(x)=x4+2x2 6x+3 w macierzy a2
RozwiÄ…zanie:
a1=[2 -6 3]
a2=[1 0 2 -6 3]
Obliczanie pierwiastków wielomianu
Do obliczania pierwiastków wielomianu służy poznana funkcja roots o następującej składni:
roots(a)
gdzie a jest macierzą współczynników wielomianu.
Ćwiczenie
Rozwiązać równanie:
x3 3x2+2=0
Sposób 1:
Podstawiamy do wektora a współczynniki wielomianu:
a=[1 -3 0 2]
Wywołujemy instrukcję roots ze współczynnikami w wektorze a:
x=roots(a)
Metoda obliczeń w Matlab-ie:
a=[1 3 0 2];
x=roots(a)
Sposób 2:
Podstawiamy współczynniki wielomianu od razu do wywołania funkcji roots umieszczając współczynniki w na-
wiasach kwadratowych
x=roots([1 3 0 2])
Metoda obliczeń w Matlab-ie:
x=roots([1 -3 0 2])
Zadania
Obliczyć pierwiastki wielomianów:
a) 3x2+4x-5=0
b) x4+3x2 2x+4=0
Sprawdzić rozwiązania na wykresach.
Obliczenia symboliczne dodatek Symbolic Toolbox
Pakiet Matlab może posiadać zainstalowany dodatek Symbolic Toolbox, umożliwiający obliczenia symboliczne.
Wykorzystanie obliczeń symbolicznych wymaga zadeklarowania abstrakcyjnych zmiennych nie posiadających
wartości. Służy do tego polecenie o postaci:
syms arg1 arg2 arg 3 itd
Symboliczne rozwiązywanie równań funkcja solve()
Przykład:
syms x a
f=a-x^2
r=solve
solve(f, x)
solve
solve
f =
a-x^2
r=
a^(1/2)
-a^(1/2)
Symboliczne operacje macierzowe
syms A a b c d e f g h
A=[a b; c d]
B=[e f ; g h]
il_m=A*B
il_e=A.*B
A =
[ a, b]
[ c, d]
B =
[ e, f]
[ g, h]
il_m =
[ a*e+b*g, a*f+b*h]
[ c*e+d*g, c*f+d*h]
il_e =
[ a*e, b*f]
[ c*g, d*h]
Obliczenia na wyrażeniach symbolicznych - funkcja subs( )
Gdy znamy wartości liczbowe poszczególnych zmiennych wynik liczbowy obliczeń symbolicznych uzyskujemy
wykorzystujÄ…c funkcjÄ™ subs .
Przykład:
syms a b c x % definicja zmiennych symbolicznych
syms
syms
syms
y = solve(a*x^2+b*x+c) % rozwiązanie równania względem zmiennej x
solve
solve
solve
a=3; b=4; c=1; % Przypisanie wartości liczbowych dla a b c
a b c
a b c
a b c
w = subs(y) % Obliczenie wartości liczbowej y
subs
subs
subs
y =
-1/2*(b-(b^2-4*a*c)^(1/2))/a
-1/2*(b+(b^2-4*a*c)^(1/2))/a
w =
-0.3333
-1.0000
Zadania
1. Wyjaśnić na obliczeniach symbolicznych podnoszenie do kwadratu macierzy kwadratowej:
macierzowo i elementowo.
2. Wyprowadzić symboliczne wzory na obliczanie wyznaczników macierzy:
!
3. Znalezć symboliczne wyrażenia dla rozwiązań równania 3-go stopnia:
ax3+bx2+cx+d=0
Następnie obliczyć pierwiastki równania, wykorzystując poznaną wcześniej funkcję roots, wstawić jeden z
pierwiastków do rozwiązań symbolicznych, sprawdzając rozwiązanie funkcją subs.
Obliczanie pochodnych funkcji - funkcja diff( )
Dla obliczenia pochodnych funkcji służy funkcja diff. Jej parametrami są: funkcja, której pochodna będzie
liczona, oraz (opcjonalnie) zmienna, względem której pochodna jest liczona, także rząd pochodnej.
Przykład 1. Obliczenie pochodnej funkcji f(x)=x2
syms x
p=diff
p=diff
p=diff(x^2)
p=diff
p =
2*x
Przykład 2. Obliczenie pochodnej funkcji f (x, y, z )= xyz + według każdej zmiennej
(pochodne czÄ…stkowe):
f=(x*y*z)^x+(1/(x*y))^2
p=diff
diff(f)
diff
diff
p =
(x*y*z)^x*(log(x*y*z)+1)-2/x^3/y^2
p=diff
diff(f,x)
diff
diff
p =
(x*y*z)^x*(log(x*y*z)+1)-2/x^3/y^2
p=diff
diff(f,y)
diff
diff
p =
(x*y*z)^x*x/y-2/x^2/y^3
p=diff
diff(f,z)
diff
diff
p =
(x*y*z)^x*x/z
Przykład 3. Obliczenie pochodnej funkcji f (x, y, z )= xyz + :
p=diff
diff(f,x,2)
diff
diff
p =
(x*y*z)^x*(log(x*y*z)+1)^2+(x*y*z)^x/x+6/x^4/y^2
albo
p=diff(diff
diff(diff(f,x))
diff(diff
diff(diff
Wykresy funkcji symbolicznej i jej pochodnej można utworzyć wykorzystując funkcję ezplot, jak w w poniż-
szym przykładzie:
syms x
syms
syms
syms
f=x^2
p=diff(f)
ezplot(f,[-10, 10])
ezplot
ezplot
ezplot
hold on
ezplot(p,[-10, 10])
ezplot
ezplot
ezplot
Całkowanie funkcji - funkcja int( )
W Matlabie można obliczać całki za pomocą funkcji int. Jej argumentem jest funkcja symboliczna, oraz opcjo-
nalnie zmienna całkowania oraz granice całkowania (dla całek oznaczonych). Interpretacja całki oznaczonej to
pole powierzchni pomiędzy krzywą funkcji w danym przedziale a osią x.
Przykłady:
Obliczenie całki nieoznaczonej funkcji f(a,b)=a+b
syms a x
syms
syms
syms
f1=int
int(a+x)
int
int
f2 =int
int(a+x, a)
int
int
f 1=
a*x+1/2*x^2
f2 =
1/2*a^2+a*x
Obliczenie całki oznaczonej:
syms x
c= int
int(x^2,1,3)
int
int
c =
26/3
Zadania
1. Znalezć wzory ogólne na pochodne poniższych funkcji:
f(x)= tg2x f(x)= 1 cos3x f(x)=
"
Wykonać wykresy tych funkcji i ich pochodnych korzystając z funkcji fplot lub ezplot. Zanalizować przy
pomocy wykresów fakt, że pochodna odzwierciedla tangens kąta nachylenia stycznej.
2. Bazując na wiedzy z matematyki wyjaśnić działanie skryptu badającego ekstrema funkcji:
clc,clear
syms x
syms
syms
syms
f=x^4-3*x+5
ezplot(f,[-3, 3])
df=diff(f,x);
ext=double(solve(df, x));
d2f=diff(f,x,2);
for k=1:length(ext)
x=double(ext(k));
inf=subs(d2f);
if imag(inf)==0 %wartość nie jest zespolona
if inf<0
fprintf('w punkcie %f jest maksimum\n', x)
else
fprintf('w punkcie %f jest minimum\n', x)
end
end
end;
Uwagi: funkcja imag(x) wyznacza część urojoną liczby,
funkcja double(x) zamienia wartość typu symbolicznego na rzeczywistą.
3. Obliczyć symboliczny wzór na całkę nieoznaczoną funkcji: f(x)=3sin2x.
4. Obliczyć całkę oznaczoną funkcji f(x)=x2+1 w przedziale całkowania od -3 do 3.
5. Posiadamy działkę ograniczoną dwiema parabolami jak na rysunku:
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
-1 -0.5 0 0.5 1
Obliczyć pole powierzchni tej działki.
Wyszukiwarka
Podobne podstrony:
C16 2005 cw04se cw04LF E CW04Cw04 Excel2003 11331 PIF cw04 mwaveELEKTRONIKA cw04cw04?LF E CW04Cw04 Excel2007 1C16 2005 cw04instrukcja cw04cw04 vba 13izs cw04cw04 pomiar temperatury p ncw04cw04więcej podobnych podstron