C14 Methode - zur Berechnung des Alters von Gegenständen (Algorithmen)
Programmieren Sie einen Algorithmus, der mithilfe der Formel
n(t)=n(0)e^{-\lambda t}
das Alter eines sehr alten Gegenstandes oder einer alten Mumie berechnet.
Dabei bezeichnen
- t: das Alter des gefundenen Stoffes
- \lambda: Lambda (\lambda) erhält man, indem man den natürlichen Logarithmus von 2.0 bildet und dieses Resultat durch die Halbwertszeit dividiert. Die Halbwertszeit von Kohlenstoff (C) beträgt ca. 5730 Jahre.
- e: Eulersche Konstante: 2.71828...
- n(t): Anzahl Bq pro kg nach Zeit t.
Gegeben sind n(t), n(0) und die Halbwertszeit
3 Kommentare
7 Lösung(en)
import math
N_hinterher=int(input('Bitte geben Sie die Aktivität in Bq nach der Zerfallszeit an'))
N_Anfang=int(input('Bitte geben Sie die Aktivität in Bq vor dem Zerfall an'))
t_halbe=int(input('Bitte geben Sie die Halbwertszeit in a an'))
Lambda=math.log(2)/t_halbe
t=math.log(N_hinterher/N_Anfang)/-Lambda
print(t)
print(input())
Lösung von: Arnim Pankratz (Freiherr-vom-Stein-Gymnasium Betzdorf)
import math
while True:
gesucht = (input("Welcher Wert wird gesucht?{NProbe;NLebendig;Lamdaa;t;thalb}:"))
if gesucht == "NProbe":
NLebendig = int(input("Gebe NLebendig an."))
Lambda = float(input("Gebe Lambda an."))
t = int(input("Gebe t an."))
thalb = int(input("Gebe thalb an."))
if Lambda == 0:
Lambda = math.log(2)/thalb
print ("Lambda",Lambda)
NProbe = NLebendig * math.e**(-Lambda*t)
print (NProbe,"Bq/kg")
print ("NProbe = NLebendig * math.e**(-Lambda*t)")
if gesucht == "NLebendig":
NProbe = int(input("Gebe NProbe an."))
Lambda = float(input("Gebe Lambda an."))
t = int(input("Gebe t an."))
thalb = int(input("Gebe thalb an."))
if Lambda == 0:
Lambda = math.log(2)/thalb
print ("Lambda",Lambda)
NLebendig = NProbe / math.e**(-Lambda*t)
print (NLebendig,"Bq/kg")
print ("NLebendig = NProbe / math.e**(-Lambda*t")
if gesucht == "Lambda":
thalb = int(input("Gebe thalb an."))
Lambda = math.log(2)/thalb
print ("Lambda",Lambda)
print ("Lambda = math.log(2)/thalb")
if gesucht == "t":
NProbe = int(input("Gebe NProbe an."))
NLebendig = int(input("Gebe NLebendig an."))
Lambda = float(input("Gebe Lambda an."))
thalb = int(input("Gebe thalb an."))
if Lambda == 0:
Lambda = math.log(2)/thalb
print ("Lambda",Lambda)
t = math.log((NProbe/NLebendig)) / -Lambda
print (t,"Jahre")
print ("t = math.log((NProbe/NLebendig)) / -Lambda")
if gesucht == "thalb":
Lambda = float(input("Gebe Lambda an."))
thalb = math.log(2) / Lambda
print (thalb,"ist die halbwertszeit.")
print (" thalb = math.log(2) / Lambda")
Lösung von: Kevin Kreps (Freiherr-vom-Stein Gymnasium)
package c14;
import java.util.Scanner;
public class C14Zerfall {
static Scanner scanner = new Scanner(System.in);
static double nt;
static double n0;
static double alter;
public static void alterBestimmen(){
System.out.println("Wieviel Bq/kg C14 ist jetzt im Fundstück?");
nt = scanner.nextDouble();
System.out.println("Wieviel Bq/kg C14 waren ursprünglich im Fundstück?");
n0 = scanner.nextDouble();
alter = Math.log(nt / n0) / ((Math.log(2) / 5730 ) * -1);
}
public static void main(String[] args) {
alterBestimmen();
System.out.println("Das Fundstück ist " + alter + " Jahre alt");
}
}
Lösung von: Ira Darkness ()
#include <stdio.h>
#include <math.h>
double c14( const double nt, const double n0 );
int main(){
printf( "%f\n", c14( 160, 230 ) );
return 0;
}
double c14( const double nt, const double n0 ){
const double lambda = log(2) / 5730;
return ( log( n0 ) - log( nt ) ) / lambda;
}
Lösung von: reeman :3 (TU Ilmenau)
class Program
{
static void Main(string[] args)
{
//Variablen deklarieren
double nT, n0, alter;
//Daten einlesen
Console.WriteLine("Aktueller Bq/KG Wert im Fundstück:\n");
nT = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Ursprünglicher Bq/KG Wert im Fundstück:\n");
n0 = Convert.ToDouble(Console.ReadLine());
//Alter bestimmen
alter = (Math.Log(n0) - Math.Log(nT)) / (Math.Log(2) / 5730);
//Ausgabe
Console.WriteLine("Das Alter beträgt:\n {0}",alter);
Console.ReadLine();
}
}
Lösung von: Name nicht veröffentlicht
function carbonDating(nt, n0) {
return Math.abs(Math.log(nt / n0) / (Math.log(2) / 5730 * -1));
}
console.log("Die Probe könnte etwa " +
Math.round(carbonDating(prompt("n(0):"), prompt("n(t):"))) +
" Jahre alt sein.");
Lösung von: Lisa Salander (Heidi-Klum-Gymnasium Bottrop)
// C++20 | VS-2022
#include <iostream>
#include <cmath>
constexpr size_t hl_c{ 5730 };
template<typename _Ty> requires std::is_arithmetic_v<_Ty>
inline static constexpr auto get_carbon_14_dating(const _Ty& n0_, const _Ty& nt_) {
return static_cast<_Ty>((log(n0_) - log(nt_)) / (log(2) / hl_c));
}
int main() {
constexpr size_t n0{ 230 };
constexpr size_t nt{ 160 };
const auto t{ get_carbon_14_dating(n0, nt) };
std::cout << "Das Alter betraegt ca. " << t << " Jahre." << "\n";
}
Lösung von: Jens Kelm (@JKooP)
Verifikation/Checksumme:
n(0) = 230 (Bq/kg)
n(t) = 160 (Bq/kg)
Halbwertszeit = 5730
Lösung: t = 3000 Jahre
Aktionen
Neue Lösung hinzufügen
Bewertung
Durchschnittliche Bewertung:
Kommentare (3)
Kevin?
warum is dein programm so viel länger als meins?
wahrscheinlich, weil ich mit meinem nur t ausrechnen kann
N(t) ist die Anzahl an Bq pro kg , die im Labor am Fundstück herausgefunden wurde. Da C14 bei einem Lebendigem Organismus immer konstant ist, aber nach dessen Tod abnimmt/zerfällt.
Die Halbwertszeit ist die Zeit, bis die Hälfte der C14 Teilchen zerfallen sind.
Lambda = ln(2) / Halbwertszeit
Angenommen wir hätten also bei unserem Fundstück 160 Bq/kg [N(t)] festgestellt und wissen, dass es im Lebendigem Zustand 230 Bq/kg [N(0)] hätte und seine Halbwertszeit bei 5730 Jahren liegt.
so würde man die Formel
N(t)=N(0)*e^(-Lambda*t)
umformen in
ln( N(t) / N(0) ) / -Lambda = t
da,
Lambda = ln(2) / Halbwertszeit
kann man sagen:
ln( N(t) / N(0) ) / (- ln(2) / Halbwertszeit) = t
Also mit eingesetzten Werten:
ln( 160 / 230 ) / -( ln(2) / 5730) = 3000,01008
Also ist das Fundstück um die dreitausend Jahre alt.
Doch für einen Laien wie mich wären noch die folgenden Angaben nötig:
Was ist t?
Was ist n(t)?
Was ist die Halbwertszeit.
Unklar ist auch die Definition von Lambda
Ist nun
Lambda = ln(2) / Halbwertszeit
oder
Lambda = ln(2 / Halbwertszeit)
beides ist "Logarithmus von 2 durch die Halbwertszeit" ;-)
Zusätzlich wäre ein konkretes Zahlenbeispiel von Vorteil. Zumindest aber 2-3 Verifikationen sollten im Verifikationsteil angegeben werden. (Sobald ich die Aufgabe dann mal verstanden habe, kann ich das auch gerne übernehmen.)