/Numerical_Analysis

Este é um repositório com métodos numéricos simples para iniciantes em programação Python e Cálculo Numérico.

Primary LanguagePython

Numerical_Analysis

Este é um repositório com métodos numéricos simples para iniciantes em programação Python e Cálculo Numérico.

Métodos Numéricos para Sistemas Lineares e Não Lineares:

Exemplo Método de Gauss-Sidel para Sistemas Lineares:.

Dado o Sistema Linear -- ATENÇÃO AOS PRESSUPOSTOS DO MÉTODO DE GAUSS-SIDEL.

Sistema_Linear.

Monta-se a matriz dos coeficientes e o vetor alvo da seguinte forma:.
matrix = numpy.array([[3.0,-0.1,-0.2],[0.1,7.0,-0.3],[0.3,-0.2,10.0]]).
vec_b = numpy.array([7.85,-19.3,71.4]).

Chama-se a Função Gauss_Sidel(matrix,vec_b).
Onde os parâmetros são a matriz dos coeficiantes o vetor alvo.
Existe também um número maximo de iterações como terceiro parâmetro, mas este por padrão é igual a 100.
Para altera-lo use a função da seguinte maneira Gauss_Sidel(matrix,vec_b,max_int=10) alterando-o assim para 10.

RESULTADO Método de Gauss-Sidel.
Número de Iterações: 8.
Solução do Sistema Linear: [3.0, -2.5, 7.0].

Exemplo Método de Broyden para Sistemas Não Lineares:

Dado o Sistema Não Linear.

Sistema_Não_Linear.

Chama-se a Função Broyden_Method(x0).
Onde os parâmetros são x0 que é um chute inicial.
Existe também um número maximo de iterações como segundo parâmetro, mas este por padrão é igual a 100.
Para altera-lo use a função da seguinte maneira Broyden_Method(x0,h=0.001,max_int=10) alterando-o assim para 10.

RESULTADO Método de Broyden.
Número de Iterações: 3.
Solução do Sistema Não Linear: [0.5000001004, 1.26946e-05, -0.5235984447].

Métodos de Interpolação de Dados:

Exemplo Método de Lagrange:

Deseja-se interpolar os dados contidos no vetores x e y.
x = [0,20,40,60,80,100]
y = [26.0,48.6,61.6,71.2,74.8,75.2]
Executa o código e chama-se a função Lagrange(x,y,xp) em que o parâmetro xp é um ponto qualquer pertencente ao intervalo x.
Exemplo: Lagrange(x,y,43.76)

RESULTADO INTERPOLAÇÃO DE LAGRANGE
Interpolação_Lagrange

Exemplo Método de Spline Cúbico:

Deseja-se interpolar os dados contidos no vetores x e y.
x = [0.125,0.375,0.625,0.875,1.125,1.375,1.625]
y = [0.264,0.840,1.361,1.612,1.366,0.716,0.079]
Executa o código e chama-se a função Spline_Cubico(x,y,xp) em que o parâmetro xp é um ponto qualquer pertencente ao intervalo x.
Exemplo: Spline_Cubico(x,y,0.957)

RESULTADO INTERPOLAÇÃO POR SPLINE CUBICO
Interpolação_Spline_Cubico

Métodos para Raizes de Funções de uma Variável:

Os métodos a seguir retornam a raiz de uma função y(x) qualquer definida no início do código, o código necessita de mais dois argumentos x0 e x1 que definem o intervalo de busca pela raiz.

Exemplo Método da Bissecção:

Deseja-se saber a raiz da função y(x) = e^(-3x)sin(4x) no intervalo [0.5,1.0].
Executa o código e chama-se a função Bissecção(g,0.5,1.0) no console.

RESULTADO BISSECÇÃO

