Buscar

PROVA 2 GUIDI 2015/2 RESOLVIDA

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

PROVA 2 GUIDI RESOLVIDA/.DS_Store
__MACOSX/PROVA 2 GUIDI RESOLVIDA/._.DS_Store
PROVA 2 GUIDI RESOLVIDA/AULAS NUMERICO/.DS_Store
__MACOSX/PROVA 2 GUIDI RESOLVIDA/AULAS NUMERICO/._.DS_Store
PROVA 2 GUIDI RESOLVIDA/AULAS NUMERICO/2103.sci
//a funcao f1 calcula certo com o argumento x for um escalar
function y=f1(x)
 y=cos(x*x)-1+0.5*x^4
endfunction
//a funcao f2 calcula corretamente com o .^
function y=f2(x)
 y=cos(x.*x)-1+0.5*x.^4
endfunction
PROVA 2 GUIDI RESOLVIDA/AULAS NUMERICO/2303.sci
//vamos definir a funcao
//da qual desejamos determinar o zero
//funcao
function y=f(x)
 y=x-exp(-x)
endfunction
//derivada
function y=df(x)
 y=1+exp(-x)
endfunction
//newton ralphs
[x_nr,fx_nr,n_nr]=fsolve_nr(0.5,f,df)
//bissecacao
[x_b,fx_b,n_b]=fsolve_b(0.5,0.6,f) 
//tolerancia 10^-10 com aprox inicial 0.5 e 0.6
//netwon ralphs nunca converge se nao tem derivada definida na raiz do problema
//ou quando a aproximaçao inicial nao é suficientemente pequena
//por ex x^3-2x+2
//com x0 = 0 e x0 = 1
PROVA 2 GUIDI RESOLVIDA/AULAS NUMERICO/Aula 2 exercícios/.DS_Store
__MACOSX/PROVA 2 GUIDI RESOLVIDA/AULAS NUMERICO/Aula 2 exercícios/._.DS_Store
PROVA 2 GUIDI RESOLVIDA/AULAS NUMERICO/Aula 2 exercícios/exercicio5.sci
xi=[0.1 .267 .433 .6 .767 .933 1.1 1.27 1.43 1.6]'
fi=[.00973 .0762 .159 .294 .489 .661 .832 .999 .982 .960]'
function y=phi1(x)
 y=cos(x/2)
endfunction
function y=phi2(x)
 y=cos(x)
endfunction
function y=phi3(x)
 y=cos(1.5*x)
endfunction
// construção matriz Phi
Phi=[phi1(xi) phi2(xi) phi3(xi)]
// solução para ajuste
a=(Phi'*Phi)\(Phi'*fi)
// função ajustada
function y=phi(x)
 y=a(1)*phi1(x)+a(2)*phi2(x)+a(3)*phi3(x)
endfunction
// ajuste linearizado
lnfi=log(fi)
// funções do ajuste
function y=psi1(x)
 y=ones(x)
endfunction
function y=psi2(x)
 y=log(x)
endfunction
function y=psi3(x)
 y=x.^2
endfunction
// construção da matriz psi
Psi=[psi1(xi) psi2(xi) psi3(xi)]
// solução9 do ajuste
b_til=(Psi'*Psi)\(Psi'*lnfi)
//parametros originais ajustados
b=[exp(b_til(1));b_til(2);b_til(3)]
// função ajustada
function y=psi(x)
 y=b(1)*(x.^b(2)).*exp(b(3)*x.^2)
endfunction
//visualização
scf(0)
plot(xi,fi,'r.')
x=linspace(0.1,1.6) // mesmo intervalo dos dados (1 coordenada)
plot(x,phi(x),'r-')
plot(x,psi(x))
xgrid
//soma do quadrado das diferenças
Q_phi=norm(fi-phi(xi),2)^2
Q_psi=norm(fi-psi(xi),2)^2
PROVA 2 GUIDI RESOLVIDA/AULAS NUMERICO/Aula 2 exercícios/Icon
__MACOSX/PROVA 2 GUIDI RESOLVIDA/AULAS NUMERICO/Aula 2 exercícios/._Icon
PROVA 2 GUIDI RESOLVIDA/AULAS NUMERICO/Aula 2 exercícios/terremoto1.sci
// dados originais
mi=[4 4.2 4.4 4.6 4.8 5 5.2 5.4 5.6 5.8 6]'
Ni=[375 219 166 106 69 39 23 18 11 7 5]'
//ajuste da função N(m)=10^(a-b*m) linearizada (log10)
log10Ni=log10(Ni)
//funções do ajuste
function y=phi1(x)
 y=ones(x)
endfunction
function y=phi2(x)
 y=-x
endfunction
// construção da matriz phi
Phi=[phi1(mi) phi2(mi)]
// solução do ajuste linearizado
a_til=(Phi'*Phi)\(Phi'*log10Ni)
// parâmetros do problema original
a=a_til(1)
b=a_til(2)
// função ajustada
function y=N(x)
 y=10.^(a-b*x)
endfunction
// parâmetro ajustado a = 6,37, b=0,95
m=linspace(4,6)
scf(0)
plot(mi,Ni,'r.')
plot(m,N(m))
xgrid
__MACOSX/PROVA 2 GUIDI RESOLVIDA/AULAS NUMERICO/._Aula 2 exercícios
PROVA 2 GUIDI RESOLVIDA/AULAS NUMERICO/CIRCPOTENCIA.sce
r24=1;r34=1
r23=5;r14=5
r13=10
A=[0 -1 0 -r14 0 0 0;
 0 -1 0 0 0 -r24 0;
 1 -1 0 0 0 0 -r34;
 -1 0 -r13 0 0 0 0;
 -1 0 0 0 -r23 0 0;
 0 0 0 1 0 1 1;
 0 0 1 0 1 0 -1]
 
v2=1
b=[0 -v2 0 0 -v2 0 0]'
x=A\b
x_alt=gausspp([A b])
//linearmente dependente
C=[0 -1 0 -r14 0 0 0;
 0 -1 0 0 0 -r24 0;
 1 -1 0 0 0 0 -r34;
 -1 0 -r13 0 0 0 0;
 -1 0 0 0 -r23 0 0;
 0 0 0 1 0 1 1;
 0 0 0 1 0 1 1]
 
