Escolar Documentos
Profissional Documentos
Cultura Documentos
INTRODUO
O engenheiro modela o sistema em estudo para compreender melhor a
realidade. Modela e faz simulaes para evitar erros e tentativas,
economizando na construo e tambm simula para melhorar a preciso do
sistema ou equipamento planejado.
Nesse contexto, para o estudante de engenharia que j cursou o bsico,
tem conhecimento adequado de clculo para avaliar modelos discretos e
contnuos. As solues das equaes com tcnicas analticas e numricas
esto disponveis em computador para analisar a equao, a soluo, as
condies iniciais e de contorno, fazer experimentos rpidos para atender
as questes que surgem. As solues com as condies propostas podem
ser
visualizadas em grficos 2D ou 3D que ajudam bastante na
compreenso da realidade simulada. A anlise de dados reais e a avaliao
da soluo tambm esto disponveis em tcnicas estatsticas no
computador para complementar as concluses. Com o estudo das solues
se prope uma interao com os problemas mais tpicos dos sistemas de
engenharia como a estabilidade, o estado estacionrio a vibrao, o stress.
Essa metodologia requer uma atualizao das tcnicas de soluo de
equaes diferenciais j estudadas, que devem ser realizada tambm
utilizando os recursos
computacionais e tem um
preo: aprender
suficientemente a utilizar o computador com o software adotado o Matlab. O
preo a pagar ser resgatado com juros, com certeza,
Matlab uma
ferramenta adotada universalmente para o trabalho do engenheiro e do
cientista.
Objetivos de treinar em MATLAB
SUMRIO
I. Introduo
2. Computao com Matlab
2.1 Apresentao Tipo Manual
2
2.2 Apresentao Tcnica
10
2.3 Sistemas de Equaes lineares
13
2.4Estatstica
18
2.5 Nmeros Randmicos e Complexos
20
2.6 Clculo
25
o Polinmios
o Grficos de funes
o Interpolao
o Derivadas e integrais
o Equaes diferenciais
3. Erros de Computao
34
Fortran
REAL D(4), Y(4)
DO 100 I = 1,4
Y(I)=SIN(D(I))
100 CONTINUE
2
v=
[]
2
1.3
2
1
Desta forma, escrever uma matriz similar ao que vimos com vetores,
exemplo:
[ ]
1 2 42
8 7 2 0
15 9
A=
-6
18
2 -3
Multiplicao deve obedecer a lgebra linear em relao as
dimenses das matrizes
4
ex.: A(3x2)*B(2x3)
>>A= [ 2 5; -3 6; 1 9]; B=[4 5 6; 8 1 2];
>> A*B
ans =
48 15
22
36 -9
-6
76 14
24
Operaes Pontuadas
Sejam A e B duas matrizes de mesmas dimenses
A.*B
52 29 62
89 48 104
64 38 79
2. A.^2
4 9
1 36
81 1
= A.*A
25
81
25
>> D= [1 2 3 4]
>>Y= sin(D)
Nesse exemplo observamos que, foi criado um vetor D e foi chamada a
funo seno e o vetor D foi passado para a funo que retorna os valores
em Y. Podemos chamar outra funo plot(D, Y) passar para ela os valores de
D e Y, e a funo plot via fazer o grfico. O qual no ser muito elegante,
podemos ver porque, colocando plot(D,Y, o), vemos s os quatro pontos
iniciados por D = [ 1 2 3 4]. Podemos gerar um vetor com mais pontos, por
exemplo, D = 0:pi/20:2*pi e novamente chamar Y e depois plot, do mesmo
modo. Agora reconhecemos a funo seno com bastantes pontos e no
intervalo adequado entre zero e 2. Observamos que podemos criar vetores
de mais de um modo e chamar as mesmas funes. Matlab tem uma
coleo incrvel de funo que podem ser invocadas da tela de trabalho ou
em arquivos.
Programa 1
D=[1 2 3 4];
Y=sin(D);
plot(D,Y);
plot(D,y,'o')
Agora, reescreva o vetor D:
D=0:pi/20:2*pi;
Y=sin(D);
plot(D,Y,'o')
Com o ponto e vrgula o dado no vem para a tela, s aquele que for pedido.
Podemos saber a dimenso do vetor com size(D)e o comprimento length(D)
>>size(D)
ans=
1 41
>>length(D)
ans=
41
Cada funo tem sua sintaxe, conforme observamos e o help ajuda deve ser
consultado. Veremos adiante que podemos escrever os nossos programas
para funes e para invocar estas funes, e tambm veremos exemplos do
help.
Os vetores podem ser escritos x =[ 4.5 7.6 9.4]; e depois chamar x
=4.5000 7.6000 9.4000. Se escrevemos, x =[ 4.5; 7.6; 9.4]; com x =
4.5000
7.6000
9.4000
Os dois tm length3, mas, o primeiro tem size 1 3, e o segundo size 3 1,
como vetor linha e vetor coluna. J vimos que criamos o vetor D com
passos de pi/20, de 0 at 2, se escrevemos x = -2:2:2, vamos comear
ans =
34.0000
8.0000
0.0000
-8.0000
>>svd(A)
ans =
34.0000
17.8885
4.4721
0.0000
%Voc pode ver o quadro Melancolia e tambm a matriz que nele %se
encontra ampliada, rodando o programa:
Programa 2
load durer
%whos
image(X)
colormap(map)
axis image
image(X)
8
f ( x )=
x esin (x )
2
(1+ x )
no intervalo de 0 a
10;
podemos criar um arquivo function chamado func para a funo f(x)
Programa 4
function y = func(x); % entrada o valor de x
y = x*exp(-sin(x))/(1+x^2); % % sada a funo f(x)
Programao
O MATLAB tambm aceita argumentos lgicos e entrada de dados. Os loops
tambm fazem parte do ambiente MATLAB, porm para efeito prtico,
veremos que em muitos casos mais simples vetorizar o programa do que
entrar em um loop ou lao.
Exemplo de loop que pode ser vetorizado:
n = 21;
x = linspace(0,1,n);
y = zeros(1,n)
for k=1:n
y(k)= sin(2*pi*x(k));
end
Esse mesmo resultado pode ser obtido s com vetores
n = 21;
x = linspace(0,1,n);
10
y = sin(2*pi*x);
Agora, vamos ver um loop com comando lgico
Programa 5
%calcula os nmeros de Fibonacci
f=[1 1]; n=1;
while f(n)+f(n+1)<80
% comando while, com argumento lgico
f(n+2)= f(n) + f(n+1);
n=n+1;
end
f
plot(f); % grfico do crescimento da funo
Outros laos tambm podem ser criados com: for; if, else, switch e case
1 Byte = 8 bits
Quilobyte (kB)
1kByte = 1024 Bytes (210) Bytes.
1 024 Byte = 8 192 Bits
Megabyte (MB)
1 024 kB
1 048 576 (220)Bytes
8 388 608 Bits
Aritmtica de ponto flutuante
Aritmtica de ponto flutuante envolve o conjunto de nmeros finitos com
preciso finita, que leva a arredondamento, underflow e overflow. O nvel
de arredondamento eps chamado as vezes de floating-point zero, mas, o
menor nmero no Matlab o realmin. Menor do que ele chamado
underflow. E o numero maior dado pelo realmax e tentativa de obter maior
leva a overflow, e o resultado apresentado como Inf. Escrevendo no
Matlab se observa:
eps
Realmin
Realmax
Os nmeros so apresentados, por exemplo, teclando (pi) em format short
com 5 algarismos por arredondamento e em format long com 16 algarismos.
A funo vpa especifica o nmero de algarismos assim:
vpa(pi, 25 )
=3.141592653589793238462643
A seqncia de arredondamento ocorre com um simples nmero
como
t = 0.1
Que no exato porque 0.1 expresso com a frao decimal 1/10
numa seria infinita
1/10= 1/2^4+ 1/2^5+ 1/2^6 + 1/2^7 + 1/2^8 + 1/2^9 + 1/2^10 +
1/2^11 +
Depois do primeiro termo a seqncia de coeficientes: 1,0,0,1 se repete
muitas vezes at o valor definido pela aritmtica do ponto flutuante.
Se pelo menos um dos elementos da matriz no inteiro exato, existem
vrias possibilidades de formatar a sada. O formato "default", chamado de
formato short, mostra aproximadamente 5 dgitos significativos ou usam
notao cientfica. Por exemplo, a expresso,
>> x = [4/3 1.2345e-6]
mostrada , para cada formato usado, da seguinte maneira:
12
format short
format short e
Format long
Format long e
Format hex
Format rat
Format bank
format +
1.3333 0.0000
1.3333e+000 1.2345e-006
1.33333333333333 0.000000123450000
1.333333333333333e+000 1.234500000000000e-006
3f5555555555555 3eb4b6231abfd271
4/3 1/810045
1.33 0.00
++
l.0e+2
*
0
1.3333 0.0000
13
(1)
Podendo-se observar que (ATA)-1 pode ser invertida. O Matlab aplica o MMQ
com diversas funes, por exemplo, b = A\y; que vai calcular a expresso
(1).
Temos solues diversas para os diversos sistemas com o mesmo algoritmo,
cujas solues dependem de A. Para avaliar a soluo estimamos o erro
dado por:
e = Ab y;
(2)
e2
14
(3)
15
16
1
0
0
S=
3
0
0
0
2
0
V=
0
-1
1
0
0
0
1
17
inteiros entre 0 e 255 (para 256 tons de cinza). Tipicamente, tais matrizes
podem ser bem aproximadas por matrizes de posto restrito.
Um exemplo, iremos mostrar por meio dos valores singulares de uma matriz
de imagem, uma fotografia dos lideres dos clculos com matrizes, tomada
na Conferncia de 1964 Gatlinburg em lgebra numrica computacional: da
esquerda para a direita, temos Jim Wilkinson, Wallace Givens, George
Forsythe, Alston Householder, Peter Henrici, e Fritz Bauer
Programa 9
load gatlin %carrega arquivo de imagem, do MATLAB
[U,S,V] = svd(X); % armazena a imagem na variavel "X"
figure(1),clf % plota os valores singulares
semilogy(diag(S),'b.','markersize',20)% comando do grfico
set(gca,'fontsize',16)
title('singular values of the "gatlin" imagematrix')
xlabel('k'), ylabel('\sigma_k')
figure(2),clf % plota a imagem original
image(X), colormap(map) % comando para exibir matriz de imagem
axis equal, axis of
title('trueimage (rank 480)','fontsize',16)
figure(3),clf %
k = 100; %%% plota o rank na aproximao
Xk = U(:,1:k)*S(1:k,1:k)*V(:,1:k)';
image(Xk), colormap(map)
axis equal, axis of
title(sprintf('bestrank-%d approximation',k),'fontsize',16)
O posto reduzido, voc pode testar mudando o rank, observe como pode
otimizar a qualidade da figura, .
equao Ax = x.
Alm da equao Ab = y, vamos estudar outra equao fundamental, Ax =
x. A matriz dada, uma matriz A (n, n),e x, um autovetor um vetor no
nulo tal que para algum escalar (real ou complexo) temos:
A*x= *x
Onde o escalar chamado de autovalor
det(A - I**x = 0
Podemos calcular:
A = [1 2 ; 2 1 ]
[V, D] = eig(A)
V=
-0.7071
0.7071
0.7071
0.7071
% autovetores
18
D=
-1
0
0
3
% autovalores
%5.3f',mean(xn),std(xn)))
Nas linhas 6 e 11 os comandos xlabel e sprintf, colocam strings no eixo x
para a mdia mean(x), a mediana median(x) e desvio padro std(xn), para x
e xn. E sprintf utiliza o formato % 5.3f e 5.3f cujo primeiro inteiro especifica
o numero total de algarismos, o segundo numero especifica quantas casas
decimais.
Rodando o programa, observe as distribuies e os valores que aparecem
nos grficos. Depois escreva uma linha 15, com mean(x), mean(xn), std(xn),
compare com os valores do grfico. Agora, para verificar a distribuio
normal escreva mais uma linha com
z = linspace(-2.9,2.9,100), (copiado da linha 9) e chame a funo de
densidade de probabilidade y = normpdf(z), depois faa o grfico. No se
esquea de escrever figure antes do grfico, e a vai observar a curva
Gaussiana.
Exemplo de aplicao em teste de hiptese. Uma indstria de peas
metlicas vende 10 caixas do produto. Variao no processo causa um
desvio padro de 1.25 kg em cada caixa cujo peso mdio de 11.5 kg. Qual
a percentagem de caixas que poderia ter menos de 10 kg. Essa questo
pode ser resolvida com o comando normspec que gera o grfico da
densidade de probabilidade normal :
1 normspec([10 inf],11.5,1.25, 'outside');
O grfico mostra a probabilidade contra o valor crtico, no caso, a
probabilidade 0.11507 de ocorrer um valor igual ou menor do que 10. O
comando requer o intervalo entre os limites inferior e superior [ inf inf], a
mdia e o desvio padro. No caso [10 inf], 11.5 1.25. Escrevendo 11.5 no
lugar de 10 na linha 1 do programa qual ser a probabilidade que o grfico
vai mostrar? Claro que 0.5. Porque se fizer o teste com a distribuio
normal padro, deveria escrever:
2 normspec([0 inf],0,1, 'outside');
E a probabilidade a mesma 0.5. E agora, qual a percentagem dos valores
com um desvio padro estarem dentro da curva? Escreva a linha:
3 normspec([-1 1],0,1, 'inside');
Vemos no grfico a rea em torno da mdia: A = 1, que representa
aproximadamente 68,2 % do total.
Faa uma consulta ao help, por exemplo: help normspec
Normal density plot between specifications
Syntax
normspec(specs)
normspec(specs,mu,sigma)
normspec(specs,mu,sigma,region)
p = normspec(...)
[p,h] = normspec(...)
20
Description
normspec(specs) plots the standard normal density, shading the portion
inside the specification limits given by the two-element vector specs. Set
specs(1) to -Inf if there is no lower limit; set specs(2) to Inf if there is no
upper limit.
normspec(specs,mu,sigma) shades the portion inside the specification limits
of a normal density with parameters mu and sigma. The defaults are mu = 0
and sigma = 1.
normspec(specs,mu,sigma,region) shades the region either 'inside' or
'outside' the specification limits. The default is 'inside'.
p = normspec(...) also returns the probability, p, of the shaded area.
[p,h] = normspec(...) also returns a handle h to the line objects.
Existem diversas possibilidades d e consulta ao help, alm um determinado
comando, como help normspec, por exemplo. Para saber sobre um
assunto como Poisson, use lookfor, escreva lookfor poisson, e vai aparecer
na tela diversos comandos que vo calcular parmetros referentes a
distribuio de Poisson, e tambm comando como o: poisolve que resolve
a equao de Poisson numa malha retangular.
Para saber sobre os operadores escreva: help \, e o que pode consultar
escreva: help help.
EXERCCIOS 2.4
1.No Porgrama 10, calcule a mdia, o desvio padro e a varincia de x =
rand(1000,1) e de xn= randn(1000,1), utilizando os comandos mean, std e
var. Estes valores esto de acordo com as suas distribuies? Consulte
normpdf e unidpdf, explique.
2. Simule uma amostra randmica com 100 valores da distribuio normal
com mdia 0.1
x = normrnd(0.1,1,1,100); % media 0.1 varincia 1, vetor(1,100)
% Teste a hiptese nula de que a amostra de uma distribuio normal com
mdia 0,
[h,p,ci] = ttest(x,0); % h = 0 no rejeita a hiptese nula, h =1 rejeita. % p
a probabilidade de
% obter um valor to extremo ou mais extremo do
que o teste estatstico,
% ci o intervalo de confiana da mdia.
h= 0
p = 0.8323
ci = -0.1650 0.2045
No se pode rejeitar a hiptese nula a um nvel de significncia 0.05, dado
pelo default do programa, a probabilidade de um valor mais extremo dada
por p, que bem maior do que 0.05, e ci o intervalo de confiana a 95 %
correspondente ao nvel de significncia 0.05, inclui a mdia 0. Agora
simule uma amostra randmica maior com 1000 valores:
y = normrnd(0.1,1,1,1000); aplique o teste a escreva as concluses.
21
22
0.0591 0.8717
1.7971 -1.4462
0.2641 -0.7012
Para gerar matriz (5 ,5) de nmeros randmicos com mdia 0,6 e varincia
0,1:
x = .6 + sqrt(0.1) * randn(5)
x=
0.8713
0.9966
0.0960
0.1443
0.7806
0.4735
0.8182
0.8579
0.8251
1.0080
0.8114
0.9766
0.2197
0.5937
0.5504
0.0927 0.7672
0.6814 0.6694
0.2659 0.3085
1.0475 -0.0864
0.3454 0.5813
0.2785
0.5469
0.9649
0.1576
23
0.1270 0.0975
0.9575
0.9706
10.1854
40.9964
42.6921
44.7478
13.3774
25.9913
20.3948
42.0027
27.2566
46.4259
17.2739
20.5521
15.8216
15.4427
44.7717
Nmeros complexos
Numero complexo uma expresso da forma
z=a+ bi
i =1 ;
Onde r o mdulo de z
a=rcos e b=rsen
(1)
z=rcos+ir sen
(2)
Onde
=arctan
b
a
24
X
n!
e =
x
n=0
(i)
i 2 2 i 3 3 i4 4
=1+i+
+
+
+
2!
3!
4!
n=0 n !
e i=
(3)
Ento
e i= 1
2 4
3 5
+ + +i( + )
2! 4!
3! 5!
(4)
(1)n 2 n
(1)n 2 n +1
cos=
e s en=
n=0 ( 2 n ) !
n=0 ( 2 n+1 ) !
Em que cada serie converge para o numero real , portanto (4) pode ser
escrita.
e i=cos+i sen
(5)
Em vista de (5), a forma polar (2), de um nmero complexo pode ser
expressa de maneira compacta:
z= r
no MATLAB so aceitos
os smbolos i e j.
>> z2= cos(pi/4)+j*sin(pi/4)
z2=
0.7071 + 0.7071i
Na forma polar, podemos usar a funo exp:
>> z3= 3*exp(-j*pi)
z3=
-3.0000 0.0000i
As operaes aritmticas com nmeros complexos so como para nmeros
reais
>> z3-z1
ans=
-4.0000 1.0000i
>> z3*z1
ans=
25
-3.0000 3.0000i
>> z1/z3
ans=
-0.3333 0.3333i
>> z1^2
ans=
0 + 2.0000i
Abaixo, algumas funes disponveis para realizar operaes com complexo
conjugado, o mdulo e angulo. Exemplo:
Exemplo plano complexo
g=randn(3);
% gera nmeros randmicos
gc=sqrt(g); % raz quadrada, gera nmeros imaginrios e reais
ZC=conj(gc);
% conjugado
ZCi=imag(ZC); % extrai a parte imaginria
ZCr=real(ZC); % extrai a parte real
R = abs(gc);
% calcula o mdulo
theta = angle(gc); % angulo
gc = R.*exp(i*theta);%reescreve a partir da equao de %Euler
plot(ZCr,ZCi,'.') % para representar graficamente podemos usar
axis([-2 2 -2 2]) % as funes compass ou plot
figure
compass(ZC)
EXERCCIOS 2.5
1.Defina um intervalo adequado para as pdf normpdf, poisspdf e para a
pdf do Qui-quadrado: chi2pdf, chame a pdf e faa o grfico. Por exemplo,
x=0:0.2:30; y = chi2pdf(x,4), plot(x,y). Observa as curvas e os parmetros
que utilizou e diga se descrevem cada uma das distribuies. Faa
experimentos com poisspdf aumentando o valor de e diga o que observa.
Faa tambm o mesmo experimento com chi2pdf.
2. Gere nmeros randmicos das mesmas distribuies do Exerccio 1, e
apresente os dados no
histograma. Por exemplo, x=-4:0.1:4;
y=rand(1000,1), hist(y,x). Para experimentos equivalente com valores
crescente da mdia como no Exerccio 1,explique.
3. Escreva um programa para demonstrar que cada serie converge para o
numero real , portanto (4) pode ser escrita
e i=cos+i sen .
4.
Com o Exemplo do plano complexo gere g = randn(15); gere nmeros
randmicos
gc = sqrt(g); % gera nmeros imaginrios e reais, faa o grfico
apresentado o diagrama de Argandt, interprete.
5. Gere nmeros randmicos com mdia e varincia especificadas. Defina
um intervalo [a b], com b > a para os nmeros randmicos gerados faa os
grficos, explique.
2.6 CLCULO
26
Polinmios.
MATLAB representa polinmios com os coeficientes ordenados de forma
decrescente pela potncia, por exemplo:
% p(x)= x3 -2x-5
representado como
p = [1 0 -2 -5]
r = roots(p)
%calcula as razes do polinmio
p2 = poly(r)
% retorna os coeficientes do polinmio dadas as suas razes
polyval(p,n)
% avalia o polinmio para o valor n
Para traar o grfico de um polinmio, pode-se usar a funo fplot:
fplot (f.m, [-5,5])% chamar uma funo f.m; ou escreve a funo:
fplot ('x^2 + 5*x + 6', [-10 10])
Grficos de funes.
O MATLAB possui uma variedade de comandos para grficos em duas e trs
dimenses, iremos ver alguns exemplos.
Exemplo de subplot
2
( x1) 2 y
+(1c) e( x+1) y
seja f =c e
f ( x , y ) =x1+ y
% [X,Y]= meshgrid(x,y)
% cria uma matriz X cujas linhas so cpias do vetor x e uma matriz Y
%cujas colunas so cpias do vetor y
r = linspace(0,2,21);
theta = linspace(0, 2*pi, 41);
[R,TH] = meshgrid(r,theta);
% Agora converte o meshgrid nas coordenadas polares
X = 1 + R.*cos(TH);
Y = 3 + R.*sin(TH);
Z = X-1 + Y.^2;
surf(X,Y,Z)
hold on
% adiciona ao plano z = -5;
surf(X,Y,-5+0*Z)
hold of
%%%%coordenadas esfricas
syms b c
a=4;
t=[a*sin(b)*cos(c),a*sin(b)*sin(c),a*cos(b)];
ezsurf(t(1),t(2),t(3),[0,pi],[0,2*pi])
Interpolao
28
29
Derivadas e integrais
Para calcular a derivada podemos usar a funo dif
Exemplo
syms x y% declara as variveis simblicas
y= 2*x^3+ 5*x % escreve a funo
dif(y)% calcula a derivada
ans = 6*x^2 + 5
Tambm podemos chamar o comando gradiente para obter o gradiente,
que calculado tomando as derivadas parciais da funo.
Programa 14
v = -2:0.2:2;
[x,y] = meshgrid(v);
z = x .* exp(-x.^2 - y.^2); % funo
30
d b
utilizando
Exemplo: Calcular
sin ( x ) dx
0
Z = trapz(X,Y);
Z = pi/100*trapz(Y)
Z = 1.9998
Veja com size(X) que este vetor tem 101 valores, e que tal a aproximao
da soluo?
Agora com quad
Z=quad('sin(x)',0,pi)
Z = 2.0000
Melhor aproximao do resultado exato = 2, veja com format long o valor
calculado.
Exemplo : Integrao Dupla com a funo dblquad
f(x,y) = (4/)exp(-x-y)
f=
R= {0 x 0.5, 0 y 1}
@(x,y)exp(-x.^2 -y.^2)*(4/pi
F2
( x
R
F1
) dxdy ( F1dx F2 dy )
y
C
Programa 18
syms z x y t r % declara as variveis
F4=[z, x, y];
% utiliza uma parametrizao em coordenadas esfricas
sigma=[r*cos(t),r*sin(t),r^2*cos(t)*sin(t)];
boundary=subs(sigma,r,2); % faz a substituio
realdot = @(u, v) u*transpose(v);
Z = int(realdot(subs(F4,[x,y,z],boundary),dif(boundary,t)),t,0,2*pi)
Explique os comandos e diga como o programa demonstrou o teorema.
Equaes diferenciais
Teste de da soluo de uma ODE.
Dada a equao diferencial ordinria
Programa 19
du/dt-au = 0;
testar se u(t) = exp(a*t) a soluo
syms a t
u=exp(a*t)
Podemos computar o lado esquerdo da equao diferencial e ver se igual
ao lado direito zero.
d1=dif(u,t)-a*u
ans = 0
Ento a funo dada u a soluo. E a funo y(t) = at, outra soluo?
Vamos checar:
v=a*t
v = a*t
33
d2=dif(v,t)-a*v
ans =
a - a^2*t
Desde que a resposta no zero a funo y no uma soluo.
Teste para EDP
Seja a equao diferencial parcial:
(d^2 u)/(dx^2 )+(d^2 u)/(dy^2 ) = 0
Testar se w(x,y)=sin(pi*x)+sin(pi*y) a soluo
syms x y
w=sin(pi*x)+sin(pi*y)
dif(w,x,2)+dif(w,y,2)
ans =- pi^2*sin(pi*x) - pi^2*sin(pi*y)
simplify(ans)
EDO Numrica
Calcular o movimento do pendulo com o mtodo de Euler
Programa 20
length= 1; % comprimento do pendulo
g=9.8 % acelerao da gravidade
npoints = 250; %discretizao do tempo em 250 intervalos
dt = 0.04; % tempo com passo em segundos
omega = zeros(npoints,1); % inicializa omega, um vector de dimenses
npoints
theta = zeros(npoints,1); % inicializa theta, um vector com zero em todos os
pontos.
time = zeros(npoints,1); % teste inicializa o vetor tempo para ser zero
theta(1)=0.2; % necessrio tem algum deslocamento, se no o pendulo
no vai oscilar
for step = 1:npoints-1 % loop
omega(step+1) = omega(step) - (g/length)*theta(step)*dt;
theta(step+1) = theta(step)+omega(step)*dt
time(step+1) = time(step) + dt;
end
plot(time,theta,'r' ); % plota a soluo numrica em vermelho
xlabel('time (seconds) ');
ylabel('theta (radians)');
Calcular o movimento do pendulo com o mtodo de Euler-Cromer
Programa 21
clear;
length= 1;
g=9.8; %
npoints = 250;
dt = 0.04;
omega = zeros(npoints,1);
theta = zeros(npoints,1);
time = zeros(npoints,1);
theta(1)=0.2;
for step = 1:npoints-1 %
34
35
ser
classificados
em
inicial,
EXERCCIOS
Calcule o erro absoluto
|x|
e o erro relativo
|x|
|x| , com o
programa:
Arquivo: Formula de Stirling
Imprime uma tabela mostrando o erro na aproximao do fatorial de n, pela
formula de Stirling.
close all
clc
disp( ' ')
disp('
Stirling
Absolute
Relative')
disp('
n
n!
Approximation
Error
Error')
disp('--------------------------------------------------------------')
e=exp(1);
nfact=1;
for n=1:13
nfact = n*nfact;
s = sqrt(2*pi*n)*((n/e)^n);
abserror = abs(nfact - s);
37
relerror = abserror/nfact;
s1 = sprintf(' %2.0f
%10.0f
%13.2f',n,nfact,s);
s2 = sprintf('
%13.2f
%5.2e',abserror,relerror);
disp([s1 s2])
end
38