Ćw.4

Transkrypt

Ćw.4
Ć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
s=
0
1
2
3
4
5
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:
s1i = fs(ti) dla i=1:n
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
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:
4(5) = 67 5 8 + a: 5 8;1 + 6 5 8;2 + ⋯ + 6= 5 8;= + ⋯ +68; 5 + 68;: 5 + 68
W wersji skróconej zapis wielomianu można przedstawić w następującej postaci:
8
4(5) = > 6= 5 8;=
=?0
W języku Matlab indeksy macierzy zaczynają się od liczby 1 , a nie od liczby 0. Dlatego też, dla potrzeb programowania w Matlabie musimy zmienić indeksy we współczynnikach wielomianu:
4(5) = 61 5 + a 2 5
8
8;1
+ 63 5
8;2
+ ⋯ + 6= 5
8@1;=
+ ⋯ + 68 5 + 68@1 = > 6= 5 8@1;=
Ćwiczenie
Zapisać współczynniki wielomianu w Matlab-ie:
w1(x) =2x2–6x+3
w2(x)=x4+2x2–6x+3
8@1
=?1
w macierzy a1
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 nawiasach 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,
solve x)
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
y = solve(a*x^2+b*x+c)
solve
a=3; b=4; c=1;
w = subs(y)
subs
y=
% definicja zmiennych symbolicznych
% rozwiązanie równania względem zmiennej x
% Przypisanie wartości liczbowych dla a b c
% Obliczenie wartości liczbowej 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:
6
L
N
M
P
O
macierzowo i elementowo.
2. Wyprowadzić symboliczne wzory na obliczanie wyznaczników macierzy:
6
L
N
M
P
O
6
O
Q
T
M
R
ℎ
N
SW
V
3. Znaleźć 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(x^2)
diff
p=
2*x
:
XZ
Przykład 2. Obliczenie pochodnej funkcji f (x, y, z )= xyz X + Y [ według każdej zmiennej
(pochodne cząstkowe):
f=(x*y*z)^x+(1/(x*y))^2
p=diff
diff(f)
diff
p=
(x*y*z)^x*(log(x*y*z)+1)-2/x^3/y^2
p=diff
diff(f,x)
diff
p=
(x*y*z)^x*(log(x*y*z)+1)-2/x^3/y^2
p=diff
diff(f,y)
diff
p=
(x*y*z)^x*x/y-2/x^2/y^3
p=diff
diff(f,z)
diff
p=
(x*y*z)^x*x/z
Przykład 3. Obliczenie pochodnej
p=diff
diff(f,x,2)
diff
\ ]
^_
:
funkcji f (x, y, z )= xyz X + YXZ[ :
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
Wykresy funkcji symbolicznej i jej pochodnej można utworzyć wykorzystując funkcję ezplot, jak w w poniższym przykładzie:
syms x
f=x^2
p=diff(f)
ezplot(f,[-10,
10])
ezplot
hold on
ezplot(p,[-10,
10])
ezplot
Całkowanie funkcji - funkcja int( )
W Matlabie można obliczać całki za pomocą funkcji int. Jej argumentem jest funkcja symboliczna, oraz opcjonalnie 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
f1=int
int(a+x)
int
f2 =int
int(a+x,
a)
int
f 1=
a*x+1/2*x^2
f2 =
1/2*a^2+a*x
a
`: 5 O5
Obliczenie całki oznaczonej:
syms x
c= int(x^2,1,3)
int
c=
26/3
Zadania
1. Znaleźć wzory ogólne na pochodne poniższych funkcji:
2
f(x)= tg x
3
f(x)= 1–cos x
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
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
Obliczyć pole powierzchni tej działki.
-0.5
0
0.5
1

Podobne dokumenty