//sistema imopssível
y=C\b
//potência dissipada em um resistor
P12=0.1
P14=r14*x(4)^2
P24=r24*x(6)^2
P34=r34*x(7)^2
P13=r13*x(3)^2
P23=r23*x(5)^2
//potência total dissipada no circuito
Pt=P12+P14+P24+P34+P13+P23
PROVA 2 GUIDI RESOLVIDA/AULAS NUMERICO/fu.sci
function f1=fu(u,v,w)
 f1=-v^4*w^4+u^2*w^2^-3/2*2*u*w^2
endfunction
function f2=fv(u,v,w)
 f2=-2(v^4*w^4+u^2*w^2)^(-3/2)*4*(v^3*w^4)
endfunction
function f3=fw(u,v,w)
 f3=-2(v^4*w^4+u^2*w^2)^(-3/2)*4*(v^4*w^3+2*u^2*w)
endfunction
function fa=faa(f1,f2,f3,u,v,w,erru,errv,errw)
 fa=(f1(u,v,w)*erru+f2(u,v,w)*errv+f3(u,v,w)*errw)
endfunction
err=faa(fu,fv,fw,9.1,122,140,0.04,0.01,0.01)
PROVA 2 GUIDI RESOLVIDA/AULAS NUMERICO/Icon
__MACOSX/PROVA 2 GUIDI RESOLVIDA/AULAS NUMERICO/._Icon
PROVA 2 GUIDI RESOLVIDA/AULAS NUMERICO/m.sce
fu=(-1/((v^4*w^4)+(u^2*w^2)^(3/2)))*(2*v*w^2)*eu
fv=(-2/((v^4*w^4)+(u^2*w^2)^(3/2)))*(4*v^3*w^4)*ev
fw=(-2/((v^4*w^4)+(u^2*w^2)^(3/2)))*(4*v^4*w^3+2*u^2*w)*ew
ea=fu+fv+fw
u=9.1
v=122
w=140
eu=0.04
ev=0.01
ew=0.01
PROVA 2 GUIDI RESOLVIDA/AULAS NUMERICO/questa1.4.sci
function f1=fu(u,v,w)
 f1=(-((((v^4)*(w^4))+((u^2)*(w^2)))^(-3/2))*((2*u)*(w^2)))
endfunction
function f2=fv(u,v,w)
 f2=-2(v^4*w^4+u^2*w^2)^(-3/2)*4*(v^3*w^4)
endfunction
function f3=fw(u,v,w)
 f3=-2(v^4*w^4+u^2*w^2)^(-3/2)*4*(v^4*w^3+2*u^2*w)
endfunction
function fa=faa(f1,f2,f3,u,v,w,erru,errv,errw)
 fa=(f1(u,v,w)*erru+f2(u,v,w)*errv+f3(u,v,w)*errw)
endfunction
err=faa(fu,fv,fw,9.1,122,140,0.04,0.01,0.01)
PROVA 2 GUIDI RESOLVIDA/AULAS NUMERICO/telemertia.sci
ti=[0 .1 .18 .27 .36 .44 .53 .62 .71 .8]
fi=[1 .986 .946 .879 .788 .676 .545 .399 .242 .0785]
df1=(fi(2)-fi(1))/(ti(2)-ti(1)) // estimativa derivada em t=0
dfn=(fi($)-fi($-1))/(ti($)-ti($-1)) // estimativa derivada em t=0,8
dfi=splin(ti,fi,'clamped',[df1 dfn])
// visualização de dados
function y=s(t)
 y=interp(t,ti,fi,dfi,'natural')
endfunction
t=linspace (0,1)
scf(0)
plot(ti,fi,'r.')
plot(t,s(t))
xgrid
// estendendo o último polinômio à direita, ele assume o valor zero próximo a t=0.8
t_imp=fsolve(0.84,s)
//o impacto ocorreu aproximadamente em t=0.8436285
__MACOSX/PROVA 2 GUIDI RESOLVIDA/._AULAS NUMERICO
PROVA 2 GUIDI RESOLVIDA/Icon
__MACOSX/PROVA 2 GUIDI RESOLVIDA/._Icon
PROVA 2 GUIDI RESOLVIDA/prova/.DS_Store
__MACOSX/PROVA 2 GUIDI RESOLVIDA/prova/._.DS_Store
PROVA 2 GUIDI RESOLVIDA/prova/229125.pdf
UFRGS – Instituto de Matemática
Depto. de Matemática Pura e Aplicada
MAT01169 – Cálculo Numérico – turma �1
Prova 2-✁ – 14 de outubro de 2015
Nome completo: Cartão:
Questão 1 (1 ponto): O coeficiente de expansão térmica de um vidro, αvidro, em função da temperatura é
dado pela tabela abaixo.
temperatura (ºC) 500 550 600 650 700 750
αvidro (10
−3/cm3) 4.43 4.96 5.56 6.37 7.49 6.68
A partir da interpolação polinomial de todos os dados da tabela, o valor aproximado para o coeficiente desse
vidro a uma temperatura de 610°C vale aproximadamente:
a) 5,69g/cm3
b) 5,72g/cm3
c) 5,75g/cm3
d) 5,77g/cm3
e) 5,81g/cm3
Questão 2 (1 ponto): A partir da solução do sistema de equações lineares


