# Lista 1 de Computação Científica - Newtons e Secante, Simetrias e Análise


```python
import numpy as np
import matplotlib.pyplot as plt
```


```python
## Metódo de Newton
def newton(f,df,x, prec=1e-8, maxiter=100, iterr = 0, lst = [], reti = False):
    if maxiter == iterr:
        return None
    dx = f(x)/df(x)
    newx = x - dx
    xs = lst[:]
    xs.append(x)
    if abs(dx) < prec:
        if reti:
            return xs, iterr
        else:
            return xs
    else:
        return newton(f,df,newx, prec,iterr = iterr+1, lst = xs)
```

***
***
## Parte 1

***
### Questão 1

O próximo ponto do metódo de Newton de uma função $f$ é dado por:
$$
\begin{align}
x_{f_{n+1}} = x_n - \frac{f(x)}{f'(x)} &&(1)
\end{align}
$$
Como: $g(x) = -f(x)$ <br>
Teremos: $g'(x) = -f'(x)$ <br>
Olhando agora para o próximo ponto do metódo de Newton na função $g$ <br>
$$
\begin{align}
x_{g_{n+1}} = x_n - \frac{g(x)}{g'(x)} \implies x_{g_{n+1}} = x_n - \frac{-f(x)}{-f'(x)} \implies x_{g_{n+1}} = x_n - \frac{f(x)}{f'(x)} &&(2)
\end{align}
$$
Temos então (1) = (2), e portanto o metódo de Newton produz os mesmo pontos para $g$ e para $f$<br>
Como os pontos gerados são os mesmos para $f(x)$ e para $-f(x)$<br>
podemos sempre supor $f '(z) > 0$, pois caso $f ' (z) < 0$, basta tomar $-f ' (z)$, pois: <br>
$f'(z) < 0 \implies -f'(z) > 0$

***
### Questão 2

Seja $g(x) = c\cdot f(x) $ com $C$ constante, $C \in \mathbb{R}$<br>
Teremos: $g(x) = c\cdot f(x)\implies g'(x) = c\cdot f'(x)$<br>
Então o ponto no metódo de Newton é dado por: <br>
$$
\begin{align}
x_{g_{n+1}}&= x_n - \frac{g(x)}{g'(x)}\\
&= x_n - \frac{c\cdot f(x)}{c\cdot f'(x)}\\
&\text{Cancelando } c \text{ na fração, temos: }\\
& = x_n - \frac{f(x)}{f'(x)} \\
\end{align}
$$
> O metódo de Newton para $g(x) = c\cdot f(x)$  gera os mesmos pontos que o metódo de Newton para $f(x)$

***
### Questão 3



```python
## Funções Polinomiais
# f''(z)=0
def pol1(x): return (x-1)
def dPol1(x): return (x)
def d2Pol1(x): return (0*x)

# f''(z)>0
def pol2(x): return (2*x**3 - 2*x)/4
def dPol2(x): return (6*x**2 - 2)/4
def d2Pol2(x): return (12*x)/4

# f''(z)<0
def pol3(x): return (-x**2+x)
def dPol3(x): return (-2*x+1)
def d2Pol3(x): return (-2+(0*x))
```


```python
t = np.linspace(-3,3)

plt.figure(figsize=(15,6))
plt.plot(t,pol1(t), color="blue", linestyle='-', label="f (x)")
plt.plot(t,dPol1(t), color="orange", linestyle='-.', label="f ' (x)")
plt.plot(t,d2Pol1(t), color="red", linestyle=":", label="f '' (x)")
plt.plot(1,0,('o'),color='blue', label="f(z)")
plt.plot(1,dPol1(1),('o'),color='yellow', label="f'(z)")
plt.plot(1,d2Pol1(1),('o'),color='red', label="f''(z)")

ax1 = plt.gca() 
ax1.spines['right'].set_color('none')
ax1.spines['top'].set_color('none')
ax1.spines['bottom'].set_position(('data',0))
ax1.spines['left'].set_position(('data',0))
plt.title("f ' ' (z) = 0")
plt.legend()
plt.show()
```


```python
t = np.linspace(-2,2)

plt.figure(figsize=(15,6))
plt.plot(t,pol2(t), color="blue", linestyle='-', label="f (x)")
plt.plot(t,dPol2(t), color="orange", linestyle='-.', label="f ' (x)")
plt.plot(t,d2Pol2(t), color="red", linestyle=":", label="f '' (x)")
plt.plot(1,0,('o'),color='blue', label="f(z)")
plt.plot(1,dPol2(1),('o'),color='yellow', label="f'(z)")
plt.plot(1,d2Pol2(1),('o'),color='red', label="f''(z)")

ax1 = plt.gca() 
ax1.spines['right'].set_color('none')
ax1.spines['top'].set_color('none')
ax1.spines['bottom'].set_position(('data',0))
ax1.spines['left'].set_position(('data',0))

plt.title("f ' ' (z) > 0")
plt.legend()
plt.show()
```


```python
t = np.linspace(-2,2)

plt.figure(figsize=(15,6))
plt.plot(t,pol3(t), color="blue", linestyle='-', label="f (x)")
plt.plot(t,dPol3(t), color="orange", linestyle='-.', label="f ' (x)")
plt.plot(t,d2Pol3(t), color="red", linestyle=":", label="f '' (x)")
plt.plot(1,0,('o'),color='blue', label="f(z)")
plt.plot(1,dPol3(1),('o'),color='yellow', label="f'(z)")
plt.plot(1,d2Pol3(1),('o'),color='red', label="f''(z)")

ax1 = plt.gca() 
ax1.spines['right'].set_color('none')
ax1.spines['top'].set_color('none')
ax1.spines['bottom'].set_position(('data',0))
ax1.spines['left'].set_position(('data',0))

plt.title("f ' ' (z) < 0")
plt.legend()
plt.show()
```


```python
## Funções transcendentes

# f''(z) = 0
def f1(x): return (np.sin(x))
def dF1(x): return (np.cos(x))
def d2F1(x): return (-np.sin(x))

#f''(z) > 0
def f2(x): return (np.e**x-1)
def dF2(x): return (np.e**x)
def d2F2(x): return (np.e**x)

#f''(z) < 0
def f3(x): return (-np.e**-x+1)
def dF3(x): return (np.e**-x)
def d2F3(x): return (-np.e**-x)
```


```python
#plot da f1(x) e suas derivadas
ts = np.linspace(-np.pi,np.pi)

plt.figure(figsize=(15,6))
plt.plot(ts,f1(ts), color="blue", linestyle='-', label="f (x)")
plt.plot(ts,dF1(ts), color="orange", linestyle='-.', label="f ' (x)")
plt.plot(ts,d2F1(ts), color="red", linestyle=":", label="f '' (x)")
plt.plot(0,0,('o'),color='blue')
plt.plot(0,dF1(0),('o'),color='yellow')
plt.plot(0,d2F1(0),('o'),color='red')

ax1 = plt.gca() 
ax1.spines['right'].set_color('none')
ax1.spines['top'].set_color('none')
ax1.spines['bottom'].set_position(('data',0))
ax1.spines['left'].set_position(('data',0))
plt.title("f ' ' (z) = 0")
plt.legend()
plt.show()
```


```python
#plot da f2(x) e suas derivadas
ts = np.linspace(-2,2)

plt.figure(figsize=(15,6))
plt.plot(ts,f2(ts), color="blue", linestyle='-', label="f (x)")
plt.plot(ts,dF2(ts), color="orange", linestyle='-.', label="f ' (x)")
plt.plot(ts,d2F2(ts), color="red", linestyle=":", label="f '' (x)")
plt.plot(0,0,('o'),color='blue', label="f(z)")
plt.plot(0,dF2(0),('o'),color='yellow', label="f'(z)")
plt.plot(0,d2F2(0),('o'),color='red', label="f''(z)")

ax1 = plt.gca() 
ax1.spines['right'].set_color('none')
ax1.spines['top'].set_color('none')
ax1.spines['bottom'].set_position(('data',0))
ax1.spines['left'].set_position(('data',0))
plt.title("f ' ' (z) > 0")
plt.legend()
plt.show()
```


```python
#plot da f3(x) e suas derivadas
ts = np.linspace(0,np.pi)

plt.figure(figsize=(15,6))
plt.plot(ts,f3(ts), color="blue", linestyle='-', label="f (x)")
plt.plot(ts,dF3(ts), color="orange", linestyle='-.', label="f ' (x)")
plt.plot(ts,d2F3(ts), color="red", linestyle=":", label="f '' (x)")
plt.plot(0,f3(0),('o'),color='blue', label="f(z)")
plt.plot(0,dF3(0),('o'),color='yellow', label="f'(z)")
plt.plot(0,d2F3(0),('o'),color='red', label="f''(z)")

ax1 = plt.gca() 
ax1.spines['right'].set_color('none')
ax1.spines['top'].set_color('none')
ax1.spines['bottom'].set_position(('data',0))
ax1.spines['left'].set_position(('data',0))
plt.title("f ' ' (z) < 0")
plt.legend()
plt.show()
```

***
### Questão 4


Seja $g(x) = f(x+b)$ <br>
Então: $g'(x) = f'(x+b)$ <br> 
Os pontos de $g(x)$ são dados por:<br>
$$\begin{align}
g_{next}(x) &= x - \frac{g(x)}{g'(x)} \\
&= x - \frac{f(x+b)}{f'(x+b)}
\end{align}
$$
E os pontos de $ f(x)$ são dados por:
$$
f_{next}(x) = x - \frac{f(x)}{f'(x)}\\
$$
Tomando o ponto transladado $x-b$
$$
\begin{align}
g_{next}(x-b) &= (x-b) - \frac{f(x-b+b)}{f'(x-b+b)} \\
&= x - b - \frac{f(x)}{f'(x)} \\
&= f_{next}(x) - b\\
\end{align}
$$
> Que nada mais são do que os pontos iterados em $ f $ e transladados por $ b$

***
### Questão 5


```python
def f(x): return x**2-x
def dF(x): return 2*x-1
def g(x): return f(x+2)
def dG(x): return (1)
```


```python
a = newton(f,dF,-1)
b = newton(g,dG,0)

ts = np.linspace(-2,1)

_, [ax1, ax2] = plt.subplots(ncols=2, figsize=(15,4))
ax1.set_title('f(x)')
ax1.plot(ts, f(ts), label='f(x)')
ax1.plot(ts, [0]*len(ts), color="black")
ax1.plot(0,0,"o", color="blue", label="raiz")
ax1.plot(-1,f(-1),"o", color="green", label="x_n")
ax1.plot(a[1],0,"o", color="orange", label="x_n+1")
ax1.legend(loc=0)

ax2.set_title('g(x)')
ax2.plot(ts, g(ts), label='g(x)')
ax2.plot(ts, [0]*len(ts), color="black")
ax2.plot(-1,0,"o", color="blue", label="raiz")
ax2.plot(0,g(0),"o", color="green", label="x_n")
ax2.plot(b[1],0,"o", color="orange", label="x_n+1")
ax2.legend(loc=0)

plt.show()
```

***
### Questão 6

$$
f(z) = 0
\text{, e }
g(0) = 0\\
\text{como } g(x) = f(x+b)\\
\therefore g(0) = f(0+b) = f(b) = 0\\
\text{Tomando } b = z \text{ teremos: }\\
f(b) = f(z) = 0 \\
$$
Então geram pontos transladados por $z$ <br>
Podemos então supor uma translação em uma raíz $ z_0 $ de $f$ de forma que a nova raíz seja $ z = 0$


***
### Questão 7

$$
g(x) = -f(-x)\\
f(z) = 0, z = 0 \implies g(z) = -f(-z) = -f(0) = 0 \\
\text{Logo, } z = 0 \text{ é raíz da }g(x)
$$
-  Analisando o sinal da primeira derivada

$$
\\
g(x)=-f(-x) \implies g'(x) = -f'(-x)\cdot(-x)' = f'(-x)
\\
$$
-  Analisando o sinal da segunda derivada
$$
\\
g'(x)=f'(-x) \implies g''(x) = f''(-x)\cdot(-x)' = -f''(-x)
\\
$$
-  Analisando o metódo aplicado a g
$$
\begin{align}
g_{next}(x) & = x - \frac{g(x)}{g'(x)}\\
& = x - \frac{-f(x)}{f'(x)}\\
& = x + \frac{f(x)}{f'(x)}
\end{align}\\
$$
-  Analisando o metódo aplicado a f
$$
\begin{align}
f_{next}(x) & = x - \frac{f(x)}{f'(x)}
\end{align}
$$

> Logo os metódos criam pontos simétricos

***
### Questão 8

$$
g(x) = C \cdot f(ax+b)
$$

-  Queremos $g(0) = 0$
$$
g(0) = C\cdot f(a\cdot 0 + b)\\
g(0) = C\cdot f(b)\\
C\cdot f(b) = 0 \iff f(b) = 0
$$
> Logo, basta tomar $ b = z$, onde $f(z) = 0$

-  Queremos $g'(0) = 1$
$$
\begin{align}
g'(x) & = C\cdot f'(ax+b)\cdot(ax+b)'\\
& = C\cdot f'(ax+b)\cdot a\\
g'(0) & = 1 \\
& = C\dot f'(0+z)\cdot a
\end{align}
$$
Como visto na Questão 2, podemos considerar $f'(z) = 1$, portanto:
$$
\begin{align}
1 &= C\dot f'(z)\cdot a \\
& = C\cdot a \\
& \implies a = \frac{1}{C}
\end{align}
$$
> Logo, basta tomarmos $ a = \frac{1}{C}$

-  Queremos $g''(0) = 1$
$$
\begin{align}
g'(x) & = C\cdot f'(\frac{1}{C}\cdot x + z)\cdot \frac{1}{C}\\
\implies g''(x) & = f''(\frac{1}{C}\cdot x+z)\cdot \frac{1}{C}
\end{align}
$$
Substituindo
$$
\begin{align}
g''(0) & = f''(\frac{1}{C}\cdot 0+z)\cdot \frac{1}{C}\\
&= f''(z)\cdot \frac{1}{C} = 1\\
&\implies C = f''(z)
\end{align}
$$

> Logo, basta tomar $C = f''(z)$

***
### Questão 9

-  Analisando o metódo de Newton para a função $g$ criada na questão anterior
$$
f(x) = x^2 - 2 \implies f(\sqrt{2}) = 0
$$

Vamos aplicar os passos feitos na questão 8 para gerar uma $g$

$$
b = z = \sqrt{2}
$$
$$
C = f''(z) = 2
$$
$$
a = \frac{1}{C} = \frac{1}{2}
$$
$$
\therefore
g(x) = 2 \cdot f(\frac{x}{2}+\sqrt{2})
$$



```python
def f_9(x): return x**2 - 2
def df_9(x): return 2*x
def d2f_9(x): return 2

b = 2**(1/2)
c = 2
a = 1/c

def g(x): return c*f(x*a + b)
def dg(x): return f(x*a+b)

n1 = newton(f_9,df_9,3)
n2 = newton(g,dg,3)
```


```python
ts = np.linspace(-2,2)

plt.figure(figsize=(8,6))
plt.plot(ts,f_9(ts), color="blue", linestyle='-', label="f (x)")
plt.plot(ts,g(ts), color="red", linestyle=':', label="g (x)")
plt.plot(ts, [0]*len(ts), color="black")
plt.legend()
plt.show()
```

***
***
## Parte 2

***
### Questão 1

Temos que $f'(0) = 1$<br>
$\therefore \lim_{x->0} f'(x) - 1 = 0$<br>
$$\forall \epsilon > 0 \text{, }\exists \delta > 0 \text{ ; } |x| < \delta \implies |f'(x)-1| < \epsilon$$
Tomando $\epsilon = 1/2$ teremos:<br>
$$|f'(x)-1| < \epsilon \implies |f'(x)-1| < \frac{1}{2} \implies -\frac{1}{2} < f'(x) - 1 < \frac{1}{2}$$
Somando 1 na inequação:<br>
$$
-\frac{1}{2} + 1 < f'(x) - 1 + 1 < \frac{1}{2} + 1 \\
\frac{1}{2} < f'(x) < \frac{3}{2}
$$
Analogamente para $f''(x)$ chegamos a mesma conclusão
$$
\frac{1}{2} < f''(x) < \frac{3}{2} \\
\text{Então: } x \in (-1/2, 1/2) \implies \frac{1}{2} < f'(x) < \frac{3}{2} \text{ e } \frac{1}{2} < f''(x) < \frac{3}{2} \\
$$

***
### Questão 2

Fórmula de Taylor centrada em z:
$$
f(x) = f(z) + f'(z)\cdot(x-z) + \frac{f''(\xi)\cdot(x-\xi)^2}{2}\\
f(z) = 0, f'(z) = 1 \text{ e } f''(z) = 1 \implies f(x) = 0 + 1\cdot(x-0) + \frac{f''(\xi)\cdot(x-\xi)^2}{2}\\
\text{Logo: } f(x) = x + \frac{f''(\xi)\cdot(x-\xi)^2}{2}\\
\xi\text{ está em uma vizinhança de } z \text{, podemos dizer então: }\xi \in (-\epsilon,\epsilon)\\
\text{ logo: }\frac{1}{2} < f''(\xi) < \frac{3}{2}\\
\therefore f''(\xi) > 0 \text{ e } (x-\xi)^2 > 0 \text{ então temos que } \frac{f''(\xi)\cdot(x-\xi)^2}{2} > 0 \\
\implies f(x) > x \text{ , pois } f(x) = x + \frac{f''(\xi)\cdot(x-\xi)^2}{2}\\
\text{Como } f(x) > x\text{ , e temos que } x > 0 \text{ por transitividade teremos: } f(x) > 0\\
N_f(x) = x - \frac{f(x)}{f'(x)}\\
x\in(-\epsilon,\epsilon) \implies \frac{1}{2}<f'(x)<\frac{3}{2}\\
\therefore \frac{f(x)}{f'(x)} > 0 \implies N_f(x) < x \text{, pois estamos subtraindo uma quantia positiva de x}
$$

***
### Questão 3

$$
N_f(x) = x - \frac{f(x)}{f'(x)}\\
\text{Olhando para a expansão de Taylor em 0, com }\xi \in (0,x)\\
0 = f(0) = f(x) + f'(x)\cdot(0-x)+\frac{f''(\xi)\cdot(0-x)^2}{2}\\
0 = f(x) - x\cdot f'(x) + \frac{f''(\xi)\cdot x^2}{2}\\
-f(x) + x\cdot f'(x) = \frac{f''(\xi)\cdot x^2}{2}\\
\text{dividindo a equação por } f'(x)\\
x - \frac{f(x)}{f'(x)} = \frac{f''(\xi)\cdot x^2}{2\cdot f'(x)}\\
\therefore N_f(x) = \frac{f''(\xi)}{2\cdot f'(x)}\cdot x^2 \\
\text{Já mostramos que: } \frac{1}{2} < f'(x) < \frac{3}{2} \text{ e portanto } f'(x) > 0 \\
\text{Temos que } x^2 > 0, \forall x \in (-\epsilon, \epsilon) \\
\text{E } \xi \text{ esta próximo da raíz z, logo } \frac{1}{2} < f''(\xi) < \frac{3}{2} \implies f''(\xi) > 0 \\
\text{Então podemos concluir que: } \frac{f''(\xi)}{2\cdot f'(x)}\cdot x^2 > 0 \\
\text{Do exercicio anterior foi demonstrado que } N_{f}(x) < x \\
\text{Como } N_f(x) = \frac{f''(\xi)}{2\cdot f'(x)}\cdot x^2 \text{ e } \frac{f''(\xi)}{2\cdot f'(x)}\cdot x^2 > 0 \text{ e } x \in (-\epsilon,\epsilon)\\
\text{Concluimos que }\\
N_f(x) \in (-\epsilon,\epsilon)
$$


```python

```

14f78bd782c0a2dbf23aabc46108634ee21d5ff3
ipynb
Jupyter Notebook
comp-cientifica-I-2018-2/listas/Lista 1 - Gil Sales Miranda Neto.ipynb
mirandagil/university-courses
e70ce5262555e84cffb13e53e139e7eec21e8907
MIT
2019-12-23T16:39:01.000Z
2019-12-23T16:39:01.000Z
comp-cientifica-I-2018-2/listas/Lista 1 - Gil Sales Miranda Neto.ipynb
mirandagil/university-courses
e70ce5262555e84cffb13e53e139e7eec21e8907
MIT
comp-cientifica-I-2018-2/listas/Lista 1 - Gil Sales Miranda Neto.ipynb
mirandagil/university-courses
e70ce5262555e84cffb13e53e139e7eec21e8907
MIT
Qwen/Qwen-72B
1. YES
2. YES