quad sym

Transkrypt

quad sym
Laboratorium 7
Zad. 1
Całkowanie w Matlabie. Zapoznać i wypróbować komendy:
Przekazywanie funkcji:
sqr = @(x) x.^2
a = sqr(5)
help quad
%-------------------%
function y = myfun(x)
y = 1./(x.^3-2*x-5);
%-------------------%
Q = quad(@myfun,0,2)
myfun = @(x)1./(x.^3-2*x-5);
Q = quad(myfun,0,2);
Q = quad(@(x)1./(x.^3-2*x-5),0,2);
%-------------------%
function wynik = oblicz(x)
wynik = x.*log(x);
%-------------------%
quad(@oblicz,1,5)
quad(@oblicz,1,5,10^-6)
Analogicznie działa funkcja:
quadl
help quadl
help trapz
x = linspace(1,5,5)
f = x.*log(x);
trapz(x,f)
x = linspace(1,5,15)
trapz(x,f)
X = 0:pi/100:pi;
Y = sin(X);
Z = trapz(X,Y)
help integral
fun = @(x) exp(-x.^2).*log(x).^2;
q = integral(fun,0,Inf)
fun = @(x,c) 1./(x.^3-2*x-c);
q = integral(@(x)fun(x,5),0,2)
Całki podwójne:
help dblquad
%-------------------%
function z = integrnd(x, y)
z = y*sin(x)+x*cos(y);
%-------------------%
Q = dblquad(@integrnd,pi,2*pi,0,pi);
F = @(x,y)y*sin(x)+x*cos(y);
Q = dblquad(F,pi,2*pi,0,pi);
%-------------------%
function out=fxy(x,y)
out=y^2*exp(x)+x*cos(y);
%-------------------%
dblquad(@fxy,0,1,4,6)
fxy = @(x,y) y^2*exp(x)+x*cos(y);
dblquad(@fxy,0,1,4,6)
Zad. 2
Różniczkowanie w Matlabie. Zapoznać i wypróbować komendy:
help diff
x = [1, 3, 5, 3, 4, 8]
diff(x)
diff(x,2)
X=[3,7,5;0,9,2]
diff(X,1,1)
diff(X,1,2)
Aproksymacja pochodnej (f(x+h)-f(x))/h gdy h bliskie 0:
h1=0.3
x=[0:h1:2*pi];
funkcja=sin(x);
pochodna=diff(funkcja)./diff(x);
subplot(2,1,1)
plot(x, funkcja, x(2:end),pochodna,':')
legend(' funkcja ', [' pochodna dla h=',num2str(h1)]); axis equal
h2=0.1
x=[0:h2:2*pi];
funkcja=sin(x);
pochodna=diff(funkcja)./diff(x);
subplot(2,1,2)
plot(x, funkcja, x(2:end),pochodna,':')
legend(' funkcja ', [' pochodna dla h=',num2str(h2)]); axis equal
Zad. 3
Operacje symboliczne w Matlabie. Zapoznać i wypróbować komendy:
help sym
A='string'
S=sym(A)
A=1:5
S=sym(A)
A=[1,2;3,4]
S=sym(A)
A=[1.2,3.4]
S=sym(A)
S=sym(a,'f')
S=sym(a,'d')
A=@(x) x.^2
S=sym(A)
x=sym('x')
x=sym('x','positive')
assumptions
x=sym('x','real')
x=sym('x','clear')
assumptions
B=sym('B',[5,2])
B=sym('B',5)
B=sym('B',[5,1])
B=sym(B,'positive')
B=sym(B,'real')
assumptions
B=sym(B,'clear')
r = sym(1/3)
f = sym(1/3, 'f')
d = sym(1/3, 'd')
e = sym(1/3, 'e')
B = sym('x_%d_%d', [4 4])
B(4,2)
B(4,[2,3])
A = diag(sym('A',[1 4]))
det(A)
trace(A)
A = sym('A%d%d', [2 2]);
A = sym(A, 'positive')
solve(A(1, 1)^2 - 1, A(1, 1))
A = sym(A, 'clear');
solve(A(1, 1)^2 - 1, A(1, 1))
x = sym('x');
y = sym('y');
f = sym('f(x, y)')
f=x+y
phi = sym('(1 + sqrt(5))/2')
f = phi^2 - phi - 1
f = sym('a*x^2 + b*x + c')
syms a b c x
f = a*x^2 + b*x + c
f = x^3*y^3
diff(f,x)
diff(f,y,2)
syms a b c
A = [a b c; c a b; b c a]
det(A)
triu(A)
sum(A(1,:))
syms a b n t x
f = x^n;
g = sin(a*t + b);
symvar(f)
symvar(g)
syms s t
f = s + t;
symvar(f, 1)
syms x
f = sin(5*x)
diff(f)
syms s t
f = sin(s*t)
diff(f,t)
syms x
diff(sin(x^2))
syms t
diff(t^6,6)
syms x t
diff(sin(x*t^2), t)
syms x
int(-2*x/(1 + x^2)^2)
syms x z
int(x/(1 + z^2), z)
syms x
int(x*log(1 + x), 0, 1)
syms x t
int(2*x, sin(t), 1)
syms x t z
alpha = sym('alpha');
int([exp(t), exp(alpha*t)])
syms x t
int(x^t, x)
int(x^t, x, 'IgnoreSpecialCases', true)
syms x
F = sin(sinh(x));
int(F, x)
int(taylor(F, x, 'ExpansionPoint', 0, 'Order', 10), x)
syms x
f = x^7;
a = 0;
b = 1;
int(f, a, b)
syms x
f = exp(-x^2);
a = 0;
b = inf;
int(f, a, b)
syms x h
limit(sin(x)/x)
limit((sin(x + h) - sin(x))/h, h, 0)
syms x
limit(1/x, x, 0, 'right')
limit(1/x, x, 0, 'left')
syms k n
symsum(k^2, 0, 10)
symsum(1/k^2,1,Inf)
symsum(x^k/sym('k!'), k, 0,inf)
symsum(k,0,n-1)
symsum(k,0,n)
syms a b c x;
solve('a*x^2 + b*x + c','b')
solve('a*x^2 + b*x + c')
syms x y
S = solve('x + y = 1','x - 11*y = 5')
S.x
S.y
syms x
solve(x^2 - 1)
solve(x^2 + 4*x + 1 == 0)
solve(x^4 + 1 == 2*x^2 - 1)
syms a b c x
solve(a*x^2 + b*x + c == 0, a)
solve(a*x^2 + b*x + c == 0, b)
syms a b
[b, a] = solve(a + b == 1, 2*a - b == 4, b, a)
syms x
solve(x^5 == 3125, x)
solve(x^5 == 3125, x, 'Real', true)
rho = sym('(1 + sqrt(5))/2');
f = rho^2 - rho – 1
simplify(f)
syms x a b c
simplify(sin(x)^2 + cos(x)^2)
simplify(exp(c*log(sqrt(a+b))))
syms x
simplify([(x^2 + 5*x + 6)/(x + 2), sin(x)*sin(2*x) + cos(x)*cos(2*x);
(exp(-x*i)*i)/2 - (exp(x*i)*i)/2, sqrt(16)])
syms x;
f = 2*x^2 - 3*x + 1;
subs(f, 1/3)
syms a b
subs(a + b, a, 4)
subs(a*b^2, a*b, 5)
syms a b
subs(cos(a) + sin(b), [a, b], [sym('alpha'), 2])
syms x y a
f=x+y
f = subs(f, x, a)
Zad. 4 EKSTREMALNIE WAŻNE!!!
Przekazywanie funkcji jako argumentu funkcji. Wypróbować komendy:
help ezplot
ezplot('x^2 - 2*x + 1')
%-----------------------%
function z = myfun(x,y,k)
z = x.^k - y.^k - 1;
%-----------------------%
ezplot(@(x,y)myfun(x,y,2))
ezplot(‘myfun’)
ezplot(‘myfun(x,y,k)’)
ezplot(exp) BŁĄD, zamiast tego:
funkcja = 'exp'; ezplot(funkcja)
DWIE NAJWAŻNIEJSZE KOMENDY:
help feval
help fcnchk
Zad.5 Ekstremalnie ważny przykład obrazujący funkcje feval i fcnchk!!!
Napisać program Pochodna(f,a,b,h), który dla funkcji f podanej jako string (wzór funkcji w ‘’)
narysuje funkcję f oraz jej iloraz różnicowy f(x+h)-f(x)/h (czyli aproksymację pochdnej) na
zadanym odcinku [a,b] i dla zadanej dokładności h.
function Pochodna(f,a,b,h)
f2=fcnchk(f); %wzór funkcji f podanej jako string
%zamieniamy na specjalną klasę obiektów tzw. inline
%-można myśleć że są to wskaźniki do funkcji.
x=linspace(a,b,200); %tworzymy wektor argumentów na zadanym przedziale.
y=feval(f2,x); %każemy Matlabowi wyliczyć wartości funkcji f dla zadanych
argumentów z [a,b].
p=(feval(f2,x+h)-feval(f2,x))/h; %analogicznie liczymy iloraz różnicowy.
plot(x,y,'b',x,p,'r-','LineWidth',2);
legend('Funkcja','Pochodna');
title(f);
Wywołanie np. Pochodna('(x.^2-17.*x)./(x.^2+1)',-10,10,0.01)
Zad. 6 Ekstremalnie ważny przykład obrazujący funkcję subs!!!
Napisać program Pochodna2(f,a,b), który dla fukcji f podanej jako string (wzór funkcji w ‘’)
narysuje funkcję f oraz jej prawdziwą pochodną wyliczoną symbolicznie na zadanym odcinku
[a,b]. Funkcja ma też zwracać symboliczny wzór pochodnej.
function y=Pochodna2(f,a,b)
y=diff(sym(f));% wzor funkcji f najpierw zamieniamy na wzor symboliczny
%i liczymy pochodna symboliczna.
x=linspace(a,b,200);
fun=subs(sym(f),x);% tworzymy wektor wartości funkcji f dla zadanych argumentów z
[a,b].
y2=subs(y,x); %analogicznie dla pochodnej.
plot(x,fun,'b',x,y2,'r')
legend('Funkcja','Pochodna');
title(f);
Wywołanie np. Pochodna2('(x^2-17*x)/(x^2+1)',-10,10) (WZÓR BEZ KROPEK!!!)
Zadanie domowe (tydzień na oddanie)
Zad. 1
Napisać program Trojmian(a,b,c), który dla podanych współczynników a, b, c wyliczy
rozwiązania równania ax^2+bx+c=0 (również nierzeczywiste!). Program ma również
narysować odpowiadającą parabolę i zaznaczyć miejsca zerowe (o ile istnieją).
Zad. 2
Napisać program Pierwotna(f,a,b), który dla fukcji f podanej jako string (wzór funkcji w ‘’)
narysuje funkcję f oraz jej prawdziwą pierwotną wyliczoną symbolicznie na zadanym odcinku
[a,b]. Funkcja ma też zwracać symboliczny wzór pierwotnej.

Podobne dokumenty