Submit | All submissions | Best solutions | Back to list |
PROG0314 - Earth Similarity Index |
The Earth Similarity Index (ESI) is a measurement that expresses the strength of the physical resemblance of a certain celestial body and the planet Earth. It is a scale that goes from zero (no resemblance) to one (absolute resemblance). The Earth itself of course has an ESI of 1,0. As a starting base for the calculation of the ESI, the de easy scale (ES) formula is used: \[ \textrm{ES} = \prod_{i=1}^{n}\left(1 - \left|\frac{o_i - r_i}{o_i + r_i}\right|\right)^{\frac{w_i}{n}} \] This formula expresses the resemblance of an object $o$ and a reference object $r$ based on the values for $n$ properties. The value of object $o$ for the $i$th property ($1 \leq i \leq n$) is represented in the formula as $o_i$, and for the reference object $r$ as $r_i$. The value $w_i$ is a weight exponent for the $i$th property, that can be used to express the importance of this property with regard to other properties.
When calculating the ESI, the average radius of the celestial body is taken into account, as well as its density, escape velocity and surface temperature. This list of properties, their reference values, and their weight exponents as they are used in calculating the ESI are in the table below.
property | reference value | weight exponent |
---|---|---|
average radius | 1,0 $\oplus$ | 0,57 |
density | 1,0 $\oplus$ | 1,07 |
escape velocity | 1,0 $\oplus$ | 0,70 |
surface temperature | 288 K | 5,58 |
Here, the symbol $\oplus$ represents earth unities. In order to distinguish the physical resemblance, the ESI is sometimes divided in two separate components — the interior ESI and the surface ESI. For the interior ESI, only the average radius and the density are brought into account, while the surface ESI only brings the escape velocity and the surface temperature into account.
ESI values between 0,8 and 1,0 correspond with earth-like planets with an earthly, rocky composition that are able to hold an atmosphere under moderate circumstances. According to this measurement, there are no other earth-like planets or moons to be found in our solar system. Mars has the second highest ESI (0,70) next to the Earth itself. However, a number of exoplanets have been discovered with ESI values that fit within the category of earth-like planets. The highest ESI known (0,92) was found for the recently discovered planet Gliese 581 g.
Assignment
- Write a function ES that determines the resemblance between an object $o$ and a reference object $r$ according to the easy scale. This value must be printed as a floating point number. The function has three parameters: i) a list with values $o_i$ ($1 \leq i \leq n$) for $n$ properties of the object $o$, ii) a list with the corresponding reference values $r_i$ for a reference object $r$, and iii) a list with weight exponents $w_i$. This last parameter is optional. If no argument is given for this parameter, all weight exponents get values 1,0 in the formula of the easy scale. The function may assume that lists are always given for the different parameters, but it does have to check whether all these lists have the same length. If this isn't the case, the function AssertionError must raise the text invalid arguments.
- Use the function ES to write a function ESI. This function has four parameters: i) a parameter $r$ to which the average radius of a celestial body can be given, ii) a parameter $d$ for density, iii) a parameter $v$ for the escape velocity and iv) a parameter $t$ for the surface temperature. If a value can be given for each of the four parameters, the function should print the ESI value. If only the average radius and the density can be given, the interior ESI must be printed. If only the escape velocity and the surface temperature can be given, the surface ESI must be printed. For all other combinations of values that are given to the parameters, the function AssertionError must raise the text invalid arguments.
Example
>>> ES([1.36, 1.22, 1.51, 278.0], [1.0, 1.0, 1.0, 288.0]) 0.879229825878449 >>> ES([1.36, 1.22, 1.51, 278.0], [1.0, 1.0, 1.0, 288.0], [0.57, 1.07, 0.70, 5.58]) 0.8903703266879102 >>> ES([1.36, 1.22, 1.51], [1.0, 1.0, 1.0, 288.0]) Traceback (most recent call last): AssertionError: invalid arguments >>> ESI(1.00, 1.00, 1.00, 288.0) # Earth 1.0 >>> ESI(r=0.53, d=0.71) # Mars (interior ESI) 0.8154483513183794 >>> ESI(v=0.38, t=440.0) # Mercury (surface ESI) 0.42223988785100186 >>> ESI(t=278.0, v=1.51, d=1.22, r=1.36) # Gliese 581g 0.8903703266879102 >>> ESI(d=1.22, r=1.36) # Gliese 581g (interior ESI) 0.9021231636588817 >>> ESI(t=278.0, v=1.51) # Gliese 581g (surface ESI) 0.878770605369469 >>> ESI(r=0.27, d=0.60, t=220.0) # Moon Traceback (most recent call last): AssertionError: invalid arguments
Sources
De Earth Similarity Index (ESI) is een maat die uitdrukt hoe sterk de fysieke gelijkenis is tussen een bepaald hemellichaam en planeet Aarde. Het is een schaal die loopt van nul (geen gelijkenis) tot één (absolute gelijkenis). De Aarde zelf heeft uiteraard een ESI van 1,0. Als vertrekbasis voor de berekening van de ESI wordt uitgegaan van de easy scale (ES) formule: \[ \textrm{ES} = \prod_{i=1}^{n}\left(1 - \left|\frac{o_i - r_i}{o_i + r_i}\right|\right)^{\frac{w_i}{n}} \] Deze formule drukt de gelijkenis tussen een object $o$ en een referentieobject $r$ uit op basis van de waarden voor $n$ eigenschappen. De waarde van object $o$ voor de $i$-de eigenschap ($1 \leq i \leq n$) wordt in de formule voorgesteld als $o_i$, en voor het referentieobject $r$ als $r_i$. De waarde $w_i$ is een gewichtsexponent voor de $i$-de eigenschap, die kan gebruikt worden om het belang van deze eigenschap uit te drukken ten opzichte van andere eigenschappen.
Bij de berekening van de ESI wordt rekening gehouden met de gemiddelde straal van het hemellichaam, en diens bulkdichtheid, ontsnappingssnelheid en oppervlaktetemperatuur. Deze lijst van eigenschappen, hun referentiewaarden, en hun gewichtsexponenten zoals ze gebruikt worden voor de berekening van de ESI staan weergegeven in onderstaande tabel.
eigenschap | referentiewaarde | gewichtsexponent |
---|---|---|
gemiddelde straal | 1,0 $\oplus$ | 0,57 |
bulkdichtheid | 1,0 $\oplus$ | 1,07 |
ontsnappingssnelheid | 1,0 $\oplus$ | 0,70 |
oppervlaktetemperatuur | 288 K | 5,58 |
Hierbij staat het symbool $\oplus$ voor aardeenheden. Om verschillende aspecten van de fysieke gelijkenis te kunnen onderscheiden, wordt de ESI soms opgesplitst in twee afzonderlijke componenten — de interior ESI en de surface ESI. Voor de interior ESI worden enkel de gemiddelde straal en de bulkdichtheid in rekening gebracht, terwijl de surface ESI enkel de ontsnappingssnelheid en de oppervlaktetemperatuur in rekening brengt.
ESI waarden tussen 0,8 en 1,0 stemmen overeen met aardachtige planeten met een aardse rotsachtige samenstelling die in staat zijn om onder gematigde omstandigheden een atmosfeer vast te houden. Volgens deze maat zijn er geen andere aardachtige planeten of manen te vinden in ons zonnestelsel. Mars heeft met 0,70 de hoogste ESI na de Aarde zelf. Er zijn wel een aantal exoplaneten gevonden met ESI waarden die hen binnen de categorie van de aardachtige planeten plaatsen. De hoogste gekende ESI van 0,92 werd vastgesteld voor de recent ontdekte planeet Gliese 581 g.
Opgave
- Schrijf een functie ES die de gelijkenis bepaalt tussen een object $o$ en een referentieobject $r$ volgens de easy scale. Deze waarde moet als een floating point getal teruggegeven worden. De functie heeft drie parameters: i) een lijst met de waarden $o_i$ ($1 \leq i \leq n$) voor $n$ eigenschappen van het object $o$, ii) een lijst met de corresponderende referentiewaarden $r_i$ voor het referentieobject $r$, en iii) een lijst met gewichtsexponenten $w_i$. Deze laatste parameter is optioneel. Indien er geen argument wordt doorgegeven voor deze parameter, dan krijgen alle gewichtsexponenten waarden 1,0 in de formule van de easy scale. De functie mag ervan uitgaan dat er steeds lijsten worden doorgegeven voor de verschillende parameters, maar moet wel nagaan dat al deze lijsten dezelfde lengte hebben. Indien dat niet het geval is, dan moet de functie een AssertionError opwerpen met de tekst ongeldige argumenten.
- Gebruik de functie ES om een functie ESI te schrijven. Deze functie heeft vier parameters: i) een parameter $r$ waaraan de gemiddelde straal van een hemellichaam kan doorgegeven worden, ii) een parameter $d$ voor de bulkdichtheid, iii) een parameter $v$ voor de ontsnappingssnelheid, en iv) een parameter $t$ voor de oppervlaktetemperatuur. Indien voor elk van de vier parameters een waarde wordt doorgegeven, dan moet de functie de ESI waarde teruggeven. Indien enkel de gemiddelde straal en de bulkdichtheid doorgegeven worden, dan moet de interior ESI teruggegeven worden. Indien enkel de ontsnappingssnelheid en oppervlaktetemperatuur doorgegeven worden, dan moet de surface ESI teruggegeven worden. Voor alle andere combinaties van waarden die worden doorgegeven voor de parameters, moet de functie een AssertionError opwerpen met de tekst ongeldige argumenten.
Voorbeeld
>>> ES([1.36, 1.22, 1.51, 278.0], [1.0, 1.0, 1.0, 288.0]) 0.879229825878449 >>> ES([1.36, 1.22, 1.51, 278.0], [1.0, 1.0, 1.0, 288.0], [0.57, 1.07, 0.70, 5.58]) 0.8903703266879102 >>> ES([1.36, 1.22, 1.51], [1.0, 1.0, 1.0, 288.0]) Traceback (most recent call last): AssertionError: ongeldige argumenten >>> ESI(1.00, 1.00, 1.00, 288.0) # Aarde 1.0 >>> ESI(r=0.53, d=0.71) # Mars (interior ESI) 0.8154483513183794 >>> ESI(v=0.38, t=440.0) # Mercurius (surface ESI) 0.42223988785100186 >>> ESI(t=278.0, v=1.51, d=1.22, r=1.36) # Gliese 581g 0.8903703266879102 >>> ESI(d=1.22, r=1.36) # Gliese 581g (interior ESI) 0.9021231636588817 >>> ESI(t=278.0, v=1.51) # Gliese 581g (surface ESI) 0.878770605369469 >>> ESI(r=0.27, d=0.60, t=220.0) # Moon Traceback (most recent call last): AssertionError: ongeldige argumenten
Bronnen
Added by: | Peter Dawyndt |
Date: | 2013-01-27 |
Time limit: | 10s |
Source limit: | 50000B |
Memory limit: | 1536MB |
Cluster: | Cube (Intel G860) |
Languages: | PY_NBC |
Resource: | None |