Iteração Ponto(x0) Ponto(x1) Módulo y(m)
1 0.50000000 1.00000000 0.01487394
2 0.75000000 1.00000000 0.02541065
3 0.75000000 0.87500000 0.00945399
4 0.75000000 0.81250000 0.00159228
5 0.78125000 0.81250000 0.00420237
6 0.78125000 0.79687500 0.00137399
7 0.78125000 0.78906250 0.00009178
8 0.78515625 0.78906250 0.00064543
9 0.78515625 0.78710938 0.00027791
10 0.78515625 0.78613281 0.00009333
11 0.78515625 0.78564453 0.00000084
12 0.78515625 0.78540039 0.00004545
13 0.78527832 0.78540039 0.00002230
14 0.78533936 0.78540039 0.00001073
15 0.78536987 0.78540039 0.00000494
16 0.78538513 0.78540039 0.00000205
17 0.78539276 0.78540039 0.00000060
18 0.78539658 0.78540039 0.00000012
19 0.78539658 0.78539848 0.00000024
20 0.78539753 0.78539848 0.00000006

A raiz da função é: 0.78539801

Exemplo Método da Secante:

Deseja-se saber a raiz da função y(x) = e^(-3x)sin(4x) no intervalo [0.5,1.0]
Executa o código e chama-se a função Secante(g,0.5,1.0) no console.

RESULTADO SECANTE

Iteração Ponto(x0) Ponto(x1) Módulo y(x2)
1 0.50000000 1.00000000 0.03265448
2 1.00000000 0.92168833 0.28897198
3 0.92168833 0.41273669 0.02441542
4 0.41273669 0.87001488 0.01593241
5 0.87001488 0.83438920 0.00716276
6 0.83438920 0.76747859 0.00106462
7 0.76747859 0.78823032 0.00005566
8 0.78823032 0.78554505 0.00000048
9 0.78554505 0.78539691 0.00000000

A raiz aproximada da função é: 0.78539816

Exemplo Método de Newton:

Deseja-se saber a raiz da função y(x) = e^(-3x)sin(4x) com um chute inicial igual a 0.5
Executa o código e chama-se a função Newton_Raphson(y,dydx,0.5) no console.

RESULTADO NEWTON RAPHSON

Iteração Ponto(x1) y(x1)
1 0.70701233 0.03698312
2 0.77221590 0.00519687
3 0.78490800 0.00018611
4 0.78539744 0.00000027
5 0.78539816 0.00000000

A raiz aproximada da função é: 0.78539816

Resultado Gráfico das Funções Bissecção, Secante e Newton. Zero_Funções

Métodos de Integração para Funções de uma Variável:

Os métodos a seguir realizam a integração de uma função g(x) em um intervalo [x0,x1] qualquer.

Exemplo Método do (1/2) Trapezio Composto:

