# Gabarito resumido da Avaliação I

#1. (Exercício 1.4.4 das notas de aula). O exercício pede para usar a aproximação polinomial
# obtida no Exercício 1.4.2 das mesmas notas, para obter uma aproximação para a solução de equação 
# tg(t)-150=0.
# 
# Resolução
# No no Exercício 1.4.2 é dada uma aproximação poliLag(u) para tg(u), apenas para u entre o e 1. Por isso 
# é sugerido o uso da identidade triginométrica tg(1+u)=(tg(1)+tg(u))/(1-tg(1)tg(u)), porque 
# um pouco de noçao de trigonometria nos diz que a solução da equação dada está próxima de pi/2.
print("aproximacao para pi/2");pi/2

#-------- Segue os cógigos copiados do link disponível no referido exemplo:
F<-function(s,u){ 1+u^2 } # Condição inicial y(0)=0, y'=1+y^2=F(t,y). 

n=10
a=0; b=1
h=(b-a)/n 

t=seq(a,b,by=h)  # vetor t=(t0, t1,...,tn)
w=0*t 

w[1]=0 # condição incial y(0)=0

for (i in 1:n){ # Runge-Kutta4 para obter aproximações para 10 valores de tg(t_i)
k1=F(t[i],w[i])
k2=F(t[i]+h/3,w[i]+h*k1/3)
k3=F(t[i]+2*h/3,w[i]-h*k1/3+h*k2)
k4=F(t[i]+h,w[i]+h*(k1-k2+k3))
 w[i+1]=w[i]+h*(k1+3*(k2+k3)+k4)/8
}

plot(t,w,col="red")

#------------ Interpolação polinomia
n=length(w)
L<-function(i,s){
p=1
for (j in 1:n){
if ( i!=j){p=p*(s-t[j])/(t[i]-t[j])}
}
p
}

poliLag<-function(s){ # Polinômio na forma de Lagrange
p=0
for ( i in 1:n){p=p+w[i]*L(i,s)}
p
}

curve(poliLag,a,b)
points(t,w,col="red")

#-------------------------------------------------------------------------
# Queremos resolver a equação tg(t)-150=0, mas não podemos usar a 
# função tangente nem sua inversa. Usaremos então a aproximação que obetmos 
# por meio de interpolação e do método de Runge-Kutta.
# Note que o problema proposto pode ser escrito como
#     t(t)=tg(1+u)= (1+tg(u))/(1-tg(u))=150. 
# Usando a aproximação polinomial sugerida escrevemos a equação, de forma aproximada como 
# (poliLag(1)+poliLag(u))/(1-poliLag(1)poliLag(u))-150=0
# 
# Que fica melhor escrita sem fração como 
#
# f(u)=(poliLag(1)+poliLag(u))-150(1-poliLag(1)poliLag(u))=0
#
# Depois disso a dica é para utilizar conceitos do capítulo das notas de aula que segue o exercício.
# O referido capítuo é sobre máximos e mínimos de funções.
# Por isso defiimos a função f(u) como segue
f<-function(u){
(poliLag(1)+poliLag(u))-150*(1-poliLag(1)*poliLag(u))
}

curve(f,0,1,col="red") # raiz aproximada x=0.5


# Isso nos diz que a solução para o problema prosto pode ser vista gráficamente.
# Como o capítulo em questão trata de localização de pontos de mímino e depois usa isso para resolver equações, na Seção 2.2.
#
# Optamos então por resolver a equação dada por meio do método de Newton, usando 
# a função que obtemos a pouco.

df<-function(s){
h=10^(-5)
return((f(s+h)-f(s-h))/(2*h))} # Aproximação para a derivada d
# Método de Newton (aproximado)

x=0.5
for ( i in 1:10){x=x-f(x)/df(x)}
print("Aproximacao para u");x
print("Aproximacao para f(u)");f(x)
print("Raiz aproximada de  tg(t)-150=0");1+x

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: