# 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()

Embed on website

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