# Da da a função f(s)=sin((1+s^2)^(1/2)*ln(2)).
# Calcular a integral de f(s), pra s entre 0 e 1.
import numpy as np # para usar expressões matemáticas
import matplotlib.pyplot as plt # para fazer gráficos
# Primeira forma de resolução: Método de Euler para resover numericamente a equação
# u'(s)=f(s), u(0)=0. Calcular u(1), que é a integral procurada, pelo méto de Euler.
u=[] # vetor vazio para incluir aproximações da integral no intervalo [0,i*h]
n=10 # número de subintervalos de [0,1]
h=1/n # tamanho dos subintervaloes de [0,1]
t=np.linspace(0,1,n+1) # vetor [0, h, 2h, ..., 1]
u.append(0) # inclusão no ínicio do intervalo, ou do valor inicial u(0)=0.
print('t',t) # pontos para as aproximações de u(t).
def f(s): # função que iremos integrar
return np.sin(np.sqrt(1+s**2)*np.log(2))
for i in range(1,n+1): # método de Euler
u.append(u[i-1]+h*f(t[i-1]))
print('Euler',u[n])
plt.plot(t,u,color='blue',label='Euler')
#--------------------------- Método dos trapézios
w=[] # vetor vazio para incluir aproximações da integral no intervalo [0,i*h]
w.append(0) # inclusão no ínicio do intervalo, ou do valor inicial u(0)=0.
for i in range(1,n+1): # método dos Trapézios
w.append(w[i-1]+h*(f(t[i-1])+f(t[i]))/2)
print('Trapezio',w[n])
plt.plot(t,w,color='red',label='Trapezio')
plt.xlabel('t')
plt.legend()
plt.show()
To embed this project on your website, copy the following code and paste it into your website's HTML: