IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Voir le flux RSS

danielhagnoul

[Actualité] Julia. Tests du paquet Unitful.

Noter ce billet
par , 12/03/2021 à 10h37 (2715 Affichages)
  • 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.

Rappel

Ω  \Omega<tab>
μ  \mu<tab>
Δ  \Delta<tab>
α  \alpha<tab>
Fichier C:\Users\User\Documents\Julia\mes_notebooks\unitful_test.jl

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
Licence Creative Commons Attribution 2.0 Belgique

Envoyer le billet « Julia. Tests du paquet Unitful. » dans le blog Viadeo Envoyer le billet « Julia. Tests du paquet Unitful. » dans le blog Twitter Envoyer le billet « Julia. Tests du paquet Unitful. » dans le blog Google Envoyer le billet « Julia. Tests du paquet Unitful. » dans le blog Facebook Envoyer le billet « Julia. Tests du paquet Unitful. » dans le blog Digg Envoyer le billet « Julia. Tests du paquet Unitful. » dans le blog Delicious Envoyer le billet « Julia. Tests du paquet Unitful. » dans le blog MySpace Envoyer le billet « Julia. Tests du paquet Unitful. » dans le blog Yahoo

Commentaires

  1. Avatar de dourouc05
    • |
    • permalink
    Pour préciser : il y a beaucoup de compléments à Unitful.jl destinés à des domaines d'application pas forcément génériques.

    Par contre, je ne pense pas qu'on puisse encore conseiller des paquets comme Units.jl (https://github.com/timholy/Units.jl).