Deseja-se saber o valor da integral ∫(1/2 + 3xe^(-x²)dx no itervalo [-2,2]
Executa o código e chama-se a função Trapezio(g,-2,2) no console.

RESULTADO TRAPEZIO
Trapezio
A Integral Aproximada da Função é: 2.00000000

Exemplo Método do (1/3) Simpson Composto:

Deseja-se saber o valor da integral ∫(1/2 + 3xe^(-x²)dx no itervalo [-2,2]
Executa o código e chama-se a função Simpson(g,-2,2) no console.

RESULTADO SIMPSON
Simpson
A Integral Aproximada da Função é: 1.99550328

Exemplo Método do Ponto Médio:

Deseja-se saber o valor da integral ∫(1/2 + 3xe^(-x²)dx no itervalo [-2,2]
Executa o código e chama-se a função Ponto_Medio(g,-2,2) no console.

RESULTADO PONTO MÉDIO
Ponto_Médio
A Integral Aproximada da Função é: 2.00029305

Área Entre Curvas

Deseja-se saber a área entre duas curvas definidas por funções.
Dadas as funções f(x) = -x² + 18x -17 e g(x) = 2x + 5 no intervalo [-4,12]
Execulta o código e chama-se a função Area_Entre_Curvas(f,g,x0,x1) no console

RESULTADO ÁREA ENTRE CURVAS
Área_Curvas

Método Estocástico de Integração para Funções com Multiplas Variáveis:

A seguir utiliza-se o método de Monte Carlo para realizar a Integração de funções com uma ou mais variáveis.

Exemplo Integral Simples:

Deseja-se calcular a Integral ∫(1/2 + 3xe^(-x²)dx no itervalo [-2,2]
Executa o código e chama-se a função Integral_Simples(g,-2,2)
Por padrão serão sorteados 1000 números aleatórios e 15000 simulações.

RESULTADO INTEGRAL ESTOCÁSTICA SIMPLES
Integral_Simples_1
Integral_Simples_2
A Integral Aproximada da Função é: 2.00577996

Exemplo Integral Dupla:

Deseja-se calcular a Integral ∬e^(xy)sin⁡(xy)dxdy sobre a região β = [x0,x1,y0,y1]
Executa o código e chama-se a função Integral_Dupla(g,0,1,0,1)
Por padrão serão sorteados 1000 números aleatórios e 15000 simulações.

RESULTADO INTEGRAL ESTOCÁSTICA DUPLA
Integral_Dupla_1
Integral_Dupla_2
Integral_Dupla_3
A Integral Aproximada da Função é: 0.38077816

Exemplo Integral Tripla:

Deseja-se calcular a Integral da função ∭sin⁡(xyz)dxdydz sobre a região β = [x0,x1,y0,y1,z0,z1]
Executa o código e chama-se a função Integral_Tripla(g,-2,2,-2,2,-0.2,0.3)
Por padrão serão sorteados 1000 números aleatórios e 15000 simulações.

RESULTADO INTEGRAL ESTOCÁSTICA TRIPLA
Integral_Tripla_1
Integral_Tripla_2
Integral_Tripla_2
A Integral Aproximada da Função é: 0.00009371

Métodos Númericos para Solução de EDOs

Exemplo Método de Euler:

Este método resolve o problema da EDO y' - 2xy = 0 ; y(0) = 1 no intervalo x = [0,2]
Executa o código e chama-se a função Euler_Method(0,2,1)

RESULTADO MÉTODO DE EULER
EDO_Euler

Exemplo Método de Runge Kutta 4° Ordem:

Este método resolve o problema da EDO y' - 2xy = 0 ; y(0) = 1 no intervalo x = [0,2]
Executa o código e chama-se a função Runge_Kutta_O4(0,2,1)

RESULTADO MÉTODO DE RUNGE KUTTA 4° ORDEM EDO_RK4

Exemplo Método de Runge Kutta 4° Ordem - EDO de Ordem Superior:

EDO de Ordem Superior são do tipo y" + P(x)y' + Q(x)y = R(x)
Este método resolve o problema da EDO y" - 2y' + 2y = sin(x)e^(2x) ; y(0) = -0.4 e y'(0) = -0.6 no intervalo x = [0,1]
Executa o código e chama-se a função Runge_Kutta_O4S(0,1,-0.4,-0.6)

RESULTADO MÉTODO DE RUNGE KUTTA 4° ORDEM PARA EDO DE ORDEM SUPERIOR EDO_RK4_OS

Exemplo Método Diferenças Finitas Lineares - EDO de Ordem Superior:

EDO de Ordem Superior são do tipo y" + P(x)y' + Q(x)y = R(x)
Este método resolve o problema da EDO y" + 2xy' + 3xy = cos(x) ; y(0) = 1 e y(1) = 2 no intervalo x = [0,1]
Importante ressaltar que os valores da função y(x) são conhecidos nos extremos, mas não se sabe os valores de y'(x)
Executa o código e chama-se a função Diferença_Finita_Linear(0,1,1,2)

RESULTADO MÉTODO DIFERANÇAS FINITAS PARA EDO DE ORDEM SUPERIOR EDO_DIFF_OS