Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Funesgrficas2Delementares:
O MATLAB dispe de 4 funes bsicas para criar
grficos 2D. Estas diferenciamse principalmente pelo
tipodeescalaqueutilizamparaoseixos.Estasquatro
funessoasseguintes:
plot()criaumgrficoapartirdevectorese/oucolunas
dematrizes,comescalaslinearesemambososeixos.
loglog()idemcomescalalogartmica.
semilogx() idem com escala linear no eixo das
ordenadaselogartmicanoeixodasabcissas
semilogy() idem com escala linear no eixo das
abcissaselogartmicanoeixodasordenadas.
44
GRFICOS:2De3D______________________________
Existemfunesparaatribuirttulosaogrfico,aoseixos,
desenharumaquadrculaauxiliar,introduzirtexto,etc.
title('ttulo')atribuiumttuloaogrfico
xlabel('tal')atribuiumalegendaaoeixodasabcissas(com
xlabeloffdesaparece)
ylabel('qual')idemparaoeixodasordenadas(comylabel
offdesaparece)
text(x,y,'texto')introduz'texto'nolugarespecificadopelas
coordenadasxey(sexeysovectores,otextorepete
seporcadapardeelementos)
gtext('texto') introduz 'texto' com ajuda do rato: legend()
definelegendasparaasdistintaslinhasoueixosutilizados
nafigura
gridactivaagrelha(comgridoffdesaparece)
45
GRFICOS:2De3D______________________________
plot()afunochavedetodososgrficos2DemMATLAB.
J foi referido que o elemento bsico dos grficos
bidimensionaisovector.Utilizamsetambmsequnciasde
1, 2 ou 3 caracteres para indicar cores e tipos de linha. A
funoplot()nofazmaisdoquedesenharvectores.
Exemplo1:
x=[132453]
x=
132453
plot(x)
46
Figura5.1.Grficodovectorx=[132453].
GRFICOS:2De3D______________________________
FUNOplot
Exemplo2
x=0:pi/90:2*pi;
y=sin(x).*cos(x);
plot(x,y)
gridon
gridoff
xlabel(eixox(emradianos))
ylabel(eixoy)
title(y=sen(x)*cos(x))
47
GRFICOS:2De3D______________________________
FUNOplot
possvel incluir no ttulo ou na legenda dos eixos o
valordeumavarivelnumrica.Jqueoargumentodos
comandostitle,xlabeleylabelumavarivelcaracter,
precisotransformarasvariveisnumricas:
int2str(n) converte o valor da varivel inteira n em
caracter
num2str(x)converteovalordavarivelrealoucomplexa
xemcaracter
48
GRFICOS:2De3D______________________________
Textosobreogrfico
gtext(texto)
text(x,y,textoarepresentar)
Calcularascoordenadasdepontossobreacurva
ginput(n)
[x,y]=ginput(n)
Selecodotraoecordacurva
plot(x,y,opcao)
holdon
holdoff
49
GRFICOS:2De3D______________________________
Opesdeplot
yyellow
.point
solid
mmagenta
ocircle
:dotted
ccyan
xxmark
.dashdot
rred
+plus
dashed
ggreen
*star
bblue
ssquare
wwhite
ddiamond
kblack
vtriangle(down)
^triangle(up)
<triangle(left)
>triangle(right)
ppentagram
50
hhexagram
GRFICOS:2De3D______________________________
Exemplo3:Calculargraficamenteassoluesda
equao 2 xcos 2 x
=0 . 4
teta=0:pi/360:pi/4;
f1=(2*tetacos(2*teta))/2;
f2=0.4*ones(size(f1));
figure
plot(teta,f1,'g',teta,f2,'r')
axissquare
xlabel('Angulo(radianos)')
gtext('2xcos(2x))/2')
text(0.2,0.43,'y=0.4')
[teta0,y0]=ginput(1)
title(['Raizaproximada=',num2str(teta0)])
51
GRFICOS:2De3D______________________________
Selecodaescaladoseixos
axis([x0x1y0y1])
axisauto:escalapordefeito
axis off: desactiva a legendagem dos eixos,
desaparecendodoseixosassuaslegendaseagrid.
axison:activadenovo
axis xy: sistema de coordenadas cartesianas com
origemnocantoinferioresquerdo,eixooxdaesq.para
adta.eoydebaixoparacima.
axis equal: mesmos factores de escala para os dois
eixos
axis square: envolve com um quadrado a regio
delimitadapeloseixosactuais.
52
GRFICOS:2De3D______________________________
Impressodegrficos
printdps
dpsc
deps
depsc
%PostScriptforblackandwhiteprinters
%PostScriptforcolorprinters
%EncapsulatedPostScript
%EncapsulatedColorPostScript
print djpeg<nn>
qualidade
Exemplo:
printdjpeg90figura1(nn=75pordefeito)
53
GRFICOS:2De3D______________________________
Exemplo4:plot(vector,Matriz)
x=0:pi/180:2*pi;
y=sin(x);
z=cos(x);
plot(x,y,x,z)
A=[y'z']
plot(x,A)
A funo eval utilizase para funes definidas por um caracter.
y=eval(caracter)
Exemplo5:
54
f=sin(x)2*cos(x);
x=0:pi/90:2*pi;
y=eval(f);
plot(x,y)
axis([0602.4]);gtext(sen(x)2cos(x))
GRFICOS:2De3D______________________________
55
Apagarafiguraactualclf
closeallapagatodasasfigurasclose(figure(n))an
GRFICOS:2De3D______________________________
FUNOsubplot
Uma janela grfica pode ser dividida em m parties
horizontais e n verticais, com o objectivo de nela
representar mltiplos grficos. Cada uma destas
subjanelas tem os seus prprios eixos, apesar de
outras propriedades serem comuns a toda a figura. A
formageraldestecomando:
subplot(m,n,i)
onde m e n so o nmero de subdivises em linhas e
colunas,eiasubdivisoqueseconverteemactiva.
As subdivises so numeradas consecutivamente
comeandopelasdaprimeiralinha.
56
GRFICOS:2De3D______________________________
Exemplo7:
subplot(121)
f=sin(x)2*cos(2*x);
fplot(f,[02*pi])
legend(sen(x)2cos(2x))
subplot(122)
fplot(sin,[04*pi],r)
legend(sen(x))
57
GRFICOS:2De3D______________________________
Outrasfunesgrficas2D
bar()criadiagramasdebarras.
barh()diagramasdebarrashorizontais.
bar3()diagramasdebarrascomaspecto3D.
bar3h()diagramasdebarrashorizontaiscomaspecto3D.
pie()grficosemformadetarte.
pie3()grficosemformadetarteeaspecto3D.
area()similaraplot(),masparaordenadasde0ay.
stairs()funoanlogaabar()semlinhasinternas.
errorbar()representasobreumgrficomediantebarrasvaloresdeerros.
compass()desenhaoselementosdeumvectorcomplexocomoum
conjuntodevectorespartindodeumaorigemcomum.
feather()desenhaoselementosdeumvectorcomplexocomoumconjunto
devectorespartindodeorigensuniformementeespaadassobreo eixode
abcissas
hist()desenhahistogramasdeumvector.
58
GRFICOS:2De3D______________________________
Representaodepolgonos
Funo especial para desenhar polgonos planos,
preenchendoosdeumadeterminadacor.
Aformageralaseguinte:
fill(x,y,c)
Se c um caracter de cor ('r','g','b','c','m','y','w','k'),
ou um vector de valores [r g b], o polgono
preenchido de forma uniforme e com a cor
especificada.
Secumvectordamesmadimensoquexey,os
seus elementos transformamse de acordo com um
mapa de cores determinado, e o preenchimento do
polgono no uniforme neste caso obtmse
interpolandoentreascoresdosvrtices.
59
GRFICOS:2De3D______________________________
Estecomandocommatrizesaplicasedaseguinteforma:
fill(A,B,C)
onde A e B so matrizes do mesmo tamanho. Neste caso
desenhase um polgono por cada par de colunas das
matrizes.Cpodeserumvectorlinhadecoresuniformespara
cada polgono, ou uma matriz do mesmo tamanho que as
anteriores para obter cores de preenchimento por
interpolao.
60
Exemplo8:
x=[1,2,1,0];
y=[0,1,2,1];
figure
fill(x,y,r)
title(rombo)
GRFICOS:2De3D______________________________
Funesgrficas3Delementares:
Afunoplot3anlogasuahomlogabidimensionalplot.
Asuaformamaissimplesaseguinte:
plot3(x,y,z)
Exemplo9:
teta=0:pi/80:8*pi;
x=1+2*cos(teta);
y=1+2*sin(teta);
z=4*teta;
plot3(x,y,z)
axis([13130120]);
xlabel('eixox')
ylabel('eixoy')
zlabel('eixoz')
61
GRFICOS:2De3D______________________________
Representaogrficadesuperfcies
mesh(x,y,Z),
Criaodeumamalha:[X,Y]=meshgrid(x,y)
Grficodamalhaconstruidasobreasuperfciez:
mesh(X,Y,Z),meshz(X,Y,Z)
Aindafazumaprojecosobreoplanoz=0:
meshc(X,Y,Z),linhasdecontornonoplanoz=0
Exemplo10:
62
x=[0:2:200];y=[0:50];
%Obtemosamalhadodomnio
[XY]=meshgrid(x,y);
length(x),length(y)
size(X),size(Y)
Z=X.^2Y.^2;
figure(1);mesh(X,Y,Z)
figure(2);meshz(X,Y,Z)
figure(3);meshc(X,Y,Z)
GRFICOS:2De3D______________________________
Omesmocomsurf(X,Y,Z),surfc(X,Y,Z),surfl(X,Y,Z)
Umaformadiferentederepresentarfunestridimensionaispormeio
deisolinhasoucurvasdenvel.Comcontour(x,y,Z)ecomcontour3
(X,Y,Z)geramosascurvasdenveldeumasuperfcie.
Existem legendas especiais: primeiro precisamos de saber os valores
docontorno
cs=contour(Z)elogopomosclabel(cs)ouclabel(cs,v)
63
pcolor(Z)desenhaumaprojecocomsombrasdecorsobreoplano.
AgamadecoresestemconsonnciacomasvariaesdamatrizZ.
As funes surf e pcolor tm diversas possibilidades referentes
formaemquesorepresentadasasfacetasoupolgonoscoloridos.As
trspossibilidadessoasseguintes:
shadingflat:sombreadocomcorconstanteparacadapolgono.Este
sombreadochamaseplanoouflat.
shadinginterp:estabelecequeosombreadosecalculapor
interpolaodecoresentreosvrticesdecadafaceta.Chamase
tambmsombreadodeGouraud.
shadingfaceted:consistenumsombreadoconstantecomlinhas
pretassobrepostas.Estaaopopordefeito.
GRFICOS:2De3D______________________________
caxis([cmin,cmax])%escalaomapadecores
colormap(opcao)(distintasescalasdecores)
hsv
64
hot
gray
bone
copper
pink
white
flag
lines
colorcube
vga
jet
prism
cool
autumn
spring
winter
summer
Huesaturationvaluecolormap.
Blackredyellowwhitecolormap.
Lineargrayscalecolormap.
Grayscalewithtingeofbluecolormap.
Linearcoppertonecolormap.
Pastelshadesofpinkcolormap.
Allwhitecolormap.
Alternatingred,white,blue,andblackcolormap.
Colormapwiththelinecolors.
Enhancedcolorcubecolormap.
Windowscolormapfor16colors.
VariantofHSV.
Prismcolormap.
Shadesofcyanandmagentacolormap.
Shadesofredandyellowcolormap.
Shadesofmagentaandyellowcolormap.
Shadesofblueandgreencolormap.
Shadesofgreenandyellowcolormap.
GRFICOS:2De3D______________________________
colorbar(horiz),colorbar(vertical)%barracomaescala
decores.
brightenajustaobrilhodecordomapadecores
[X,Y,Z]=sphere(n) faz uma representao da esfera unitria
comnpontosdediscretizao
[X,Y,Z]=cylinder(rad,n)fazumarepresentaodeumcilindro
unitrio com n pontos igualmente espaados cuja seco
dadapelacurvacujosraiosseguardamnovectorrad.(1,1)e
20valorespordefeito.
fill3(x,y,z,c)%polgonostridimensionais
65
GRFICOS:2De3D______________________________
Manipulaodegrficos
view:view(azimut,elev),view([xd,yd,zd]).
view(2)
view(3)
rotate(h,d,a)ourotate(h,d,a,o)
hoobjecto,dumvectorqueindicaadirecoea
umngulo,ouaorigemderotao
Aorepresentarfunestridimensionais,svezestambm
soteisosNaNs.Quandoumapartedoselementosda
matriz de valores Z so NaNs, essa parte da superfcie
norepresentada,permitindoverarestantesuperfcie.
66
GRFICOS:2De3D______________________________
hiddenoffdesactivaarepresentaodelinhasocultas
hiddenonactivaarepresentaodelinhasocultas
67
GRFICOS:2De3D______________________________
Transformaodecoordenadas
[ang,rad]=cart2pol(x,y)%Decartesianasparapolares
[ang,rad,z]=cart2pol(x,y,z)%Decartesianasparacilndricas
[x,y]=pol2cart(ang,rad)%Depolaresparacartesianas
[x,y,z]=pol2cart(ang,rad,z)%Decilndricasparacartesianas
[angx,angz,rad]=cart2sph(x,y,z)%Decartesianasparaesfricas
[x,y,z]=aph2cart(angx,angz,rad)%Deesfricasparacartesianas
Exemplo11:
%cilndricas
[ang,rad,z]=cart2pol(sqrt(3),1,2)
%esfricas
[ang1,ang2,rad1]=cart2sph(sqrt(3),1,2)
68
GRFICOS:2De3D______________________________
Criaodeanimaes
Para preparar pequenas animaes podemse utilizar as funes
movie, moviein e getframe. Uma animao composta de vrias
imagens, denominadas frames. A funo getframe devolve um
vector coluna com a informao necessria para reproduzir a
imagem que se acaba de representar na figura ou janela grfica
activa, por exemplo com a funo plot. O tamanho deste vector
colunadependedotamanhodajanela,masnodacomplexidadedo
grfico. A funo moviein(n) reserva memria para armazenar n
frames. Uma vez criada a animao podese visualizla com o
comandomovie.
Exemplo12:
69
forj=1:10
x=0:0.01:2*pi;
plot(x,sin(j*x)/2)
M(j)=getframe;
end
movie(M,10)
GRFICOS:2De3D______________________________
a
V
R=0.0821eV=[2:100].
70
V b =RT
GRFICOS:2De3D______________________________
Exerccio5.1:
a=18.78;
b=0.1208;
R=0.0821;
subplot(1,2,1)
T=[373:100:673];
V=[2:100];
fac1=R./(Vb);
fac2=a./V.^2;
P=zeros(4,length(V));
P(1,:)=T(1)*fac1fac2;
P(2,:)=T(2)*fac1fac2;
P(3,:)=T(3)*fac1fac2;
P(4,:)=T(4)*fac1fac2;
plot(V,P(1,:),'',V,P(2,:),'',V,P(3,:),':',V,P(4,:),'.')
title('EquacaodeVanderWaals:Isotermicas')
xlabel('Volume,ltr.')
ylabel('Pressao,atm.')
axis([0,50,0,15])
legend('T=100C','T=200C','T=300C','T=400C')
71
GRFICOS:2De3D______________________________
subplot(1,2,2)
P=[25:10:55];
T=zeros(4,length(V));
fac1=(Vb)/R;
T(1,:)=((P(1)+fac2).*fac1)273.15;
T(2,:)=((P(2)+fac2).*fac1)273.15;
T(3,:)=((P(3)+fac2).*fac1)273.15;
T(4,:)=((P(4)+fac2).*fac1)273.15;
plot(V,T(1,:),'',V,T(2,:),'',V,T(3,:),':',V,T(4,:),'.')
title('EquacaodeVanderWaals:Isobaricas')
xlabel('Volume,ltr.')
ylabel('Temperatura,C')
legend('P=25atm.','P=35atm.','P=45atm.','P=55atm.')
72
GRFICOS:2De3D______________________________
73
GRFICOS:2De3D______________________________
Exerccio5.2
Dadaafunof(x,y)=xy,obternumajanelagrficaas
representaesseguintes:
A superfcie definida pela funo sobre o domnio
[10,10]*[10,10].
Aslinhasdecontornosobreasuperfcie
A projeco das linhas de contorno sobre o domnio
dedefinio
Aprojecodaslinhasdecontornosobreoplanoxy,
correspondentesaosvalores4,1,1e4.
74
GRFICOS:2De3D______________________________
75
Exerccio5.2
x=[10:0.5:10];y=x;
[X,Y]=meshgrid(x,y);
Z=X.*Y;
subplot(221)
mesh(X,Y,Z)
legend('z=xy')
xlabel('eixox')
ylabel('eixoy')
zlabel('eixoz')
title('superficiez=xy')
subplot(222)
contour3(Z)
gridoff
xlabel('eixox')
ylabel('eixoy')
GRFICOS:2De3D______________________________
76
zlabel('eixoz')
title('linhasdecontorno3D')
subplot(223)
cs=contour(Z);
contour(x,y,Z)
gridoff
clabel(cs)
xlabel('eixox')
ylabel('eixoy')
title('Projeccaodaslinhasdecontorno')
subplot(224)
contour(Z,[4,1,1,4])
gridoff
xlabel('eixox')
ylabel('eixoy')
title('Projeccaodaslinhasdecontorno')
GRFICOS:2De3D______________________________
77
GRFICOS:2De3D______________________________
Exerccio5.3
Representarasuperfciederevoluoobtidaaogirara
curvay=x2+1emtornodoeixoox
x=[0:0.1:1]
78
GRFICOS:2De3D______________________________
Exerccio5.3
79
x=[0:0.1:1];%pontosdediscretizacaodoeixoox
rad=x.^2+1;%vectorderaios
n=length(rad);%numeroderaios
cylinder(rad,n)%representacaodocilindro
xlabel('eixox')
ylabel('eixoy')
zlabel('eixoz')
[X,Y,Z]=cylinder(rad,n);
h=surf(X,Y,Z);%calculodoobjecto
rotate(h,[0,1,0],90)
%Aorodardesaparecemaslegendasdoseixos
xlabel('eixox')
ylabel('eixoy')
zlabel('eixoz')
view(15,15)%alteramosopontodeobservacao
gridoff
legend('f(x)=x^2+1')
GRFICOS:2De3D______________________________
80
PROGRAMAO
TodososficheirosdecomandosMatlabdevemtera
extenso.mesode2tipos:
Ficheirosdefunoaprimeiralinhaexecutvele
comeacomapalavrafunction
Ficheirosdeprogramanosofuneseconstroemse
medianteumasequnciadecomandos.Executamse
teclandoonomesemextenso
Exemplo1:
functiontemp_c=convert(temp_f);
%CRIARUMAFUNCAO
%PASSADEGRAUSFAC
temp_c=5/9*temp_f5/9*32;
81
PROGRAMAO________________________________
Comandosdeentrada/sada
input:permitenosintroduzirdados
variavel=input(mensagemparaoecr);
disp:mostraumtextonoecr
disp(Oalgoritmonoconvergiu)
menu:geraummenuquepermiteaoutilizadorescolher
entrediversasopes
opcao=menu(titulodamensagem,opcao1,...opcao_p)
error:informadaexistnciadeumerroepraa
execuodoprograma,devolvendoocontroloao
utilizador
82
PROGRAMAO________________________________
Programaodefunes
Aprimeiralinhaexecutvelecomeapelapalavra
function:
functionarg_sada=nome_funcao(arg_entrada)
Depois,quantoscomandossejamnecessrios,incluindo
comentrioscomosesetratassedeumficheiroprograma.
Oficheirodeveserguardadocomo:nome_funcao.m
Paradevolverocontroloaoprogramaapartirdequalquer
pontodeumafuno,bastaescreverocomandoreturn.
Exemplo2:
Construrumafunoquedefina,paraumgsideal,a
temperaturaemfunodapressoedovolume.
83
PROGRAMAO________________________________
functiont=gases(p,v,n)
%t=gases(p,v,n)
%funcaoqueconsideraaleidosgasesideais
%Argumentosdeentrada:
%pressaop(atmosferas)
%volumev(litros)
%numerodemolesn
%Argumentosdesaida:
%temperaturat(Kelvin)
%R=0.0821atm.litro/mol.grau
R=0.0821
t=p*v/(n*R);
___________________
Gravarcomogases.m
temp=gases(20,10,10)
84
PROGRAMAO________________________________
OmfilespodeexecutarsenapromptdoMatlabouapartir
deumalinhadeoutroficheiro.
O mfile no admite argumentos de entrada, simplesmente
trabalhacomdadosexistentesnoespaodetrabalho.
As variveis de uma funo so locais funo e as de um
ficheiromsoglobais.
Se queremos que uma varivel seja compartilhada por vrias
funes,temdedefinirseemtodaselascomoglobal:
85
globalvarivel
echoescrevecadacomandodoficheironoecr
pausesuspendeaexecuoatsepremirumatecla
keyboardidemealmdissopermiteintercalar
comandos.Aexecuoretomadacomreturn
PROGRAMAO________________________________
Testaronmerodeargumentos
nargin devolve o nmero de argumentos de entrada
comosquaisafunofoichamada.
nargout devolve o nmero de argumentos de sada
comosquaisafunofoichamada.
nargchk verifica se o nmero de argumentos de
entrada calculados com nargin est entre o valor
mximormnimoprevisto,senoderro.
nargchk(mnimo,mximo,nmero_entrada)
86
PROGRAMAO________________________________
Ciclos
fork=n1:incre:n2
...
end
fork=vector_coluna
...
end
Combreakinterrompidaaexecuo
Estruturasdecontrolo
if
end
87
if
if
else
elseif
end
end
if
elseif
while
else
end
end
PROGRAMAO________________________________
Operadoresrelacionaiselgicos
Menor:<Menorouigual:<=Maior:>Maiorouigual:>=
Igual:==Diferente:~=Ou:|E:&No:~
O resultado de realizar operaes relacionais ou lgicas
serum(1)severdadeiroouzero(0)sefalso
Outrasfunesrelacionaisoulgicas:
xor(x,y): (or exclusivo) devolve 0 se x ou y so no nulos e 1 caso
contrrio.
any(x):sexumvectordevolveum(1)sealgumacomponentedex
nonula.Seforumamatrizdevolveumvectorlinhacomum(1)para
cadacolunadamatrizxquetenhaalgumadassuaslinhasnonulase
zero(0)casocontrrio.
all(x):Sexumvectordevolveum(1)setodasassuascomponentes
sononulas.Seforumamatrizdevolveumvectorlinhacomum(1)
paracadacolunadamatrizxquetenhatodasassuaslinhasnonulas
ezero(0)casocontrrio.
88
PROGRAMAO________________________________
isempty(x):devolveum(1)seamatrizxvaziaezero(0)casocontrrio.
isequal(x1,x2,,xn):Devolveum(1)setodasasmatrizessoidnticase
zero(0)casocontrrio.
Estruturasdecontrolopredefinidas:
89
Exemplo3:
q=[];v=[1,1,2,1];
fori=1:length(v)
if(v(i)>=0)
q=q[q,1];
else
q=[q,0];
end
end
q=v>=0
PROGRAMAO________________________________
r=v==q
s=(v>=0)&(v<2)
y=v(abs(v)>=2)
A=[2,4,6;1,3,5];
[i,j]=find(A<3)
Desde o Matlab 5 que foi incorporada a estrutura switch que permite
realizar bifurcaes no programa atendendo ao resultado de uma
expresso:
90
switchexpressao
caseexpressao_0
comandos_0quedevemserexecutados
caseexpressao_1
comandos_1quedevemserexecutados
caseexpressao_2
comandos_2quedevemserexecutados
otherwise
comandosquedevemserexecutados
end
PROGRAMAO________________________________
Leituraeescritaemficheirosexternos
Aleituraeescritadeinformaoemficheirosexternos
efectuada essencialmente com os comandos fread e
fscanfparaleituraefprintfefwriteparaescrita.
Oprocedimentogeralemtodososcasos:
Abriroficheiroapartirdoqualsedesejalerounoqual
desejamosescrever.
Colocar o apontador de leitura ou escrita na posio
desejada.
Lerouescreverasvariveis.
Fecharoficheiro.
91
PROGRAMAO________________________________
ParaAbrirficheirosocomandofopen
ident=fopen(nomedeficheiro)
Emidentguardadoumnmerodeidentificao(sefor
(1)oficheironopdeseraberto.
ParaFecharficheirosocomandofclose
fclose(ident)
fclose(all)
verif=fclose(all)
Posicionamientodoapontador.
1.Posicionar o apontador no incio do ficheiro com
nmerodeidentificaoident:frewind(ident)
92
2.Posicionaroapontadordentrodeumficheiro:
test=fseek(ident,posi,origem)
PROGRAMAO________________________________
Leituradedados
93
PROGRAMAO________________________________
Leituradedadosformatados:
[dados,contador]=fscanf(ident,formato,quantos)
1.Ldadosdoficheiroident.
2.Osdadoslidosguardamseemdados.
3.quantos,indicaquantosdadosvamosler.
.umescalark
.um vector[n,m], neste caso lerseo os dados
necessrios para preencher uma matriz de ordem n x m,
colunaacoluna.
.inftodososdadosdoficheiro.
4.Avarivelcontadorindicaquantosforamlidoscomxito.
5.Avarivelformatoindicaoformatodeleitura:
%d:decimais;%e:notaoexponencial
94
PROGRAMAO________________________________
%f:notaodepontofixo;
%g:noconsideraoszerosnosignificativos.
%s:varivelcaracter
Leituradedadosnoformatados:
dados=fread(ident,quantos,precisao)
Escritaemficheiro
Escritadedadosformatados:
contador=fprintf(ident,formato,dados,controlos)
\nlinhanova
95
\tavanaatposioseguintedetabulao
PROGRAMAO________________________________
Escritadedadosnoformatados:
contador=fwrite(ident,dados,precisao)
Exercicio6.1:
Utilizandoestruturasdecontroloconstruirumafunoque
calculeasraizesdeumaequaodesegundograu
ax2+bx+c=0
96
PROGRAMAO________________________________
Exercicio6.1:
functionraiz=sole2(a,b,c)
%raiz=sole2(a,b,c)
%solucaodaequacaodesegundograu
%ax^2+bx+c=0,a~=0
%
if(nargin~=3)
error(Onumerodeargumentosdeentradadeveser3)
end
discri=b^24*a*c;
raiz=[];
if(discri==0)
raiz=b/(2*a);
disp([Raizdupla=,num2str(raiz)])
return
elseif(discri>0)
97
PROGRAMAO________________________________
raiz(1)=(b+sqrt(discri))/(2*a);
raiz(2)=(bsqrt(discri))/(2*a);
disp([Raizesreaissimples=,num2str(raiz)])
return
else
raiz(1)=(b+sqrt(discri)*i)/(2*a);
raiz(2)=(bsqrt(discri)*i)/(2*a);
disp([Raizescomplexas=,num2str(raiz)])
return
end
Estafunoexecutasedoseguintemodo:
raiz=sole2(2,3,1);
raiz=sole2(1,0,1);
98
PROGRAMAO________________________________
Exercicio6.2:
Programaparaleituradedados
99
Nome
FernandoGomesPereira
SusanaRodriguesPeres
CarlosLealAlvarinho
ArturGomesAlvarinho
SlviaTaslvares
AndreiaGalegoNunes
AliceCavaleiroLeal
AntnioFragaGomes
BeatrizMachadoGomes
LauraTobiasMacieira
JooRicoFraga
AndrPenaGomes
LusBrancoVila
SandraPontesGalego
IsoldaPretoGomes
TeresaCieiroGonavles
RicardoLopesAmigo
Anlise
6
14
16
10
17
6
12
10
8
14
8
12
16
16
10
8
16
lgebraFsica
12
10
8
6
16
14
8
10
16
18
6
4
16
16
14
12
6
10
16
10
14
10
16
10
12
12
17
14
10
12
4
10
12
4
Estatstica
14
2
17
17
17
8
10
10
8
18
10
12
8
18
12
6
18
PROGRAMAO________________________________
100
Exercicio6.2:
ident=fopen('dados.m');
frewind(ident)
variavais=[];
fori=1:5
variavel=fscanf(ident,'%s',1);
long_v(i)=length(variaveis)+length(variavel);
variaveis=[variaveisvariavel];
if(i==1)
fprintf(1,'\t%s\t\t',variavel)
else
fprintf(1,'\t%s\t',variavel)
end
end
nomes=[];
notas=[];
PROGRAMAO________________________________
fori=1:17
nome=fscanf(ident,'%s,%c',1);
apelido1=fscanf(ident,'%s,%c',1);
apelido2=fscanf(ident,'%s,%c',1);
l=3*(i1)
long_n(l+1)=length(nomes)+length(nome);
long_n(l+2)=long_n(l+1)+length(apelido1);
long_n(l+3)=long_n(l+2)+length(apelido2);
nomes=[nomesnomeapelido1apelido2];
notas=[notas;fscanf(ident,'%i',4)'];
fprintf(1,'\n%9s%s%9s',nome,apelido1,apelido2)
fprintf(1,'\t%i\t\t%i\t\t%i\t\t%i',notas(i,:))
end
fclose(ident)
101
ANLISENUMRICA
Neste captulo introduziremos a anlise numrica de
problemas bsicos relacionados com o estudo de
funes de uma e vrias variveis, a aproximao de
extremoslocaisouoclculodezerosdeumafuno.
O clculo dos mnimos locais de uma funo de uma
varivelfazseutilizandooseguintecomando:
min=fminbnd(funcao,a,b,opcoes)
Exemplo1:
Calcular um mnimo local da funo f(x)=3x44x3 no
intervalo[12]
fminbnd(3*x^44*x^3,1,2)
102
ANLISENUMRICA_____________________________
103
min=fminsearch(funcao,x0)
A diferena que em vez de dar um intervalo damos um
vector x0 que indica o ponto em torno do qual desejamos
minimizarafuno.
Exemplo2:
Minimizarafunof(x)=sen(xy)emtornode[0,0]
fminsearch(sin(x(1)*x(2)),[0,0])
ANLISENUMRICA_____________________________
Calcularumasoluodaequaosen(x)2cos(2x)+x2=22.
Estaf(x)=sen(x)2cos(2x)+x22+2=0.
A funo contnua e para a escolha do ponto inicial
procuramosumintervaloondeafunomudedesinal,[0,10]
x=0;eval(sin(x)2*cos(2*x)+x^2pi^2+2)
x=10;eval(sin(x)2*cos(2*x)+x^2pi^2+2)
104
ANLISENUMRICA_____________________________
105
ANLISENUMRICA_____________________________
Mtodosdeintegraonumrica:
Podemos calcular a rea sob curvas F(x) por
integraonumrica.
.Integraodefunesunidimensionais
quad
quadl
.Integraodupla
dblquad
Exemplo4:
ia=quad(sin(x)+1,0,2*pi);%(6.2832)
xmin=pi;xmax=2*pi;
ymin=0;ymax=pi;
result=dblquad('y*sin(x)+x*cos(y)',...
xmin,xmax,ymin,ymax)
%9.8698
106
ANLISENUMRICA_____________________________
int('sin(x)^2*cos(x)^2',0,4*pi)%1/2*pi=1.5708
ia=quad('sin(x).^2.*cos(x).^2',0,4*pi)%1.0051e030
ial=quadl('sin(x).^2.*cos(x).^2',0,4*pi)%1.5708
107
ANLISENUMRICA_____________________________
Mtodosderesoluodeequaesdiferenciais
Resoluo de problemas de valores iniciais para
equaesdiferenciaisordinrias(ODEs)
[T,Y]=solver(F,tspan,y0)
.solver:algoritmoderesoluodeODEs:
ode45,ode23,ode113,ode15s,ode23s
.F:stringcontendoonomedoficheiroODE.
.tspanvectordelimites[t0tfinal]deintegrao.
.y0vectorcolunadecondiesiniciaisemt0
108
ANLISENUMRICA_____________________________
109
Solvers
ode45
ode23
ode113
ode15s
ode23s
Eq.Dif.Norgidas.Ordemmdia
Eq.Dif.Norgidas.Ordembaixa
Eq.Dif.Norgidas.Ordemvarivel
Eq.Dif.rgidas.Ordemvarivel
Eq.Dif.rgidas.Ordembaixa
Opoes
odeset
odeget
Criar/modificaropes
Obteropes
Sadas
odeplot
odephas2
odephas3
odeprint
Representarsriestemporais
Representarfasesbidimensionais
Representarfasestridimensionais
Sadaparaajaneladecomandos
ANLISENUMRICA_____________________________
Exemplo5:
AequaodeVanderPol
y 1 1 y 12 y 1 y 1 =0
''
'
Reescrevemososistema
''
y1 = y 2
y '2 = 1 y 12 y 2 y 1
EscrevemosoficheiroODE
110
ANLISENUMRICA_____________________________
functiondy=vdp1(t,y)
dy=[y(2);(1y(1)^2)*y(2)y(1)];
Chamamososolver
[T,Y]=ode45(vdp1,[020],[2;0]);
plot(T,Y(:,1),'',T,Y(:,2),'')
title('SolucaodaequacaodeVanderPol,\mu=1')
xlabel('TempoT')
ylabel('SolucaoY')
legend('Y1','Y2')
111
ANLISENUMRICA_____________________________
112
AJUDA
AajudaomaisimportantenoMatlab,
helpnome_comando
helpnome_toolbox
PodemosverexemplosdeaplicaesdeMatlabescrevendo:
demo
Parasabermais:http://www.mathworks.com/
http://www.mathworks.com/access/helpdesk/help/toolbox/compiler/compiler.shtml
EstaltimafazrefernciaaoscompiladoresdeCdoMatlab,osmexfiles
113