import%20marimo%0A%0A__generated_with%20%3D%20%220.9.3%22%0Aapp%20%3D%20marimo.App(width%3D%22medium%22)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__()%3A%0A%20%20%20%20import%20marimo%20as%20mo%0A%20%20%20%20return%20(mo%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%23%20Numpy%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20import%20numpy%20as%20np%20%23%20numerical%20python%0A%20%20%20%20return%20(np%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22Um%20array%20%C3%A9%20uma%20matriz%20multimensional%20(pode%20ser%201D%20%E2%80%94%20como%20uma%20lista%20%E2%80%94%2C%202D%2C%203D%2C%20etc%E2%80%A6)%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(np)%3A%0A%20%20%20%20x_1d%20%3D%20np.array(%5B1%2C%202%2C%203%5D)%0A%20%20%20%20x_1d%20%23%20array%20de%20dimens%C3%A3o%201%0A%20%20%20%20return%20(x_1d%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22Qual%20a%20diferen%C3%A7a%20para%20uma%20lista%3F%20%C3%89%20uma%20estrutura%20de%20dados%20diferente%2C%20com%20m%C3%A9todos%20diferentes%2C%20implementa%C3%A7%C3%A3o%20diferente%2C%20e%20portanto%20performance%20diferente.%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(np)%3A%0A%20%20%20%20hasattr(list%2C%20'append')%2C%20hasattr(np.ndarray%2C%20'append')%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20import%20timeit%0A%20%20%20%20return%20(timeit%2C)%0A%0A%0A%40app.cell%0Adef%20__(timeit)%3A%0A%20%20%20%20timeit.timeit('%5Bmath.sqrt(i%20%2B%201)%20for%20i%20in%20range(1000)%5D'%2C%20setup%3D'import%20math'%2C%20number%3D100)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(timeit)%3A%0A%20%20%20%20timeit.timeit('np.sqrt(np.arange(1%2C%201001))'%2C%20setup%3D'import%20numpy%20as%20np'%2C%20number%3D100)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20%23%23%20Indexa%C3%A7%C3%A3o%0A%0A%20%20%20%20%20%20%20%20Veja%20mais%20na%20%5Bdocumenta%C3%A7%C3%A3o%5D(https%3A%2F%2Fnumpy.org%2Fdoc%2Fstable%2Fuser%2Fbasics.indexing.html%23advanced-indexing).%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(x_1d)%3A%0A%20%20%20%20%23%20indexamos%20de%20forma%20semelhante%20%C3%A0%20listas%0A%20%20%20%20print(x_1d%5B0%5D)%0A%20%20%20%20print(x_1d%5B0%3A2%5D)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(x_1d)%3A%0A%20%20%20%20%23%20mas%20h%C3%A1%20diferen%C3%A7as%3A%0A%20%20%20%20x_1d%5B%5B0%2C%202%5D%5D%20%23%20erro%20se%20x_1d%20fosse%20lista%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(x_1d)%3A%0A%20%20%20%20x_1d%20%25%202%20%3D%3D%200%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(x_1d)%3A%0A%20%20%20%20%23%20indexa%C3%A7%C3%A3o%20booleana%0A%20%20%20%20x_1d%5Bx_1d%20%25%202%20%3D%3D%200%5D%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(np)%3A%0A%20%20%20%20%23%20quando%20temos%20arrays%20de%20maior%20dimens%C3%A3o%20h%C3%A1%20mais%20diferen%C3%A7as%0A%20%20%20%20x_2d%20%3D%20np.array(%5B%5B1%2C%202%2C%203%5D%2C%20%5B4%2C%205%2C%206%5D%2C%20%5B7%2C%208%2C%209%5D%5D)%0A%20%20%20%20print(x_2d)%0A%20%20%20%20return%20(x_2d%2C)%0A%0A%0A%40app.cell%0Adef%20__(x_2d)%3A%0A%20%20%20%20%23%20indexa%C3%A7%C3%A3o%20em%20duas%20dimens%C3%B5es%0A%20%20%20%20print(x_2d%5B1%2C%202%5D)%0A%20%20%20%20print(x_2d%5B0%2C%200%5D)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(x_2d)%3A%0A%20%20%20%20print(x_2d%5B0%2C%20%3A%5D)%0A%20%20%20%20print(x_2d%5B1%2C%20%3A%5D)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(x_2d)%3A%0A%20%20%20%20print(x_2d%5B%3A%2C%200%5D)%0A%20%20%20%20print(x_2d%5B%3A%2C%201%5D)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(np)%3A%0A%20%20%20%20x_3d_list%20%3D%20%5B%5B%5B1%2C%202%2C%203%5D%2C%20%5B4%2C%205%2C%206%5D%5D%2C%20%5B%5B10%2C%2020%2C%2030%5D%2C%20%5B40%2C%2050%2C%2060%5D%5D%5D%0A%20%20%20%20x_3d%20%3D%20np.array(x_3d_list)%0A%20%20%20%20print(x_3d)%0A%20%20%20%20return%20x_3d%2C%20x_3d_list%0A%0A%0A%40app.cell%0Adef%20__(x_3d)%3A%0A%20%20%20%20%23%20Indexamos%20como%20se%20tiv%C3%A9ssemos%20uma%20lista%20de%20listas%20de%20listas%0A%20%20%20%20print(x_3d%5B0%5D%2C%20%22%5Cn%5Cn%22)%0A%20%20%20%20%23%20ou%0A%20%20%20%20print(x_3d%5B0%2C%20%3A%2C%201%5D)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(x_3d)%3A%0A%20%20%20%20print(x_3d%5B0%5D%5B1%5D%2C%20%22%5Cn%5Cn%22)%0A%20%20%20%20%23%20ou%0A%20%20%20%20print(x_3d%5B0%2C%201%5D)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(x_3d)%3A%0A%20%20%20%20x_3d%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(x_3d)%3A%0A%20%20%20%20x_3d%5B%3A%2C%200%2C%200%3A2%5D%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%23%23%20Atributos%20de%20um%20ndarray%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(x_3d)%3A%0A%20%20%20%20type(x_3d)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(x_1d%2C%20x_3d)%3A%0A%20%20%20%20print(x_3d.shape)%0A%20%20%20%20print(x_1d.shape)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(x_3d)%3A%0A%20%20%20%20x_3d.dtype%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(np)%3A%0A%20%20%20%20xs%20%3D%20np.linspace(0%2C%201%2C%2020)%0A%20%20%20%20print(xs)%0A%20%20%20%20print(xs.dtype)%0A%20%20%20%20return%20(xs%2C)%0A%0A%0A%40app.cell%0Adef%20__(xs)%3A%0A%20%20%20%20print(xs.shape)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%23%23%20Vetoriza%C3%A7%C3%A3o%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(x_1d)%3A%0A%20%20%20%20x_1d%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(np%2C%20x_1d)%3A%0A%20%20%20%20print(x_1d%5B0%3A3%5D%20%3D%3D%20x_1d%5B%3A%5D)%0A%20%20%20%20print(x_1d%20%2B%201)%0A%20%20%20%20print(x_1d%20%2B%20x_1d)%0A%20%20%20%20print(np.sin(x_1d))%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(np)%3A%0A%20%20%20%20x%20%3D%20np.array(%5B1%2C%202%2C%203%5D)%0A%20%20%20%20y%20%3D%20np.array(%5B4%2C%205%2C%206%5D)%0A%20%20%20%20x%20%40%20y%0A%20%20%20%20return%20x%2C%20y%0A%0A%0A%40app.cell%0Adef%20__(x_2d)%3A%0A%20%20%20%20x_2d%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(x_1d%2C%20x_2d)%3A%0A%20%20%20%20x_2d%20%2B%20x_1d%20%23%20broadcasting%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(np)%3A%0A%20%20%20%20I3%20%3D%20np.eye(3)%0A%20%20%20%20I3%0A%20%20%20%20return%20(I3%2C)%0A%0A%0A%40app.cell%0Adef%20__(I3%2C%20x_2d)%3A%0A%20%20%20%20x_2d%20%40%20I3%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22Mais%20sobre%20%5Bbroadcasting%5D(https%3A%2F%2Fnumpy.org%2Fdoc%2Fstable%2Fuser%2Fbasics.broadcasting.html).%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(np%2C%20x_2d)%3A%0A%20%20%20%20np.exp(x_2d)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22Crie%20suas%20pr%C3%B3prias%20fun%C3%A7%C3%B5es%20vetorizadas%20com%20%5B%60np.vectorize%60%5D(https%3A%2F%2Fnumpy.org%2Fdoc%2Fstable%2Freference%2Fgenerated%2Fnumpy.vectorize.html)%2C%20ou%20use%20%5Bas%20fun%C3%A7%C3%B5es%20j%C3%A1%20definidas%20pelo%20numpy%5D(https%3A%2F%2Fnumpy.org%2Fdoc%2Fstable%2Freference%2Fufuncs.html%23available-ufuncs).%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20%23%23%20Criando%20arrays%0A%0A%20%20%20%20%20%20%20%20Veja%20a%20%5Bdocumenta%C3%A7%C3%A3o%5D(https%3A%2F%2Fnumpy.org%2Fdoc%2Fstable%2Freference%2Froutines.array-creation.html%23routines-array-creation).%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(np)%3A%0A%20%20%20%20np.zeros(20).reshape((2%2C%2010))%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(np)%3A%0A%20%20%20%2020%20*%20np.ones(25)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(np)%3A%0A%20%20%20%20np.empty(150)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(np)%3A%0A%20%20%20%20np.zeros_like(np.empty(15))%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(np)%3A%0A%20%20%20%20np.full((2%2C%202)%2C%20None)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20%23%23%20Exerc%C3%ADcios%0A%0A%20%20%20%20%20%20%20%20Nota%3A%20muitos%20exerc%C3%ADcios%20podem%20ser%20encontrados%20%5Bneste%20link%5D(https%3A%2F%2Fgithub.com%2Frougier%2Fnumpy-100%2Fblob%2Fmaster%2F100_Numpy_exercises.ipynb)%2C%20alguns%20mais%20f%C3%A1ceis%2C%20e%20outros%20mais%20dif%C3%ADceis.%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20%23%23%23%23%20Ex.%20sigmoide%0A%0A%20%20%20%20%20%20%20%20Defina%20uma%20fun%C3%A7%C3%A3o%20%5Bsigmoide%5D(https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FSigmoid_function)%2C%20que%20%C3%A9%20uma%20das%20fun%C3%A7%C3%B5es%20usadas%20como%20fun%C3%A7%C3%A3o%20de%20ativa%C3%A7%C3%A3o%20de%20neur%C3%B4nios%20de%20uma%20rede%20neural%20artificial%3A%0A%0A%20%20%20%20%20%20%20%20%24%24%0A%20%20%20%20%20%20%20%20%5Csigma(x)%20%3D%20%5Cfrac%7B1%7D%7B1%20%2B%20e%5E%7B-x%7D%7D%0A%20%20%20%20%20%20%20%20%24%24%0A%0A%20%20%20%20%20%20%20%20Sua%20fun%C3%A7%C3%A3o%20deve%20ter%20como%20par%C3%A2metro%20e%20retorno%20um%20ndarray%20numpy.%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20def%20sigmoide(x)%3A%0A%20%20%20%20%20%20%20%20pass%0A%20%20%20%20return%20(sigmoide%2C)%0A%0A%0A%40app.cell%0Adef%20__(np%2C%20sua_sigmoide)%3A%0A%20%20%20%20sua_sigmoide(np.linspace(0%2C%2010%2C%20100))%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(timeit)%3A%0A%20%20%20%20timeit.timeit('np.reciprocal(x)'%2C%20setup%3D'import%20numpy%20as%20np%3B%20x%20%3D%20np.linspace(1%2C%2010%2C%20100000)'%2C%20number%3D100)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(timeit)%3A%0A%20%20%20%20timeit.timeit('1%20%2F%20x'%2C%20setup%3D'import%20numpy%20as%20np%3B%20x%20%3D%20np.linspace(1%2C%2010%2C%20100000)'%2C%20number%3D100)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(np)%3A%0A%20%20%20%20%23%20solu%C3%A7%C3%A3o%0A%20%20%20%20def%20sua_sigmoide(x)%3A%0A%20%20%20%20%20%20%20%20return%20np.reciprocal(1%20%2B%20np.exp(-x))%0A%20%20%20%20return%20(sua_sigmoide%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20%23%23%23%23%20Ex.%20distancia-euclidiana%0A%0A%20%20%20%20%20%20%20%20Crie%20uma%20fun%C3%A7%C3%A3o%20%60euclidian_distance%60%20que%20tem%20como%20par%C3%A2metros%20um%20array%20numpy%20com%20shape%20%24(n%2C%202)%24%20e%20um%20vetor%20numpy%20de%20%242%24%20elementos%20que%20calcula%20a%20dist%C3%A2ncia%20euclidiana%20entre%20cada%20linha%20do%20array%20bidimensional%20e%20o%20vetor%20par%C3%A2metro.%0A%0A%20%20%20%20%20%20%20%20N%C3%A3o%20use%20fun%C3%A7%C3%B5es%20que%20implementem%20a%20norma%20L2%20diretamente%2C%20como%20%60np.linalg.norm%60%20ou%20parecidas.%20Voc%C3%AA%20deve%20precisar%20da%20fun%C3%A7%C3%A3o%20%60np.sum%60%20(atente%20para%20seu%20par%C3%A2metro%20%60axis%60).%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20def%20euclidian_distance(M%2C%20v)%3A%0A%20%20%20%20%20%20%20%20pass%0A%20%20%20%20return%20(euclidian_distance%2C)%0A%0A%0A%40app.cell%0Adef%20__(np%2C%20sua_euclidian_distance)%3A%0A%20%20%20%20M%20%3D%20np.arange(0%2C%2010).reshape((5%2C%202))%0A%20%20%20%20v%20%3D%20np.array(%5B1%2C%201%5D)%0A%20%20%20%20sua_euclidian_distance(M%2C%20v)%0A%20%20%20%20return%20M%2C%20v%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(M%2C%20np)%3A%0A%20%20%20%20print(M)%0A%20%20%20%20np.sum(M%2C%20axis%3D0)%2C%20np.sum(M%2C%20axis%3D1)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(np)%3A%0A%20%20%20%20%23%20solu%C3%A7%C3%A3o%0A%20%20%20%20def%20sua_euclidian_distance(M%2C%20x)%3A%0A%20%20%20%20%20%20%20%20return%20np.sqrt(np.sum((M%20-%20x)%20**%202%2C%20axis%3D1))%0A%20%20%20%20return%20(sua_euclidian_distance%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20%23%23%23%23%20Ex.%20manhattan-distance%0A%0A%20%20%20%20%20%20%20%20Defina%20tamb%C3%A9m%20uma%20fun%C3%A7%C3%A3o%20%60manhattan_distance%60%20com%20os%20mesmos%20par%C3%A2metros%20que%20calcula%20a%20%5Bdist%C3%A2ncia%20de%20manhattan%5D(https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FTaxicab_geometry%23Formal_definition)%20entre%20as%20linhas%20do%20array%202D%20e%20o%20vetor%20par%C3%A2metro.%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20def%20sua_manhattan_distance(M%2C%20v)%3A%0A%20%20%20%20%20%20%20%20pass%0A%20%20%20%20return%20(sua_manhattan_distance%2C)%0A%0A%0A%40app.cell%0Adef%20__(M%2C%20manhattan_distance%2C%20v)%3A%0A%20%20%20%20print(M)%0A%20%20%20%20print(v)%0A%20%20%20%20manhattan_distance(M%2C%20v)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(np)%3A%0A%20%20%20%20%23%20solu%C3%A7%C3%A3o%0A%20%20%20%20def%20manhattan_distance(M%2C%20v)%3A%0A%20%20%20%20%20%20%20%20return%20np.sum(np.absolute(M%20-%20v)%2C%20axis%3D1)%0A%20%20%20%20return%20(manhattan_distance%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20%23%23%23%23%20Ex.%20coupon-pricing%0A%0A%20%20%20%20%20%20%20%20O%20valor%20presente%20%24P%24%20de%20um%20t%C3%ADtulo%20a%20uma%20taxa%20de%20desconto%20%24i%24%20%C3%A9%3A%0A%0A%20%20%20%20%20%20%20%20%24%24%0A%20%20%20%20%20%20%20%20%5Cbegin%7Bsplit%7D%0A%20%20%20%20%20%20%20%20%5Cbegin%7Balign*%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20P%20%26%3D%20%5Cleft(%5Csum_%7Bn%3D1%7D%5EN%20%5Cfrac%7BC%7D%7B(i%2B1)%5En%7D%5Cright)%20%2B%20%5Cfrac%7BM%7D%7B(1%2Bi)%5EN%7D%20%5C%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26%3D%20C%20%5Cleft(%5Cfrac%7B1%20-%20(1%2Bi)%5E%7B-N%7D%7D%7Bi%7D%20%5Cright)%20%2B%20M(1%2Bi)%5E%7B-N%7D%0A%20%20%20%20%20%20%20%20%5Cend%7Balign*%7D%0A%20%20%20%20%20%20%20%20%5Cend%7Bsplit%7D%0A%20%20%20%20%20%20%20%20%24%24%0A%0A%20%20%20%20%20%20%20%20Se%20o%20t%C3%ADtulo%20paga%20cupom%20%24C%24%20a%20cada%20per%C3%ADodo%2C%20e%20paga%20o%20valor%20de%20face%20%24M%24%20quando%20atinge%20sua%20maturidade%20depois%20de%20%24N%24%20per%C3%ADodos.%0A%0A%20%20%20%20%20%20%20%20(Ainda)%20sem%20usar%20numpy%2C%0A%0A%20%20%20%20%20%20%20%20-%20escreva%20uma%20fun%C3%A7%C3%A3o%20%60npv_bond_py%60%20que%20calcula%20o%20valor%20presente%20de%20um%20t%C3%ADtulo%20dados%20os%20par%C3%A2metros%20%24C%24%2C%20%24M%24%2C%20%24N%24%20e%20%24i%24%3B%0A%20%20%20%20%20%20%20%20-%20calcule%20o%20valor%20presente%20dos%20t%C3%ADtulos%20com%20maturidade%20de%201%20a%2010%20(inclusive)%2C%20usando%20%24i%20%3D%200.03%24%2C%20%24M%20%3D%20100%24%2C%20e%20%24C%20%3D%205%24%3B%0A%0A%20%20%20%20%20%20%20%20Agora%20usando%20numpy%2C%0A%0A%20%20%20%20%20%20%20%20-%20defina%20um%20array%20contendo%20as%20maturidades%20de%201%20a%2010%20(inclusive)%3B%0A%20%20%20%20%20%20%20%20-%20calcule%20o%20valor%20presente%20dos%20t%C3%ADtulos%20com%20maturidade%20de%201%20a%2010%2C%20novamente%20usando%20%24i%20%3D%200.03%24%2C%20%24M%20%3D%20100%24%2C%20e%20%24C%20%3D%205%24.%0A%0A%20%20%20%20%20%20%20%20**B%C3%B4nus**%3A%20usando%20o%20m%C3%B3dulo%20%60timeit%60%20empregado%20acima%2C%20compare%20o%20tempo%20de%20execu%C3%A7%C3%A3o%20com%20e%20sem%20numpy%2C%20usando%20valores%20maiores%20de%20%24N%24%20para%20que%20a%20diferen%C3%A7a%20seja%20maior.%0A%0A%20%20%20%20%20%20%20%20Adaptado%20do%20%5Bmaterial%20do%20QuantEcon%5D(https%3A%2F%2Fdatascience.quantecon.org%2Fscientific%2Fnumpy_arrays.html%23exercise-5).%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20def%20npv_bond_py(C%2C%20M%2C%20N%2C%20i)%3A%0A%20%20%20%20%20%20%20%20pass%0A%20%20%20%20return%20(npv_bond_py%2C)%0A%0A%0A%40app.cell%0Adef%20__(sua_npv_bond_py)%3A%0A%20%20%20%20i%20%3D%200.03%0A%20%20%20%20_M%20%3D%20100%0A%20%20%20%20C%20%3D%205%0A%20%20%20%20%5Bsua_npv_bond_py(C%2C%20_M%2C%20N%2C%20i)%20for%20N%20in%20range(1%2C%2011)%5D%0A%20%20%20%20return%20C%2C%20i%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__()%3A%0A%20%20%20%20%23%20solu%C3%A7%C3%A3o%20sem%20numpy%0A%20%20%20%20def%20sua_npv_bond_py(C%2C%20M%2C%20N%2C%20i)%3A%0A%20%20%20%20%20%20%20%20%23%20%23%20Usando%20a%20primeira%20f%C3%B3rmula%0A%20%20%20%20%20%20%20%20%23%20V%20%3D%20(C%20%2B%20M)%20%2F%20((1%20%2B%20i)%20**%20N)%0A%20%20%20%20%20%20%20%20%23%20for%20n%20in%20range(1%2C%20N)%3A%0A%20%20%20%20%20%20%20%20%23%20%20%20%20%20V%20%2B%3D%20C%20%2F%20((1%20%2B%20i)%20**%20n)%0A%20%20%20%20%20%20%20%20%23%20return%20V%0A%20%20%20%20%20%20%20%20d%20%3D%20(1%20%2B%20i)%20**%20(-N)%0A%20%20%20%20%20%20%20%20return%20C%20*%20((1%20-%20d)%20%2F%20i)%20%2B%20M%20*%20d%0A%20%20%20%20return%20(sua_npv_bond_py%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(C%2C%20i%2C%20np)%3A%0A%20%20%20%20%23%20solu%C3%A7%C3%A3o%20numpy%0A%20%20%20%20n%20%3D%20np.arange(1%2C%2011)%0A%20%20%20%20_M%20%3D%20100%0A%20%20%20%20d%20%3D%20(1%20%2B%20i)%20**%20(-n)%0A%20%20%20%20ps%20%3D%20C%20*%20((1%20-%20d)%20%2F%20i)%20%2B%20_M%20*%20d%0A%20%20%20%20ps%0A%20%20%20%20return%20d%2C%20n%2C%20ps%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20%23%23%23%23%20Ex.%20soma-mult-pares%0A%0A%20%20%20%20%20%20%20%20Defina%20duas%20vers%C3%B5es%20(sem%20e%20com%20Numpy)%20da%20fun%C3%A7%C3%A3o%20que%20tem%20como%20par%C3%A2metros%20dois%20vetores%20%24X%24%20e%20%24Y%24%2C%20e%20retorna%20a%20soma%20de%20%60X%5Bi%5D%20*%20Y%5Bj%5D%60%20para%20todo%20par%20de%20%C3%ADndices%20%60i%60%20e%20%60j%60%20dos%20vetores%20%24X%24%20e%20%24Y%24%20respectivamente.%0A%0A%20%20%20%20%20%20%20%20**Note**%3A%20voc%C3%AA%20n%C3%A3o%20dever%C3%A1%20usar%20_loops_%20na%20solu%C3%A7%C3%A3o%20numpy%2C%20naturalmente.%0A%0A%20%20%20%20%20%20%20%20**Dica**%3A%20para%20a%20solu%C3%A7%C3%A3o%20numpy%2C%20determine%20o%20n%C3%BAmero%20total%20de%20pares%20de%20%C3%ADndices%20que%20ser%C3%A3o%20considerados.%20Qual%20opera%C3%A7%C3%A3o%20que%20lhe%20dar%C3%A1%20um%20objeto%20com%20esse%20n%C3%BAmero%20de%20elementos%3F%0A%0A%20%20%20%20%20%20%20%20**B%C3%B4nus**%3A%20voc%C3%AA%20consegue%20pensar%20em%20alguma%20identidade%20matem%C3%A1tica%20que%20lhe%20permita%20simplificar%20o%20problema%3F%0A%0A%20%20%20%20%20%20%20%20Exerc%C3%ADcio%20do%20livro%20%5B_From%20Python%20to%20Numpy_%5D(https%3A%2F%2Fwww.labri.fr%2Fperso%2Fnrougier%2Ffrom-python-to-numpy%2F)%2C%20de%20Nicolas%20P%5C.%20Rougier.%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20def%20soma_mult_py(X%2C%20Y)%3A%0A%20%20%20%20%20%20%20%20...%0A%20%20%20%20return%20(soma_mult_py%2C)%0A%0A%0A%40app.cell%0Adef%20__(sua_soma_mult_py)%3A%0A%20%20%20%20sua_soma_mult_py(%5B1%2C%202%2C%203%5D%2C%20%5B4%2C%205%2C%206%2C%207%5D)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__()%3A%0A%20%20%20%20%23%20solu%C3%A7%C3%A3o%20Python%0A%20%20%20%20def%20sua_soma_mult_py(X%2C%20Y)%3A%0A%20%20%20%20%20%20%20%20r%20%3D%200%0A%20%20%20%20%20%20%20%20for%20x%20in%20X%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20y%20in%20Y%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20r%20%2B%3D%20x%20*%20y%0A%20%20%20%20%20%20%20%20return%20r%0A%20%20%20%20return%20(sua_soma_mult_py%2C)%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20def%20soma_mult_np(X%2C%20Y)%3A%0A%20%20%20%20%20%20%20%20...%0A%20%20%20%20return%20(soma_mult_np%2C)%0A%0A%0A%40app.cell%0Adef%20__(np%2C%20sua_soma_mult_np)%3A%0A%20%20%20%20sua_soma_mult_np(np.array(%5B1%2C%202%2C%203%5D)%2C%20np.array(%5B4%2C%205%2C%206%2C%207%5D))%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(np)%3A%0A%20%20%20%20%23%20solu%C3%A7%C3%A3o%20numpy%0A%20%20%20%20def%20sua_soma_mult_np(X%2C%20Y)%3A%0A%20%20%20%20%20%20%20%20Xcol%20%3D%20X.reshape(len(X)%2C%201)%0A%20%20%20%20%20%20%20%20Ylin%20%3D%20Y.reshape(1%2C%20len(Y))%0A%20%20%20%20%20%20%20%20return%20np.sum(Xcol%20%40%20Ylin)%0A%20%20%20%20return%20(sua_soma_mult_np%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%23%23%20Mais%20fun%C3%A7%C3%B5es%20Numpy%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(np)%3A%0A%20%20%20%20np.all(np.array(%5BTrue%2C%20True%2C%20True%5D))%2C%20np.all(np.array(%5BTrue%2C%20True%2C%20False%5D))%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(np)%3A%0A%20%20%20%20np.any(np.array(%5BTrue%2C%20True%2C%20False%5D))%2C%20np.any(np.array(%5BFalse%2C%20False%2C%20False%2C%20False%5D))%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(np)%3A%0A%20%20%20%20np.unique(np.array(%5BFalse%2C%20False%2C%20False%2C%20False%2C%20True%5D))%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(I3%2C%20np)%3A%0A%20%20%20%20np.unique(I3%2C%20return_counts%3DTrue)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(I3%2C%20np)%3A%0A%20%20%20%20np.unique(I3%2C%20return_index%3DTrue)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(I3%2C%20np)%3A%0A%20%20%20%20np.ravel(I3)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(I3%2C%20np)%3A%0A%20%20%20%20np.ravel(I3)%5B%5B1%2C%200%5D%5D%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(I3)%3A%0A%20%20%20%20I3.flatten()%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(I3%2C%20np)%3A%0A%20%20%20%20%23%20ravel%20won't%20copy%20unless%20necessary%2C%20flatten%20will%20always%20copy%20array%0A%20%20%20%20np.ravel(I3).base%20is%20I3%2C%20I3.flatten().base%20is%20I3%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(np)%3A%0A%20%20%20%20np.amax(np.arange(0%2C%2010))%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(np)%3A%0A%20%20%20%20a09%20%3D%20np.arange(1%2C10).reshape((3%2C%203))%0A%20%20%20%20print(a09)%2C%20print()%0A%20%20%20%20print(np.amax(a09))%2C%20print()%0A%20%20%20%20print(np.amax(a09%2C%20axis%3D0))%2C%20print()%0A%20%20%20%20print(np.amax(a09%2C%20axis%3D1))%0A%20%20%20%20return%20(a09%2C)%0A%0A%0A%40app.cell%0Adef%20__(a09%2C%20np)%3A%0A%20%20%20%20print(np.argmax(a09)%2C%20np.ravel(a09)%5Bnp.argmax(a09)%5D)%2C%20print()%0A%20%20%20%20print(np.argmax(a09%2C%20axis%3D0))%2C%20print()%0A%20%20%20%20print(np.argmax(a09%2C%20axis%3D1))%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(I3%2C%20np)%3A%0A%20%20%20%20np.maximum(I3%2C%20np.array(%5B0%2C%201%2C%200%5D))%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(np)%3A%0A%20%20%20%20empty%20%3D%20np.empty(9).reshape((3%2C%203))%0A%20%20%20%20empty%0A%20%20%20%20return%20(empty%2C)%0A%0A%0A%40app.cell%0Adef%20__(I3%2C%20empty%2C%20np)%3A%0A%20%20%20%20np.maximum(I3%2C%20np.array(%5B0%2C%201%2C%200%5D)%2C%20out%3Dempty)%0A%20%20%20%20empty%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(I3%2C%20np)%3A%0A%20%20%20%20np.sort(I3)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(I3%2C%20np)%3A%0A%20%20%20%20np.sort(I3%2C%20axis%3D0)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(I3%2C%20np)%3A%0A%20%20%20%20np.sort(I3%2C%20axis%3DNone)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%23%23%20%C3%81lgebra%20Linear%20com%20Numpy%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%23%23%23%20Multiplica%C3%A7%C3%A3o%20de%20matrizes%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(np)%3A%0A%20%20%20%20x1%20%3D%20np.reshape(np.arange(6)%2C%20(3%2C%202))%0A%20%20%20%20x2%20%3D%20np.array(%5B%5B1%2C%202%5D%2C%20%5B3%2C%204%5D%2C%20%5B5%2C%206%5D%2C%20%5B7%2C%208%5D%5D)%0A%20%20%20%20x3%20%3D%20np.array(%5B%5B2%2C%205%2C%202%5D%2C%20%5B1%2C%202%2C%201%5D%5D)%0A%20%20%20%20x4%20%3D%20np.ones((2%2C%203))%0A%0A%20%20%20%20y1%20%3D%20np.array(%5B1%2C%202%2C%203%5D)%0A%20%20%20%20y2%20%3D%20np.array(%5B0.5%2C%200.5%5D)%0A%20%20%20%20return%20x1%2C%20x2%2C%20x3%2C%20x4%2C%20y1%2C%20y2%0A%0A%0A%40app.cell%0Adef%20__(x1%2C%20x4)%3A%0A%20%20%20%20print(x1.shape)%0A%20%20%20%20print(x4.shape)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(np%2C%20x1%2C%20x4)%3A%0A%20%20%20%20print(%22Using%20the%20matmul%20function%20for%20two%20matrices%22)%0A%20%20%20%20print(np.matmul(x1%2C%20x4))%0A%20%20%20%20print(%22Using%20the%20dot%20function%20for%20two%20matrices%22)%0A%20%20%20%20print(np.dot(x1%2C%20x4))%0A%20%20%20%20print(%22Using%20%40%20for%20two%20matrices%22)%0A%20%20%20%20print(x1%20%40%20x4)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(x1%2C%20y1)%3A%0A%20%20%20%20print(y1.shape%2C%20x1.shape)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(np%2C%20x1%2C%20y1)%3A%0A%20%20%20%20print(%22Using%20the%20matmul%20function%20for%20vec%20and%20mat%22)%0A%20%20%20%20print(np.matmul(y1%2C%20x1))%0A%20%20%20%20print(%22Using%20the%20dot%20function%20for%20vec%20and%20mat%22)%0A%20%20%20%20print(np.dot(y1%2C%20x1))%0A%20%20%20%20print(%22Using%20%40%20for%20vec%20and%20mat%22)%0A%20%20%20%20print(y1%20%40%20x1)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%23%23%23%20Transposi%C3%A7%C3%A3o%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(x1)%3A%0A%20%20%20%20x1%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(x1)%3A%0A%20%20%20%20x1.transpose()%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(x1)%3A%0A%20%20%20%20x1.T%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%23%23%23%20Matriz%20Identidade%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(np)%3A%0A%20%20%20%20np.eye(3)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(I3%2C%20x1)%3A%0A%20%20%20%20I3%20%40%20x1%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(x1)%3A%0A%20%20%20%20x1%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%23%23%23%20Inversa%20de%20uma%20matriz%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(np)%3A%0A%20%20%20%20%23%20This%20is%20a%20square%20(N%20x%20N)%20non-singular%20matrix%0A%20%20%20%20A%20%3D%20np.array(%5B%5B1%2C%202%2C%200%5D%2C%20%5B3%2C%201%2C%200%5D%2C%20%5B0%2C%201%2C%202%5D%5D)%0A%20%20%20%20print(%22This%20is%20A%22%2C%20A%2C%20sep%3D'%5Cn')%0A%20%20%20%20print(%22This%20is%20A%20inverse%22)%0A%0A%20%20%20%20invA%20%3D%20np.linalg.inv(A)%0A%20%20%20%20print(invA)%0A%0A%20%20%20%20print(%22Check%20that%20A%20%40%20A%20inverse%20is%20I%22)%0A%20%20%20%20print(invA%20%40%20A)%0A%20%20%20%20return%20A%2C%20invA%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%23%23%20Comparando%20arrays%20num%C3%A9ricos%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(A%2C%20I3%2C%20invA)%3A%0A%20%20%20%20print(I3)%0A%20%20%20%20print(invA%20%40%20A%20%3D%3D%20I3)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(A%2C%20I3%2C%20invA%2C%20np)%3A%0A%20%20%20%20np.isclose(invA%20%40%20A%2C%20I3)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(A%2C%20I3%2C%20invA%2C%20np)%3A%0A%20%20%20%20np.allclose(invA%20%40%20A%2C%20I3)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%23%20Exerc%C3%ADcios%20(cont.)%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20%23%23%23%23%20Ex.%20valor-portf%C3%B3lio%0A%0A%20%20%20%20%20%20%20%20Calcule%20o%20valor%20de%20um%20portf%C3%B3lio%20de%20ativos%2C%20com%20e%20sem%20numpy.%20Escreva%20duas%20fun%C3%A7%C3%B5es%20cujos%20par%C3%A2metros%20s%C3%A3o%20um%20vetor%20de%20pre%C3%A7os%20unit%C3%A1rios%20%24p%24%20e%20um%20vetor%20de%20quantidades%20de%20ativos%20%24q%24%2C%20com%20%24p_i%24%20sendo%20o%20pre%C3%A7o%20do%20ativo%20%24i%24%2C%20e%20%24q_i%24%20sendo%20a%20quantidade%20do%20ativo%20%24i%24%20no%20portf%C3%B3lio.%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20def%20your_portfolio_value_py(p%2C%20q)%3A%0A%20%20%20%20%20%20%20%20...%0A%20%20%20%20return%20(your_portfolio_value_py%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__()%3A%0A%20%20%20%20%23%20solu%C3%A7%C3%A3o%20python%0A%20%20%20%20def%20portfolio_value_py(p%2C%20q)%3A%0A%20%20%20%20%20%20%20%20pval%20%3D%20.0%0A%20%20%20%20%20%20%20%20n%20%3D%20len(p)%0A%20%20%20%20%20%20%20%20assert%20n%20%3D%3D%20len(q)%0A%20%20%20%20%20%20%20%20for%20i%20in%20range(n)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20pval%20%2B%3D%20p%5Bi%5D%20*%20q%5Bi%5D%0A%20%20%20%20%20%20%20%20return%20pval%0A%20%20%20%20return%20(portfolio_value_py%2C)%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20def%20your_portfolio_value(p%2C%20q)%3A%0A%20%20%20%20%20%20%20%20...%0A%20%20%20%20return%20(your_portfolio_value%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__()%3A%0A%20%20%20%20%23%20solu%C3%A7%C3%A3o%20numpy%0A%20%20%20%20def%20portfolio_value(p%2C%20q)%3A%0A%20%20%20%20%20%20%20%20return%20p%20%40%20q%0A%20%20%20%20return%20(portfolio_value%2C)%0A%0A%0A%40app.cell%0Adef%20__(np%2C%20portfolio_value%2C%20portfolio_value_py)%3A%0A%20%20%20%20q%20%3D%20%5B4.0%2C%202.5%2C%208.0%5D%0A%20%20%20%20p%20%3D%20%5B3.0%2C%205.0%2C%201.1%5D%0A%20%20%20%20valP%20%3D%20portfolio_value(np.array(p)%2C%20np.array(q))%0A%20%20%20%20valP%2C%20valP%20%3D%3D%20portfolio_value_py(p%2C%20q)%0A%20%20%20%20return%20p%2C%20q%2C%20valP%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20%23%23%23%23%20Ex.%20simula%C3%A7%C3%A3o%0A%0A%20%20%20%20%20%20%20%20Considere%20uma%20economia%20na%20qual%2C%20a%20cada%20ano%2C%20%24%5Calpha%24%20dos%20trabalhadores%20perdem%20seus%20empregos%2C%20e%20%24%5Cphi%24%20dos%20desempregados%20encontram%20empregos.%0A%0A%20%20%20%20%20%20%20%20Defina-se%20o%20vetor%20%24x_t%20%3D%20%5Cbegin%7Bbmatrix%7D%20e_t%20%26%20d_t%20%5Cend%7Bbmatrix%7D%24%2C%20em%20que%20%24e_t%24%20%C3%A9%20o%20n%C3%BAmero%20de%20trabalhadores%20empregados%20e%20%24d_t%24%20%C3%A9%20o%20n%C3%BAmero%20de%20trabalhadores%20desempregados%20no%20per%C3%ADodo%20%24t%24.%0A%0A%20%20%20%20%20%20%20%20(1)%20Escreva%20uma%20fun%C3%A7%C3%A3o%20que%20calcula%20o%20vetor%20%24x_t%24%20com%20base%20no%20vetor%20par%C3%A2metro%20%24x_%7Bt-1%7D%24%2C%20e%20nos%20par%C3%A2metros%20%24%5Calpha%24%20e%20%24%5Cphi%24.%0A%0A%20%20%20%20%20%20%20%20**Dica**%3A%20na%20sua%20fun%C3%A7%C3%A3o%2C%20defina%20a%20matriz%3A%0A%0A%20%20%20%20%20%20%20%20%5Cbegin%7Bsplit%7D%0A%20%20%20%20%20%20%20%20A%20%3D%20%5Cbegin%7Bbmatrix%7D%201%20-%20%5Calpha%20%26%20%5Calpha%20%5C%5C%20%5Cphi%20%26%201%20-%20%5Cphi%20%5Cend%7Bbmatrix%7D%0A%20%20%20%20%20%20%20%20%5Cend%7Bsplit%7D%0A%0A%20%20%20%20%20%20%20%20(2)%20Defina%20uma%20fun%C3%A7%C3%A3o%20que%20retorna%20uma%20lista%20dos%20vetores%20%24x_i%24%20para%20%24i%20%5Cin%20%5B0%2C%20t%5D%24%2C%20dados%20os%20par%C3%A2metros%20%24t%24%2C%20%24x_0%24%2C%20%24%5Calpha%24%20e%20%24%5Cphi%24.%0A%0A%20%20%20%20%20%20%20%20(3)%20**(b%C3%B4nus)**%20Usando%20%60matplotlib%60%2C%20crie%20uma%20fun%C3%A7%C3%A3o%20que%20plota%20as%20curvas%20dos%20n%C3%BAmeros%20de%20desempregados%20e%20de%20empregados.%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20%23%23%23%20Atribui%C3%A7%C3%A3o%0A%0A%20%20%20%20%20%20%20%20Apresenta%C3%A7%C3%A3o%20baseada%20nas%20aulas%20do%20QuantEcon%20%5B%5B1%5D%5D(https%3A%2F%2Fdatascience.quantecon.org%2Fscientific%2Fnumpy_arrays.html)%20%5B%5B2%5D%5D(https%3A%2F%2Fdatascience.quantecon.org%2Fscientific%2Fapplied_linalg.html)%2C%20sob%20licen%C3%A7a%20%5BCreative%20Commons%5D(https%3A%2F%2Fcreativecommons.org%2Flicenses%2Fby-sa%2F4.0%2F).%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20app.run()%0A
32dc2ba397162a9b1802f69d1cad31058bd4f3126cf50f39720e438e19eb17b7