- Le 2021-03-12, j'utilise Julia_1.6.0-rc1 sur VS_Code_1.54.2. Ordinateur : W10 Pro, i9-10900F.
- Préalables, mes billets précédents sur Julia sont supposés connus et assimilés.
Le langage Julia étant basé sur les types, l'idée d'écrire un paquet gérant les types du système métrique allait de soi. La liste des unités disponibles dans Unitful.
Nous testons Unitful en Cinématique, Circuit électrique série simple et Thermique.
Si Unitful vous renvoie une erreur, soyez certain qu'il y a une erreur dans votre code ou dans votre choix des unités. Le choix de l'unité correcte n'est pas toujours une évidence, ainsi le cas du coefficient d'expansion (α = 1.2e-5u"1/K" dans le chapitre Thermique. Le Kelvin est une unité de référence (@refunit K "K" Kelvin) et on n'écrit pas °K mais K.
Unitful n'est pas seul, il y a des paquets spécialisés.
Le reste de ce billet est dans un notebook Pluto, code ci-dessous. Nous aurons besoin des paquets Pluto v0.12.21 et Unitful v1.6.0.
Si vous ne connaissez pas Pluto, voir "Julia. Notebook Pluto sur Chrome avec VSCode".
Voici un lien vers la page HTML statique.
Les codes Julia utilisent souvent de manière intensive les caractères Unicode.
Nous testons Unitful en Cinématique, Circuit électrique série simple et Thermique.
Si Unitful vous renvoie une erreur, soyez certain qu'il y a une erreur dans votre code ou dans votre choix des unités. Le choix de l'unité correcte n'est pas toujours une évidence, ainsi le cas du coefficient d'expansion (α = 1.2e-5u"1/K" dans le chapitre Thermique. Le Kelvin est une unité de référence (@refunit K "K" Kelvin) et on n'écrit pas °K mais K.
Unitful n'est pas seul, il y a des paquets spécialisés.
Le reste de ce billet est dans un notebook Pluto, code ci-dessous. Nous aurons besoin des paquets Pluto v0.12.21 et Unitful v1.6.0.
Si vous ne connaissez pas Pluto, voir "Julia. Notebook Pluto sur Chrome avec VSCode".
Voici un lien vers la page HTML statique.
Les codes Julia utilisent souvent de manière intensive les caractères Unicode.
Rappel
Ω \Omega<tab> μ \mu<tab> Δ \Delta<tab> α \alpha<tab>
DVP ne gérant toujours pas correctement les caractères Unicode Julia, je vous donne le code dans un bloc PRE.
### A Pluto.jl notebook ### # v0.12.21 using Markdown using InteractiveUtils # ╔═╡ edc89e80-7e55-11eb-1a83-f5b701337ad5 begin using PlutoUI, Unitful html"""<style> html { background-color: rgba(237, 196, 33, .55); } main { max-width: 1200px; } </style>""" end # ╔═╡ 707796a0-7ff6-11eb-03f9-239bf8bbd81b md"### Tests du paquet Unitful Ce paquet permet d'utiliser le système international d'unités" # ╔═╡ c2e42040-80ad-11eb-3452-cb40c524090e md"""###### Documentations + [Unitful] (https://painterqubits.github.io/Unitful.jl/stable/) + [Unitful.jl/src/pkgdefaults.jl] (https://github.com/PainterQubits/Unitful.jl/blob/master/src/pkgdefaults.jl) """ # ╔═╡ 75748d20-8000-11eb-19f2-930bd7d3e58a md"Daniel Hagnoul 2021-03-08T12:20:42.048+01:00" # ╔═╡ cf9798c0-8252-11eb-26b8-d1e0ef8abae3 md"Si Unitful vous renvoie une erreur, soyez certain qu'il y a une erreur dans votre code ou dans votre choix des unités. Le choix de l'unité correcte n'est pas toujours une évidence, ainsi le cas du coefficient d'expansion (`α = 1.2e-5u\"1/K\"`) dans le chapitre Thermique. Le Kelvin est une unité de référence (`@refunit K \"K\" Kelvin`) et on n'écrit pas °K mais K." # ╔═╡ f71d4fe2-8250-11eb-0f3e-b595971fccf4 md"#### Cinématique" # ╔═╡ 04ec02b0-8251-11eb-063e-d77434ad938d md"""| variables | équations | | :---- | :---- | | d distance en m | d = vi*t + 0.5*a*t^2 | | v vitesse en m/s | d = (Vi^2 * t)/2 | | t temps en s | Vf = Vi + at | | a accélération en m/s^2 | vf^2 = vi^2 + 2*a*d | """ # ╔═╡ d1f4df20-8251-11eb-2387-07cb4cb2b13c md"###### Calculer la distance de freinage" # ╔═╡ 17fa0900-8257-11eb-18f4-9d7358b5986e md""" $(Resource("http://www.physicsclassroom.com/Class/1DKin/U1L6b1.gif", :width => 300)) """ # ╔═╡ f4ec97c0-8251-11eb-3da8-d7cc91349851 let vi = 30u"m/s" # n'écrivez jamais u"ms^-1" vf = 0u"m/s" a = -8u"m/s^2" # on utilise vi^2 = vi^2 + 2ad d = (vf^2 - vi^2) / (2a) Print(d) end # ╔═╡ 25592360-8252-11eb-1199-bbfa4d87e9c8 md"###### Calculer la distance parcourue" # ╔═╡ 40a93a10-8257-11eb-062b-5b47eac4941d md""" $(Resource("http://www.physicsclassroom.com/Class/1DKin/U1L6b3.gif", :width => 300)) """ # ╔═╡ 35e54880-8252-11eb-018c-a7bc3157a163 let t = 4.1u"s" vi = 0u"m/s" a = 6u"m/s^2" # on utilise d = vi*t + 0.5*a*t^2 d = vi*t + 0.5*a*t^2 Print(d) end # ╔═╡ a5897a40-80ad-11eb-3f47-958f3a259f62 md"#### Circuit électrique série simple" # ╔═╡ d1f38d50-8256-11eb-1920-012aa9456465 md""" $(Resource("https://www.allaboutcircuits.com/uploads/articles/series-multiple-resistors-circuit.jpg", :width => 400)) """ # ╔═╡ b6593810-80ad-11eb-1e81-d97f709260ef let #= De https://github.com/PainterQubits/Unitful.jl/blob/master/src/pkgdefaults.jl @unit V "V" Volt 1W/A true @unit Ω "Ω" Ohm 1V/A true @refunit A "A" Ampere 𝐈 true =# E = 9u"V" R1 = 3u"kΩ" R2 = 10u"kΩ" R3 = 5u"kΩ" Rt = R1 + R2 + R3 I = uconvert(u"μA", E / Rt) #= Maintenant que nous connaissons la quantité de courant à travers chaque résistance, nous pouvons utiliser la loi d'Ohm pour déterminer la chute de tension à travers chacune d'elles. =# Er1 = uconvert(u"V", I * R1) Er2 = uconvert(u"V", I * R2) Er3 = uconvert(u"V", I * R3) with_terminal() do @show Rt @show I @show Er1 @show Er2 @show Er3 end end # ╔═╡ 8085acc0-8254-11eb-05eb-319e60ef70c6 md"### Thermique" # ╔═╡ a33315f0-8254-11eb-277b-390f6f5fdaca md"""| variables | équations | | :---- | :---- | | L0 la longueur à l'origine en m | ΔL = α * L0 * ΔT | | ΔL la différence de longueur en m | L = L0 * ( 1 + α * ΔT) | | ΔT la différence de température en °C | | | α le coéfficient d'expansion Iron 1.2e-5 en 1/k | | """ # ╔═╡ 87c0a600-8256-11eb-2bf6-ad3f53aafafd md""" $(Resource("https://x-engineer.org/wp-content/uploads/2017/12/Suspension-bridge.jpg?cdbae2&cdbae2", :width => 400)) """ # ╔═╡ 8a1619a0-8254-11eb-0c8a-abfd8ff47788 let L0 = 1500u"m" T0 = -20u"°C" Tf = 40u"°C" ΔT = Tf - T0 α = 1.2e-5u"1/K" ΔL = α * L0 * ΔT with_terminal() do @show (ΔL, ΔL + L0) end end # ╔═╡ Cell order: # ╟─edc89e80-7e55-11eb-1a83-f5b701337ad5 # ╟─707796a0-7ff6-11eb-03f9-239bf8bbd81b # ╟─c2e42040-80ad-11eb-3452-cb40c524090e # ╟─75748d20-8000-11eb-19f2-930bd7d3e58a # ╟─cf9798c0-8252-11eb-26b8-d1e0ef8abae3 # ╟─f71d4fe2-8250-11eb-0f3e-b595971fccf4 # ╟─04ec02b0-8251-11eb-063e-d77434ad938d # ╟─d1f4df20-8251-11eb-2387-07cb4cb2b13c # ╟─17fa0900-8257-11eb-18f4-9d7358b5986e # ╠═f4ec97c0-8251-11eb-3da8-d7cc91349851 # ╟─25592360-8252-11eb-1199-bbfa4d87e9c8 # ╟─40a93a10-8257-11eb-062b-5b47eac4941d # ╠═35e54880-8252-11eb-018c-a7bc3157a163 # ╟─a5897a40-80ad-11eb-3f47-958f3a259f62 # ╟─d1f38d50-8256-11eb-1920-012aa9456465 # ╠═b6593810-80ad-11eb-1e81-d97f709260ef # ╟─8085acc0-8254-11eb-05eb-319e60ef70c6 # ╟─a33315f0-8254-11eb-277b-390f6f5fdaca # ╟─87c0a600-8256-11eb-2bf6-ad3f53aafafd # ╠═8a1619a0-8254-11eb-0c8a-abfd8ff47788