%23%20%2F%2F%2F%20script%0A%23%20dependencies%20%3D%20%5B%0A%23%20%20%20%20%20%22marimo%22%2C%0A%23%20%20%20%20%20%22matplotlib%3D%3D3.10.8%22%2C%0A%23%20%20%20%20%20%22numpy%3D%3D2.4.2%22%2C%0A%23%20%20%20%20%20%22torch%3D%3D2.10.0%22%2C%0A%23%20%5D%0A%23%20requires-python%20%3D%20%22%3E%3D3.13%22%0A%23%20%2F%2F%2F%0A%0Aimport%20marimo%0A%0A__generated_with%20%3D%20%220.20.2%22%0Aapp%20%3D%20marimo.App(width%3D%22medium%22)%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20import%20marimo%20as%20mo%0A%20%20%20%20import%20torch%0A%20%20%20%20import%20numpy%20as%20np%0A%20%20%20%20import%20matplotlib.pyplot%20as%20plt%0A%0A%20%20%20%20return%20plt%2C%20torch%0A%0A%0A%40app.cell%0Adef%20_(torch)%3A%0A%20%20%20%20device%20%3D%20(%0A%20%20%20%20%20%20%20%20torch.accelerator.current_accelerator().type%0A%20%20%20%20%20%20%20%20if%20torch.accelerator.is_available()%0A%20%20%20%20%20%20%20%20else%20%22cpu%22%0A%20%20%20%20)%0A%20%20%20%20print(f%22Using%20%7Bdevice%7D%20device%22)%0A%20%20%20%20torch.set_default_device(device)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(torch)%3A%0A%20%20%20%20a%20%3D%20torch.rand(1%2C%20requires_grad%3DTrue)%0A%20%20%20%20b%20%3D%20torch.rand(1%2C%20requires_grad%3DTrue)%0A%20%20%20%20c%20%3D%20torch.rand(1%2C%20requires_grad%3DTrue)%0A%20%20%20%20d%20%3D%20torch.rand(1%2C%20requires_grad%3DTrue)%0A%20%20%20%20print(a%2C%20b%2C%20c%2C%20d)%0A%20%20%20%20return%20a%2C%20b%2C%20c%2C%20d%0A%0A%0A%40app.cell%0Adef%20_(torch)%3A%0A%20%20%20%20xs%20%3D%20torch.linspace(start%3D0.0%2C%20end%3D1.0%2C%20steps%3D101)%0A%20%20%20%20xs%0A%20%20%20%20return%20(xs%2C)%0A%0A%0A%40app.cell%0Adef%20_(torch%2C%20xs)%3A%0A%20%20%20%20target%20%3D%20torch.cos(2.0%20*%20torch.pi%20*%20xs)%0A%20%20%20%20target%0A%20%20%20%20return%20(target%2C)%0A%0A%0A%40app.cell%0Adef%20_(a%2C%20b%2C%20c%2C%20d%2C%20plt%2C%20target%2C%20xs)%3A%0A%20%20%20%20_fig%2C%20_rep%20%3D%20plt.subplots()%0A%20%20%20%20_rep.plot(xs.cpu()%2C%20target.cpu()%2C%20label%3D%22target%22)%0A%20%20%20%20_ys%20%3D%20(((a%20*%20xs%20%2B%20b)%20*%20xs%20%2B%20c)%20*%20xs%20%2B%20d).detach()%0A%20%20%20%20_rep.plot(xs.cpu()%2C%20_ys.cpu()%2C%20label%3D%22First%20Guess%22)%0A%20%20%20%20_rep.legend()%0A%20%20%20%20_rep%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(target%2C%20torch%2C%20xs)%3A%0A%20%20%20%20def%20entrainement(N%2C%20eps%2C%20params)%3A%0A%20%20%20%20%20%20%20%20a%2C%20b%2C%20c%2C%20d%20%3D%20params%0A%20%20%20%20%20%20%20%20for%20_%20in%20range(N)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20ys%20%3D%20((a%20*%20xs%20%2B%20b)%20*%20xs%20%2B%20c)%20*%20xs%20%2B%20d%0A%20%20%20%20%20%20%20%20%20%20%20%20erreur%20%3D%20(ys%20-%20target).pow(2).sum()%20%2F%20101%0A%20%20%20%20%20%20%20%20%20%20%20%20erreur.backward()%0A%20%20%20%20%20%20%20%20%20%20%20%20with%20torch.no_grad()%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20a%20-%3D%20eps%20*%20a.grad%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20b%20-%3D%20eps%20*%20b.grad%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20c%20-%3D%20eps%20*%20c.grad%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20d%20-%3D%20eps%20*%20d.grad%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20a.grad%20%3D%20None%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20b.grad%20%3D%20None%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20c.grad%20%3D%20None%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20d.grad%20%3D%20None%0A%0A%20%20%20%20return%20(entrainement%2C)%0A%0A%0A%40app.cell%0Adef%20_(a%2C%20b%2C%20c%2C%20d%2C%20entrainement)%3A%0A%20%20%20%20entrainement(N%3D1_000_000%2C%20eps%3D0.001%2C%20params%3D(a%2C%20b%2C%20c%2C%20d))%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(a%2C%20b%2C%20c%2C%20d%2C%20plt%2C%20target%2C%20xs)%3A%0A%20%20%20%20_fig%2C%20_rep%20%3D%20plt.subplots()%0A%20%20%20%20_rep.plot(xs.cpu()%2C%20target.cpu()%2C%20label%3D%22target%22)%0A%20%20%20%20_ys%20%3D%20(((a%20*%20xs%20%2B%20b)%20*%20xs%20%2B%20c)%20*%20xs%20%2B%20d).detach()%0A%20%20%20%20_rep.plot(xs.cpu()%2C%20_ys.cpu()%2C%20label%3D%22New%20Guess%22)%0A%20%20%20%20_rep.legend()%0A%20%20%20%20_rep%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_()%3A%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
336af2598a3295c83bc2c97b1cf00901