Exercício 1 Prova 1

Joao_Bianco · updated July 28, 2021 · R
F<-function(s,u){
    1/(1+u^2)
}

# Condição inicial y(0)=0, y'=1/(1+t^2)=F(t,y). 
n=20
a=147; b=151
h=(b-a)/n 

t=seq(a,b,by=h)
w=0*t 

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

for (i in 1:n){ # Runge-Kutta4
    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
}

# Sabemos que y(t)=arctan(t)
f<-function(s){
    atan(s)
}

curve(f,a,b,col="blue",ylab="arctg(x)") #Grafico apresentando a "curva" real de arctg(x)

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

#--- Interpolação ---

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){
    p=0
    for ( i in 1:n){
        p=p+w[i]*L(i,s)
    }
    p
}

curve(poliLag,a,b) #Grafico apresentando o grafico obtido.
points(t,w,col="red")

Erro<-function(s){ #Aqui podemos ver o erro pequeno no ponto 150, o qual deveriamos aproximar o valor.
    f(s)-poliLag(s)
}
curve(Erro,a,b,ylab="arctg(x)-poliLag(x)")
points(t,f(t)-w,col="red")

Comments

Please sign up or log in to contribute to the discussion.