```python
from Integrais import Integrais as it
from EDO import EDO
from sympy import var, Lambda, cos, sin, tan, exp, log, ln, sqrt, solve
import pandas as pd
import numpy as np
x = var('x')
y = var('y')
```


```python
# Questão 01
# Letra A
x0 = 1
y0 = -1
dy = Lambda((x, y), 1/x**2 - y/x - y**2)
print('f(x, y) = ', dy(x,y))
I = (1, 2)
N = 10
Y = EDO(dy, y0, x0)
y1, y_steps, x_steps = Y.euler(I, N, dp=4)
print(y1)

# Letra B
print(f'\nSolução Exata: y(2) = {-0.5}')
print(f'Solução Aproximada: y(2) = {y1}')
print(f'Erro Absoluto: {abs(-0.5 - y1):.4f}')

```

    f(x, y) =  -y**2 - y/x + x**(-2)
    -0.4431
    
    Solução Exata: y(2) = -0.5
    Solução Aproximada: y(2) = -0.4431
    Erro Absoluto: 0.0569



```python
# Questão 02
x0 = 1
y0 = 2
dy = Lambda((x, y), -x * y**2)
print('f(x, y) = ', dy(x,y))
I = (1, 1.5)
N = 5
Y = EDO(dy, y0, x0)
y1, y_steps, x_steps = Y.euler(I, N, dp=4)
print(f'Solução Aproximada: y(1.5) = {y1}')

```

    f(x, y) =  -x*y**2
    Solução Aproximada: y(1.5) = 0.8234



```python
# Questão 03
# Letra A - Euler
x0 = 0
y0 = 1
dy = Lambda((x, y), x * y ** (1/3))
print('f(x, y) = ', dy(x,y))
I = (0, 2)
N = 5
Y = EDO(dy, y0, x0)
y1_euler, y_steps_euler, x_steps = Y.euler(I, N, dp=4)
print('Metodo de Euler')
print(f'Solução aproximada: y(2) = {y1_euler}')

# Letra B - Euler Aprimorado
y1_aprimorado, y_steps_apri, x_steps = Y.runge_kutta2(I, N, dp=4)
print('\n Método de Euler Aprimorado')
print(f'Solução aproximada: y(2) = {y1_aprimorado}')

# Letra C - Erro e Tabela
y_ex = Lambda(x, ((x**2 + 3) / 3)**(3/2))
print('f(y) = ', y_ex(x))
y_ex_values = [np.round(float(y_ex(value)), 4) for value in x_steps]

comparacao = {'Euler': y_steps_euler,
            'Ruge-Kutta 2': y_steps_apri,
            'Exato': y_ex_values}
comparacao_df = pd.DataFrame(comparacao, index=x_steps)
comparacao_df
```

    f(x, y) =  x*y**0.333333333333333
    Metodo de Euler
    Solução aproximada: y(2) = 2.8576
    
     Método de Euler Aprimorado
    Solução aproximada: y(2) = 3.5507
    f(y) =  (x**2/3 + 1)**1.5





<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>Euler</th>
      <th>Ruge-Kutta 2</th>
      <th>Exato</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0.0</th>
      <td>1.0000</td>
      <td>1.0000</td>
      <td>1.0000</td>
    </tr>
    <tr>
      <th>0.4</th>
      <td>1.0000</td>
      <td>1.0800</td>
      <td>1.0811</td>
    </tr>
    <tr>
      <th>0.8</th>
      <td>1.1600</td>
      <td>1.3342</td>
      <td>1.3365</td>
    </tr>
    <tr>
      <th>1.2</th>
      <td>1.4962</td>
      <td>1.7960</td>
      <td>1.8005</td>
    </tr>
    <tr>
      <th>1.6</th>
      <td>2.0452</td>
      <td>2.5149</td>
      <td>2.5231</td>
    </tr>
    <tr>
      <th>2.0</th>
      <td>2.8576</td>
      <td>3.5507</td>
      <td>3.5642</td>
    </tr>
  </tbody>
</table>
</div>




```python
# Questão 04
x0 = 1
y0 = 2
dy = Lambda((x, y), -x*y**2)
print('f(x, y) = ', dy(x,y))
N = 2
I = (0, 1.5)
Y = EDO(dy, y0, x0)
y1, y_steps, x_steps = Y.runge_kutta4(I, N, dp=4)
print(f'Solução aproximada: y(1.5) = {y1}')


```

    f(x, y) =  -x*y**2
    Solução aproximada: y(1.5) = 0.8899



```python
# Questão 05
x0 = 0
y0 = 1
dy = Lambda((x, y), y*cos(x))
print('f(x, y) = ', dy(x,y))
N = 3
I = (0, 0.6)
Y = EDO(dy, y0, x0)
y1, y_steps, x_steps = Y.runge_kutta4(I, N, dp=4)
print(f'Solução aproximada: y(0.6) = {y1}')

```

    f(x, y) =  y*cos(x)
    Solução aproximada: y(0.6) = 1.7588



```python
# Questão 06
x0 = 0
y0 = 1000
dy = Lambda((x, y), -0.1 * y)
print('f(x, y) = ', dy(x,y))
N = 2000
I = (0, 2)
Y = EDO(dy, y0, x0)
y1, y_steps, x_steps = Y.euler(I, N, dp=4)
k = 1
while y1 > 500:
    y1, y_steps, x_steps = Y.euler((I[0], I[1]+k), N, dp=4)
    k += 1
k -= 1
print(f'Solução aproximada: y({k+I[1]}) = {y1}')
```

    f(x, y) =  -0.1*y
    Solução aproximada: y(7) = 496.5245



```python
# Questão 7

# dy/dx = r(x) y**2 + a(x)y + b(x)
# como queremos a resposta para x = 0.2

# valor aproximado
x0 = 0
y0 = 3
dy = Lambda((x, y), 1)
print('f(x, y) = ', dy(x,y))
N = 2
I = (0, 0.2)
Y = EDO(dy, y0, x0)
y1, y_steps, x_steps = Y.runge_kutta4(I, N, dp=4)
print(f'Solução aproximada: y({I[1]}) = {y1}')


```

    f(x, y) =  1
    Solução aproximada: y(0.2) = 3.2



```python

```

c022e68ce4b71be558999cf99982698a9ca6b5cf
ipynb
Jupyter Notebook
MAT 271/listaV.ipynb
Hiago013/Ola-Mundo
87a34020a421bca535eacbfc4e9e4e1dd36f67be
MIT
MAT 271/listaV.ipynb
Hiago013/Ola-Mundo
87a34020a421bca535eacbfc4e9e4e1dd36f67be
MIT
MAT 271/listaV.ipynb
Hiago013/Ola-Mundo
87a34020a421bca535eacbfc4e9e4e1dd36f67be
MIT
Qwen/Qwen-72B
1. YES
2. YES