Buch Cover Buch Cover Buch Cover Buch Cover

Web-Code: - Webcode Help

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

Bitte melde dich an um einen Kommentar abzugeben

Kommentare (3)

ArnePunk 7. Dezember 2013 13:05   reply report
gressly
Spannende Aufgabe.

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.)

Kevin?
warum is dein programm so viel länger als meins?
wahrscheinlich, weil ich mit meinem nur t ausrechnen kann
Kevin 7. Dezember 2013 10:55   reply report
t ist das Alter des gefundenen Organischen Stoffes, also das, was die meisten wissen wollen.
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.
gressly 6. Dezember 2013 23:22   reply report
Spannende Aufgabe.

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.)

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

Bewertung

Durchschnittliche Bewertung:

Eigene Bewertung:
Bitte zuerst anmelden

Meta

Zeit: 0.25
Schwierigkeit: Mittel
Webcode: eock-h42m
Autor: ()

Download PDF

Download ZIP

Zu Aufgabenblatt hinzufügen