+3x− 2y − z + 4r + 2s = 5
−x+ y + z + 2r − 4s = 4
−2x− 9y − z + 4r + 2s = 3
+4x+ 2y − z + 4r + 2s = 2
+x− y + z + r + s = 1
Determine o valor aproximado da soma (y + r):
a) - 1.223936
b) - 1.450549
c) - 1.610103
d) - 1.892745
e) - 1.992376
◆✂✄☎✆ ✶✝
Alexia Barbieri Caus 229125
Questão 3 (1 ponto): Considere um sistema de equações lineares da forma Ax = b, onde a matriz de
coeficientes A possui componentes não nulas da forma (A)
1,1 = −2, (A)1,2 = 10, (A)n,n−1 = 8, (A)n,n = 1
e para i = 2, . . . , n − 1, (A)i,i−1 = 4, (A)i,i = −5, (A)i,i+1
= 4. Em um sistema com n = 25, dado que a
incerteza relativa em norma 1 para b vale aproximadamente 3,4× 10−8, a estimativa para incerteza relativa
no valor da solução em norma 1 vale aproximadamente :
a) 4,21× 10−6
b) 4,39× 10−6
c) 4,56× 10−6
d) 4,72× 10−6
e) 4,84× 10−6
Questão 4 (1 ponto): Considere o sistema de equações
{
(x− 1)4 + (y − 2)4 = 16
x2 + y2 = 4
Partindo da aproximação inicial x0 = −0,5, y0 = 2 qual será o valor aproximado para o produto x× y dado
pelo método Newton-Raphson após 5 iteradas?
a) - 1,359483
b) - 1,462492
c) - 1,511047
d) - 1,629736
e) - 1,731865
Questão 5 (1 ponto): O sistema de equações
{
x3 cos(y)− x ln(xy) = 0
y3 cos(xy)− (x+ y) ln(x+ y) = 0
possui uma solução próxima de x = 0,7 e y = 1,5. Se (x∗, y∗) é esta solução, então y∗ vale aproximadamente:
a) 2,087363
b)2,112397
c) 2,297983
d) 2,433321
e) 2,620276
Questão 6 (1 ponto): Dado que p é um polinômio de grau menor ou igual a n−1 que interpola um conjunto
de pontos A = {(xi, yi)}
n
i=1, qual é a forma do polinômio q de grau menor ou igual a n+ 1 que interpola os
pontos do conjunto A e também os pontos (−2, 0) e (1,−3)?
a) p(x) + α(x− x1)(x− x2) . . . (x− xn) + β(x− x1)(x− x2) . . . (x− xn)(x+ 2)
b) p(x) + α(x− x1)(x− x2) . . . (x− xn)(x+ 2)(x− 1)
c) p(x) + α(x− x1)(x− x2) . . . (x− xn)x+ β(x− x1)(x− x2) . . . (x− xn)(x+ 3)
d) p(x) + α(x− x1)(x− x2) . . . (x− xn)(x+ 2) + β(x− x1)(x− x2) . . . (x− xn)(x− 1)
e) p(x) + α(x− x1)(x− x2) . . . (x− xn)x(x+ 3)
Questão 7 (1 ponto): Abaixo seguem algumas medições da relação entre temperatura e a densidade da
água
temperatura (ºC) 0 4 5 10 15 20
ρ(g/cm3) 0.99984 0.99997 0.99996 0.99970 0.99910 0.99820
A partir da interpolação polinomial de quatro dados mais próximos da temperatura 3ºC determime uma
aproximação para
dρ
dT
(3).
a) 1,189× 10−5g/cm3 ºC
b) 1,277× 10−5g/cm3 ºC
c) 1,314× 10−5g/cm3 ºC
d) 1,406× 10−5g/cm3 ºC
e) 1,445× 10−5g/cm3 ºC
Questão 8 (1 ponto): Os dados a seguir contêm a informação sobre a tajetória de um corpo no plano.
t (s) 0 1 2 3 4 5 6 7 8 9 10
x(cm) 1.03 1.66 2.22 2.67 2.95 3.03 2.91 2.60 2.13 1.55 0.91
y(cm) -2.33 -2.76 -3.94 -5.52 -7.04 -8.07 -8.31 -7.68 -6.38 -4.77 -3.33
A partir dos spline cúbicos do tipo completo construídos para cada coordenada com x′(0) = 0, 64, x′(10) =
−0, 64, y′(0) = 0 e y′(10) = 1, 22, determine a distância aproximada desse objeto à origem no instante
t = 0, 5s.
a) 2,43cm
b) 2,51cm
c) 2,66cm
d) 2,79cm
e) 2,89cm
Questão 9 (1 ponto): A partir da interpolação spline cúbica s(x) do tipo natural para o conjunto de dados
xi 0 0.1 0.2 0.3 0.4 0.5
yi 1 0.905 0.670 0.407 0.202 0.0821
o valor x∗ para o qual s (x∗) = 0, 5 vale aproximadamente:
a) 0,232946
b) 0,240284
c) 0,251937
d) 0,263292
e) 0,287253
Questão 10 (1 ponto): Utilize o seguinte conjunto de dados
xi 1.00 1.56 2.11 2.67 3.22 3.78 4.33 4.89 5.44 6.00
fi -1.12 1.78 3.04 4.98 6.63 6.78 6.99 5.99 5.81 4.09
para realizar o ajuste de mínimos quadrados do modelo
φ(x) := a1 ln(x) + a2 cos(x).
O valor aproximado da função ajustada aos dados em x = 5 vale aproximadamente:
a) 5,530
b) 5,625
c) 5,781
d) 5,888
e) 5,975
PROVA 2 GUIDI RESOLVIDA/prova/Códigos/.DS_Store
__MACOSX/PROVA 2 GUIDI RESOLVIDA/prova/Códigos/._.DS_Store
PROVA 2 GUIDI RESOLVIDA/prova/Códigos/Ajuste.PolOrtog.sci
function y=polfit(data,grad)
 // Esta função calcula o ajuste de mínimos quadrados de um polinômio de grau definido 
 // pela variável de entrada grad aos dados definidos pela variável de entrada data. O
 // método utilizado nessa função evita os problemas de condicionamento quando as funções
 // utilizadas no ajuste são polinômios.
 // O dados de entrada devem estar formatados como uma matriz 2Xn onde a 1ª linha contém
 // as abscissas dos pontos de ajuste e a 2ª linha as ordenadas desses pontos.
 // A variável de saída é um objeto do tipo polinômio.
 n=size(data,2); // quantidade de pontos a serem interpolados
 b=zeros(n,1); // inicialização dos coeficientes b.
 c=zeros(n,1); // inicialização dos coeficientes c.
 xi=data(1,:)';
 fi=data(2,:);
 
 y=(1/n)*fi*ones(fi'); // inicialização da saída. Primeiro coeficiente -- grau zero.
 
 b(1)=(1/n)*(xi'*ones(xi));
 c(1)=0;
 vecpol(1)=poly([-b(1) 1],'x','c');
 phi_1=horner(vecpol(1),xi);
 a(1)=(fi*phi_1)/(norm(phi_1,2)^2);
 y=y+a(1)*vecpol(1); // adição do termo de grau 1.
 
 b(2)=( (xi.*phi_1)'*phi_1 )/(norm(phi_1,2)^2);
 c(2)=(1/n)*( (xi.*phi_1)'*ones(xi) );
 vecpol(2)=poly([-b(2) 1],'x','c')*vecpol(1)-c(2);
 phi_2=horner(vecpol(2),xi);
 a(2)=(fi*phi_2)/(norm(phi_2,2)^2);
 y=y+a(2)*vecpol(2); // adição do termo de grau 2.
 
 for i=3:grad
 phi_im=horner(vecpol(i-1),xi);
 phi_imm=horner(vecpol(i-2),xi);
 b(i)=( (xi.*phi_im)'*phi_im )/(norm(phi_im,2)^2);
 c(i)=((xi.*phi_im)'*phi_imm)/(norm(phi_imm,2)^2);
 vecpol(i)=poly([-b(i) 1],'x','c')*vecpol(i-1)-c(i)*vecpol(i-2);
 phi_i=horner(vecpol(i),xi);
 a(i)=(fi*phi_i)/(norm(phi_i,2)^2);
 y=y+a(i)*vecpol(i); // adição dos termos de grau 3 em diante até o grau grad.
 end
 
endfunction
PROVA 2 GUIDI RESOLVIDA/prova/Códigos/AlgLin.Gauss-pp.sci
function x=gausspp(C)
// A matriz "C" deve ser a matriz completa de um sistema de equações lineares.
// O programa possui duas partes: o escalonamento da matriz e o processo de 
// substituição.
// Variáveis auxiliares
//
// n -> número de linhas da matriz completa.
// m -> número de colunas da matriz completa.
// i -> indexador de linha.
// j -> indexador de coluna.
//
// pivot -> guarda o elemento pivô.
// pivot_line -> guarda o índice de linha de um elemento pivô.
// per_line -> variável booliana que indica a necessidade de trocar uma linha.
// aux_line -> guarda uma das linhas a ser trocada.
 
n=size(C,1) // Número de linhas de C.
m=size(C,2) // Número de colunas de C.
//
// Escalonamento da matriz de coeficientes
//
for j=1:(n-1)
 pivot=C(j,j) // Inicialmente consideramos o elemento da diagonal como o pivô.
 per_line=%F // Inicialização da variável booliana.
 
 // verificação da necessidade de troca de linhas
 [pivot_cand,pivot_line]=max(abs(C(j+1:n,j))) // O candidato a novo pivô.
 per_line=pivot_cand>2*abs(pivot) // O candidato é maior que o pivô atual?
 // "Pivoteamento" parcial
 if per_line then
 pivot_line=pivot_line+j // Índice de linha do novo pivô.
 pivot=C(pivot_line,j) // Atualizamos o pivô.
 aux_line=C(j,:) // aux_line guarda a linha mais "alta".
 C(j,:)=C(pivot_line,:) // Troca da linha.
 C(pivot_line,:)=aux_line // Troca da linha.
 end
 // Eliminação dos elementos na coluna, abaixo do pivô.
 C(j+1:n,j+1:m)=C(j+1:n,j+1:m) - C(j,j+1:m).*.(C(j+1:n,j)/pivot) 
end
//
// Substituição
//
x(n,1:m-n)=C(n,n+1:m)/C(n,n)
for i=n-1:-1:1 
 x(i,1:m-n)=(C(i,n+1:m)-C(i,i+1:n)*x(i+1:n,1:m-n))/C(i,i)
end
endfunction
PROVA 2 GUIDI RESOLVIDA/prova/Códigos/AlgLin.Gauss-Seidel.sci
function [x]=gseidel_solv(A,norma,tol,Nmax)
// Calcula a solução aproximada de um sistema de equações lineares 
// via método Gauss-Seidl.
// O sistema a*x=b deve estar na forma de uma matriz completa A:=[a b].
// A matriz de coeficientes "a" é decomposta como a=B-C onde "B" é a matriz
// diagonal formada pela diagonal principal de "a".
// Variáveis de entrada
// A -> matriz completa de um sistema de equações lineares.
// norma -> norma matricial utilizada nas estimativas de convergência.
// tol -> tolerância na diferença entre duas
aproximações sucessivas.
// Nmax -> número máximo de iteradas.
// Variável de saída
// x -> solução aproximada do sistema.
// Variáveis auxiliares
// n -> número de linhas no sistema.
// m -> número de colunas no sistema.
// InvB -> inversa de B.
// C -> matriz C=B-a.
// InvB_b -> produto InvB*b.
// InvB_C -> produto InvB*C.
// x0 -> solução aproximada do sistema na iterada anterior. 
// segue -> variável booliana. Controla a execução das iteradas.
// contador -> contador do número de iteradas.
// Construção das matrizes utilizadas na iteração
n=size(A,1)
m=size(A,2)
invB=zeros(n,n)
for i=1:n
 invB(i,i)=1/A(i,i)
end
C=-A(:,1:n)
for i=1:n
 C(i,i)=0
end
invB_b=zeros(n,m-n)
for i=1:n
 invB_b(i,1:m-n)=invB(i,i)*A(i,n+1:m)
end
invB_C=zeros(n,n)
for i=1:n
 invB_C(i,1:n)=invB(i,i)*C(i,1:n)
end
// Aproximação inicial e inicialização das demais variáveis. 
x0=zeros(n,m-n)
segue=%T
contador=0
// Iteração
while segue
 contador=contador+1
 for i=1:n
 x(i)=invB_b(i)+invB_C(i,:)*x0
 end
 segue=~(norm(x-x0,norma)<=tol|contador==Nmax)
 x0=x
end
if contador>=Nmax then 
 warning('Não houve convergência.')
end
endfunction
PROVA 2 GUIDI RESOLVIDA/prova/Códigos/AlgLin.Jacobi.sci
function [x]=jacobi_solv(A,norma,tol,Nmax)
// Calcula a solução aproximada de um sistema de equações lineares 
// via método de Jacobi.
// O sistema a*x=b deve estar na forma de uma matriz completa A:=[a b].
// A matriz de coeficientes "a" é decomposta como a=B-C onde "B" é a matriz
// diagonal formada pela diagonal principal de "a".
// Variáveis de entrada
// A -> matriz completa de um sistema de equações lineares.
// norma -> norma matricial utilizada nas estimativas de convergência.
// tol -> tolerância na diferença entre duas aproximações sucessivas.
// Nmax -> número máximo de iteradas.
// Variável de saída
// x -> solução aproximada do sistema.
// Variáveis auxiliares
// n -> número de linhas no sistema.
// m -> número de colunas no sistema.
// InvB -> inversa de B.
// C -> matriz C=B-a.
// InvB_b -> produto InvB*b.
// InvB_C -> produto InvB*C.
// x0 -> solução aproximada do sistema na iterada anterior. 
// segue -> variável booliana. Controla a execução das iteradas.
// contador -> contador do número de iteradas.
// Construção das matrizes utilizadas na iteração
n=size(A,1)
m=size(A,2)
invB=zeros(n,n)
for i=1:n
 invB(i,i)=1/A(i,i)
end
C=-A(:,1:n)
for i=1:n
 C(i,i)=0
end
invB_b=zeros(n,m-n)
for i=1:n
 invB_b(i,1:m-n)=invB(i,i)*A(i,n+1:m)
end
invB_C=zeros(n,n)
for i=1:n
 invB_C(i,1:n)=invB(i,i)*C(i,1:n)
end
// Aproximação inicial e inicialização das demais variáveis. 
x0=zeros(n,m-n)
segue=%T
contador=0
// iteração
while segue 
 contador=contador+1
 x=invB_b+invB_C*x0
 segue=~(norm(x-x0,norma)<=tol|contador==Nmax)
 x0=x
end
if contador>=Nmax then 
 warning('Não houve convergência.')
end
endfunction
PROVA 2 GUIDI RESOLVIDA/prova/Códigos/fsolve_nr.sci
function [z,fz,niter]=fsolve_nr(x0,%fun,%dfun,tol,Nmax) // Método Newton-Raphson
// Variáveis de entrada
// x0 -> aproximação inicial.
// %fun -> função.
// %dfun -> derivada (ou matriz jacobiana) da função. Parâmetro opcional.
// tol -> tolerância na diferença relativa entre duas aproximações 
// sucessivas.
// Nmax -> limite superior para o número de iteradas.
// Variáveis de saída
// z -> solução aproximada.
// fz -> valor de %fun em z.
// niter -> número de iteradas.
// Variáveis auxiliares
// dim -> dimensão do sistema de equações.
// contador -> guarda o número de iteradas realizadas.
// dernum -> variável booliana. É igual a %F se %dfun estiver presente.
// df0 -> valor da derivada (ou determinante da jacobiana) em x0.
// det_df0 -> determinante da matriz jacobiana em x0.
// segue -> variável booliana. Controla o fluxo de execução das iteradas.
// x1 -> aproximação na iterada seguinte.
// cr_conv -> variável booliana. É igual a %T se ocorrer convergência. 
// abs_dif1 -> diferença absoluta entre duas aproximações sucessivas.
// abs_dif0 -> diferença absoluta entre duas aproximações sucessivas na iterada
// anterior.
// Inicialização das variáveis
dim=size(x0,1)
contador=1
dernum=~isdef('%dfun','local')
// Caso não tenha sido definida na chamada da função, a 
// tolerância recebe o valor 1e-10.
if ~isdef('tol','local') then
 tol=1e-10
end
// Caso não tenha sido definida na chamada da função, a 
// Nmax recebe o valor 100.
if ~isdef('Nmax','local') then
 Nmax=100
end
// A primeira iterada é calculada fora do laço principal. 
// Isto é necessário para avaliar a evolução do resíduo 
// já na 1ª iteração.
if dernum then
 warning('As derivadas serão estimadas numericamente.')
 warning('Existe a possibilidade de ocorrerem erros significativos.')
 df0=numderivative(%fun,x0)
else 
 df0=%dfun(x0)
end
det_df0=det(df0)
segue=det_df0<>0
if segue then
 x1=x0-df0\%fun(x0)
else
 warning('A aproximação não pôde ser obtida.')
 warning('Verifique as aproximações iniciais ou o condicionamento.')
end
// "Descomente" a linha abaixo se quiseres a sequência de iterações no console:
//mprintf('Iteração %d \t aproximação: %.18e\n',contador,x1)
abs_dif0=abs(x0-x1)
x0=x1
// Laço principal
if dernum then
 df0=numderivative(%fun,x0)
 det_df0=det(df0)
 segue=det_df0<>0
 while segue
 contador=contador+1
 x1=x0-df0\%fun(x0)
 abs_dif1=norm(x0-x1,1)
 // "Descomente" a linha abaixo se quiseres a sequência de iterações
 // no console:
 //mprintf('Iteração %d \t aproximação: %.18e\n',contador,x1)
 x0=x1
 df0=numderivative(%fun,x0)
 cr_conv=abs_dif1<=tol*norm(x1,1)|(abs_dif1>=abs_dif0 & contador>=4)
 segue=~(cr_conv|contador>=Nmax|det_df0==0)
 abs_dif0=abs_dif1
 end
else
 df0=%dfun(x0)
 det_df0=det(df0)
 segue=det_df0<>0
 while segue
 contador=contador+1
 x1=x0-df0\%fun(x0)
 abs_dif1=norm(x0-x1,1)
 // "Descomente" a linha abaixo se quiseres a sequência de iterações
 // no console:
 //mprintf('Iteração %d \t aproximação: %.18e\n',contador,x1)
 x0=x1
 df0=%dfun(x0)
 cr_conv=abs_dif1<=tol*norm(x1,1)|(abs_dif1>=abs_dif0 & contador>=4)
 segue=~(cr_conv|contador>=Nmax|det_df0==0)
 abs_dif0=abs_dif1
 end
end
// Saída de dados
// Mensagens de aviso
if (det_df0==0) & (~cr_conv) then
 if dim==1 then
 warning('A derivada vale zero na aproximação. Não é possível continuar.')
 else
 warning('A jacobiana é singular na aproximação. Não é possível continuar.')
 end
end
 
if contador==Nmax then 
 warning(msprintf('\n A exatidão não foi alcançada em %d iterações.',Nmax))
end
z=x1
fz=%fun(z)
niter=contador
endfunction
PROVA 2 GUIDI RESOLVIDA/prova/Códigos/Icon
__MACOSX/PROVA 2 GUIDI RESOLVIDA/prova/Códigos/._Icon
PROVA 2 GUIDI RESOLVIDA/prova/Códigos/Interp.Lagrange.sci
function [y]=lagrange_interp(data)
 
 // Essa função recebe uma matriz 2xn "data" cujas colunas correspondem aos
 // pares (x_i,f_i) de um conjunto de pontos. O polinômio é construído a
 // partir da forma de Lagrange. A saída "y" é um objeto da classe polinômio.
// variáveis auxiliares
// 
// n -> quantidade de dados.
// aux -> 1ª coordenada dos pontos de interpolação.
// C -> constantes normalizadoras dos polinômios de Lagrange.
// Lpol -> matirz com os polinômios de Lagrange.
// Inicialização de variáveis
 n=size(data,2);
 C=ones(1,n);
 
// determinação das constantes normalizadoras
 for j=1:n
 for i=1:n
if j~=i then
 C(j)=C(j)/(data(1,j)-data(1,i));
 end;
 end;
 end;
 
// construção dos polinômios de Lagrange
 for j=1:n
 aux=data(1,:);
 aux(j)=[];
 Lpol(j)=C(j)*poly(aux,'x');
 end;
 
// construção do polinômio interpolante
 y=data(2,:)*Lpol;
 
endfunction
 
PROVA 2 GUIDI RESOLVIDA/prova/Códigos/Interp.sp_val.sci
function [y]=sp_val(sp,xi,x)
 // Calcula o valor de um spline em um ponto (ou matriz linha de pontos) x.
 // 
 // A entrada sp é uma matriz com os coeficientes de um spline (a j-ésima 
 // coluna corresponde à potência j-1) e a i-ésima linha corresponde ao 
 // i-ésimo polinômio.
 // A entrada xi corresponde às abscissas dos pontos de interpolação.
 // A saída y contém o valor do spline calculado em x.
 
 n=size(sp,1); // número de intervalos (polinômios)
 grau=size(sp,2);
 // o número de intervalos deve ser igual ao número de polinômios
 if n~=(size(xi,2)-1) then 
 error('Dimensões incompatíveis') 
 end;
 
 index=dsearch(x,xi);
 
 xp=xi(index);
 
// y=sp(index,1)'+(x-xp).*(sp(index,2)'+(x-xp).*(sp(index,3)'+(x-xp).*sp(index,4)'));
 y=sp(index,grau)';
 
 for i=grau-1:-1:1
 y=sp(index,i)'+(x-xp).*y;
 end;
 
endfunction
PROVA 2 GUIDI RESOLVIDA/prova/Códigos/Interp.Spline3.sci
function [y]=spline3_interp(data,varargin)
 
 // Essa função recebe uma matriz cujas colunas correspondem aos pares
 // (x_i,f_i) de um conjunto de pontos. A entrada deve ser uma matriz na 
 // qual a 1ª linha contém os valores x_i e a 2ª linha os valores f_i.
 // Se houver mais de um argumento nos dados de entrada, o segundo é
 // utilizado como o valor da derivada na fronteira esquerda, df1; e o 
 // terceiro como o valor da derivada na fronteira direita, dfn. 
 // A saída é uma matriz (n-1)x4 cujas colunas correspondem aos 
 // coeficientes de um spline cúbico natural (caso exista apenas um 
 // único argumento) ou um spline cúbico completo ou quase completo.
 
 n=size(data,2); // quantidade de pontos a serem interpolados.
 y=zeros(n-1,4); // inicialização da saída.
 CoefC=zeros(n,n); // matriz dos coeficientes para o sistema dos termos quadráticos.
 ColF=zeros(n,1); // coluna com os termos constantes para o mesmo sistema.
 H=zeros(n-1,1); // coluna com os espaçamentos entre os valores x_i.
 A=data(2,:); // linha com os valores f_i.
 A=A';
 sp_nat=(length(varargin)==0); // spline natural ?
 
 if sp_nat then
 // Construção do sistema para os termos quadráticos.
 // Caso spline natural.
 CoefC(1,1)=1; // condição associada ao spline natural.
 CoefC(n,n)=1; // condição associada ao spline natural. Obs: ColF=0 no primeiro e último termos.
 H(1)=data(1,2)-data(1,1);
 for i=2:n-1
 H(i)=data(1,i+1)-data(1,i);
 CoefC(i,i-1)=H(i-1);
 CoefC(i,i)=2*(data(1,i+1)-data(1,i-1));
 CoefC(i,i+1)=H(i);
 ColF(i)=3*((A(i+1)-A(i))/H(i)-(A(i)-A(i-1))/H(i-1));
 end;
 else
 // Construção do sistema para os termos quadráticos.
 // Caso spline completo ou quase completo.
 df1=varargin(1);
 dfn=varargin(2);
 // Construção do sistema para os termos quadráticos.
 H(1)=data(1,2)-data(1,1);
 CoefC(1,1)=2*H(1); // Estas três linhas definem a 1 equação
 CoefC(1,2)=H(1); // do sistema para os coeficientes 
 ColF(1)=3*((A(2)-A(1))/H(1)-df1); // quadráticos.
 for i=2:n-1
 H(i)=data(1,i+1)-data(1,i);
 CoefC(i,i-1)=H(i-1);
 CoefC(i,i)=2*(data(1,i+1)-data(1,i-1));
 CoefC(i,i+1)=H(i);
 ColF(i)=3*((A(i+1)-A(i))/H(i)-(A(i)-A(i-1))/H(i-1));
 end;
 CoefC(n,n-1)=H(n-1); // Estas três linhas definem a última equação 
 CoefC(n,n)=2*H(n-1); // do sistema para os coeficientes
 ColF(n)=-3*((A(n)-A(n-1))/H(n-1)-dfn);// quadráticos. 
 end;
 
 // solução do sistema para os termos quadráticos.
 C=CoefC\ColF;
 
 // translação dos termos das matrizes coluna A e C (simplifica a determinação das matrizes B e D).
 Ctrans_dir=C;
 Ctrans_dir(1)=[];
 C(n)=[];
 Atrans_dir=A;
 Atrans_dir(1)=[];
 A(n)=[];
 
 // termos lineares.
 B=(Atrans_dir-A)./H - (H/3).*(2*C+Ctrans_dir);
 
 // termos cúbicos
 D=(Ctrans_dir-C)./(3*H);
 
 // montagem da saída.
 y(:,1)=A;
 y(:,2)=B;
 y(:,3)=C;
 y(:,4)=D;
 
endfunction
 
__MACOSX/PROVA 2 GUIDI RESOLVIDA/prova/._Códigos
PROVA 2 GUIDI RESOLVIDA/prova/Icon
__MACOSX/PROVA 2 GUIDI RESOLVIDA/prova/._Icon
PROVA 2 GUIDI RESOLVIDA/prova/provasolved.pdf
 
PROVA 2 GUIDI RESOLVIDA/prova/q1.sce
data = [500 550 600 650 700 750;4.3 4.96 5.56 6.37 7.49 6.68]
q1=horner(lagrange_interp(data),610)
A=[ 3 -2 -1 4 2;
 -1 1 1 2 -4;
 -2 -9 -1 4 2;
 4 2 -1 4 2;
 1 -1 1 1 1]
b= [5 4 3 2 1]'
q2= A\b
rq2=q2(2)+q2(4)
A=[ 3 -2 -1 4 2;
 -1 1 1 2 -4;
 -2 -9 -1 4 2;
 4 2 -1 4 2;
 1 -1 1 1 1]
b= [5 4 3 2 1]'
q2= A\b
rq2=q2(2)+q2(4)
PROVA 2 GUIDI RESOLVIDA/prova/q10.sce
xi10=[1 1.56 2.11 2.67 3.22 3.78 4.33 4.89 5.44 6]'
fi10=[-1.12 1.78 3.04 4.98 6.63 6.78 6.99 5.99 5.81 4.09]'
function y=phi1(x)
 y=log(x)
endfunction
function y=phi2(x)
 y=cos(x)
endfunction
Phi=[phi1(xi10) phi2(xi10)]
a10=(Phi'*Phi)\(Phi'*fi10)
q10=a10(1)*phi1(5)+a10(2)*phi2(5)
PROVA 2 GUIDI RESOLVIDA/prova/q2.sce
A=[ 3 -2 -1 4 2;
 -1 1 1 2 -4;
 -2 -9 -1 4 2;
 4 2 -1 4 2;
 1 -1 1 1 1]
b= [5 4 3 2 1]'
q2= A\b
rq2=q2(2)+q2(4)
PROVA 2 GUIDI RESOLVIDA/prova/q3.sce
n3=25
a3=zeros(n3,n3)
a3(1,1)=-2
a3(1,2)=10
a3(n3,n3-1)=8
a3(n3,n3)=1
for i=2:24
 a3(i,i-1)=4
 a3(i,i)=-5
 a3(i,i+1)=4
end
q3=3.4*10^-8*(norm(a3,1)*norm(inv(a3),1))
x04=[-.5 2]'
function y=f3(x)
 y(1)= (x(1)-1)^4+(x(2)-2)^4-16
 y(2)=x(1)^2+x(2)^2-4
endfunction
function y=j3(x)
 y(1,1)=4*(x(1)-1)^3
 y(1,2)=4*(x(2)-2)^3
 y(2,1)=2*x(1)
 y(2,2)=2*x(2)
endfunction
[z,fz,niter] = fsolve_nr(x04,f3,j3,,5)
sol=z(1)*z(2)
PROVA 2 GUIDI RESOLVIDA/prova/q4.sce
x04=[-.5 2]'
function y=f3(x)
 y(1)= (x(1)-1)^4+(x(2)-2)^4-16
 y(2)=x(1)^2+x(2)^2-4
endfunction
function y=j3(x)
 y(1,1)=4*(x(1)-1)^3
 y(1,2)=4*(x(2)-2)^3
 y(2,1)=2*x(1)
 y(2,2)=2*x(2)
endfunction
[z,fz,niter] = fsolve_nr(x04,f3,j3,,5)
sol=z(1)*z(2)
PROVA 2 GUIDI RESOLVIDA/prova/q5.sce
x05=[.7 1.5]'
function y=f5(x)
 y(1)= ((x(1))^3)*cos(x(2))-x(1)*log(x(1)*x(2))
 y(2)= (x(2)^3)*cos(x(1)*x(2))-(x(1)+x(2))*log(x(1)+x(2))
endfunction
function y=j5(x)
 y(1,1)=3*x(1)^2*cos(x(2))-(log(x(1)*x(2))+1)
 y(1,2)=-x(1)^3*sin(x(2))-x(1)*x(2)^-1
 y(2,1)=-x(2)^4*sin(x(1)*x(2))-log(x(1)+x(2))-1
 y(2,2)=3*x(2)^2*cos(x(1)*y(1))-x(2)^3*x(1)*sin(x(1)*x(2))-(1+log(x(1)+x(2)))
endfunction
[z5,fz,niter] = fsolve_nr(x05,f5,j5)
sol=z5(2)
PROVA 2 GUIDI RESOLVIDA/prova/q7.sce
data7= [0 4 5 10;
 .99984 .99997 .99996 .99970]
qp7= lagrange_interp(data7)
dqp7=derivat(qp7)
q7=horner(dqp7,3)
PROVA 2 GUIDI RESOLVIDA/prova/q8.sce
x8i=[1.03 1.66 2.22 2.67 2.95 3.03 2.91 2.60 2.13 1.55 0.91]
y8i=[-2.33 -2.76 -3.94 -5.52 -7.04 -8.07 -8.31 -7.68 -6.38 -4.77 -3.33]
t8i=[0 1 2 3 4 5 6 7 8 9 10]
dy8=[0,1.22]
dx8=[0.64,-0.64]
sply8=splin(t8i,y8i,"clamped",dy8)
splx8=splin(t8i,x8i,"clamped",dx8)
qy8=interp(0.5,t8i,y8i,sply8)
qx8=interp(0.5,t8i,x8i,splx8)
q8=sqrt((horner(qy8,0.5))^2+(horner(qx8,0.5))^2)
PROVA 2 GUIDI RESOLVIDA/prova/q9.sce
x9i=[0 0.1 0.2 0.3 0.4 0.5]
y9i=[1 .905 .670 .407 .202 .0821]
d=splin(x9i,y9i,"natural")
[s]=interp(0.263292,x9i,y9i,sply9,'natural')
disp(s)
__MACOSX/PROVA 2 GUIDI RESOLVIDA/._prova
PROVA 2 GUIDI RESOLVIDA/QUESTIONARIO MOODLE/ex 1 lista 3.sce
n=50
A=zeros(n,n)
A(1,:)=n:-1:1
A(n,:)=1:1:n
for i=2:n-1
 A(i,i-1)=2
 A(i,i)=-4
 A(i,i+1)=3
end
//norm(A,2)=a
//inv(A)=B
//norm(B,2)=b
sol=(norm(A,'fro')*norm(inv(A),'fro')*(10^-9))
PROVA 2 GUIDI RESOLVIDA/QUESTIONARIO MOODLE/ex 2 lista 3.sce
n=150
h=1/(n-1)
A=zeros(n,n)
A(1,1)=1
A(n,n)=1
for i=2:n-1
 A(i,i-1)=1
 A(i,i)=((h^2)+((h^2)*cos(2*(i-1)*h)-2))
 A(i,i+1)=1
end
k=(norm(A,'fro')*norm(inv(A),'fro'))
a=(10^(-16))
b=(10^(-16))
sol=(k/(1-k*a))*(a+b)
PROVA 2 GUIDI RESOLVIDA/QUESTIONARIO MOODLE/ex1list3.sce
//for i = 1:50
// Y(1,i) = 51 - i
//end
//for i = 2:49
// Y(i,i-1) = 2; Y(i,i) = -4; Y(i,i+1) = 3;
//end
//for i = 1:50
// Y(50,i) = i
//end
//k=norm(Y,'fro')*norm(inv(Y),'fro')
//EXERCICIO 2 (TA BOM MIGUEL?)
h=149^-1
B(1,1) = 1
for i = 2:149
 B(i,i-1) = 1; B(i,i) = h^2+h^2*cos(2*(i-1)*h)-2; B(i,i+1) = 1;
end
B(150,150) = 1
c(1) = 0
for i = 2:149
 c(i) = h^2*exp(-(i-1)*h)
end
c(150) = 0
k=norm(B,'fro')*norm(inv(B),'fro')
o=k*2*(10^-16)/(1-k*10^-16)
PROVA 2 GUIDI RESOLVIDA/QUESTIONARIO MOODLE/Icon
__MACOSX/PROVA 2 GUIDI RESOLVIDA/QUESTIONARIO MOODLE/._Icon
PROVA 2 GUIDI RESOLVIDA/QUESTIONARIO MOODLE/L4Q1.sce
x0=0.76
function y=f(x)
 y(1)= 5*sin((x(1))^2)-2*cos(x(2))+1
 y(2)= x(2)+0.8*cos(4.41*x(2))-0.75*sin(x(1))
endfunction
function y=df(x)
 y(1,1)=2*cos((x(1)^2)^2)
 y(1,2)=2*sin(x(2))
 y(2,1)=-0.75*cos(x(1))
 y(2,2)=1-0.8*4.41*sin(4.41*x(2))
 
endfunction
[z,dz,niter] = fsolve_nr(x0,f,df)
PROVA 2 GUIDI RESOLVIDA/QUESTIONARIO MOODLE/q1l4.sce
x0=[0.5 0.5]'
function y=f(x)
 y(1)= 5*sin((x(1))^2)-2*cos(x(2))+1
 y(2)= x(2)+0.8*cos(4.41*x(2))-0.75*sin(x(1))
endfunction
function y=df(x)
 y(1,1)=2*cos((x(1)^2)^2)
 y(1,2)=2*sin(x(2))
 y(2,1)=-0.75*cos(x(1))
 y(2,2)=1-0.8*4.41*sin(4.41*x(2))
 
endfunction
[z,dz,niter] = fsolve_nr(x0,f,df)
PROVA 2 GUIDI RESOLVIDA/QUESTIONARIO MOODLE/q2l3 (2).sce
n=150
a=10^-16
b=10^-16
h=1/n-1
Y=zeros(n,n)
Y(1,1)=1
Y(150,150)=1
for i=2:149
 y(i-1,i-1)=1
 y(i+1,i+1)=1
 y(i,i)=h^2*cos(2*(i-1)*h)
end
PROVA 2 GUIDI RESOLVIDA/QUESTIONARIO MOODLE/Q2L3.sce
n=150
a=10^-16
b=10^-16
h=1/n-1
Y=zeros(n,n)
Y(1,1)=1
Y(150,150)=1
for i=2:149
 Y(i,i-1)=1
 Y(i,i+1)=1
 Y(i,i)=h^2+h^2*(cos(2*(i-1)*h))-2
end
k=norm(A,'fro')*norm(inv(A),'fro')
erx=k/(1-k*a)*(a+b)
PROVA 2 GUIDI RESOLVIDA/QUESTIONARIO MOODLE/q3.sce
for i = 1:50
 Y(1,i) = 51 - i
end
for i = 2:49
 Y(i,i-1) = 2; Y(i,i) = -4; Y(i,i+1) = 3;
end
for i = 1:50
 Y(50,i) = i
end
k=norm(Y,'fro')*norm(inv(Y),'fro')*10^-9
PROVA 2 GUIDI RESOLVIDA/QUESTIONARIO MOODLE/Q3L3.sce
N=[-2 0 -2 0 2 0 0;
 0 -1 -1 3 0 0 0;
 -1 0 0 2 -3 2 0;
 0 0 0 -1 0 -1 3]
 
R=[-1.5 -0.91 -1.2 1.6 -0.24 0.88 1.3]'
T=(N*N')\N*R
PROVA 2 GUIDI RESOLVIDA/QUESTIONARIO MOODLE/Q3MOODLE.sce
for (i=1:50)
 A(1,i)=51-i
end
for (j=2:49)
 A(j,j-1)=2
 A(j,j)=-4
 A(j,j+1)=3
end
for (i=1:50)
 A(50,i)=i
end
k=(norm(A,'fro')*norm(inv(A),'fro'))*10^-9
__MACOSX/PROVA 2 GUIDI RESOLVIDA/._QUESTIONARIO MOODLE
__MACOSX/._PROVA 2 GUIDI RESOLVIDA

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando