Welche Aufgabe kann Chat GPT-o1 preview nicht lösen?


16.11.2024, 21:47

Und falls jemand eine Idee hat schreib die Aufgabe gerne rein.

6 Antworten

Bitte frag mal nach einem C-Programm, das π auf 50 Stellen genau ausgibt. Das Ergebnis lässt sich leicht prüfen (z. B. hier).

Die erste Version von ChatGPT war damit hoffnungslos überfordert und konnte auch mit klaren Hinweisen auf den Fehler nichts anfangen.


GefaAa 
Beitragsersteller
 17.11.2024, 15:41

klingt für mich auch plausibel was er mir gibt:

Natürlich! Hier ist ein C-Programm, das die GMP-Bibliothek verwendet, um π auf 50 Dezimalstellen genau zu berechnen und auszugeben:

#include <stdio.h>

#include <gmp.h>

int main() {

  // Set the desired precision (in bits)

  mpf_set_default_prec(170); // ~50 decimal digits

  mpf_t pi, sum, term, numerator, denominator, temp1, temp2, C;

  mpz_t k, k6, fact_k3, fact_k, pow_minus1_k, A, B, D, E, temp_z;

  // Initialize variables

  mpf_init(pi);

  mpf_init(sum);

  mpf_init(term);

  mpf_init(numerator);

  mpf_init(denominator);

  mpf_init(temp1);

  mpf_init(temp2);

  mpf_init(C);

  mpz_init(k);

  mpz_init(k6);

  mpz_init(fact_k3);

  mpz_init(fact_k);

  mpz_init(pow_minus1_k);

  mpz_init(A);

  mpz_init(B);

  mpz_init(D);

  mpz_init(E);

  mpz_init(temp_z);

  mpz_set_ui(k, 0);

  mpf_set_ui(sum, 0);

  // Constants

  mpf_set_d(C, 426880.0);

  mpf_sqrt_ui(temp1, 10005);

  mpf_mul(C, C, temp1); // C = 426880 * sqrt(10005)

  // Number of terms to compute

  int N = 3; // Adjust N for desired accuracy

  for (int i = 0; i < N; i++) {

    // (-1)^k

    mpz_pow_ui(pow_minus1_k, mpz_init_set_si(temp_z, -1), i);

    // (6k)!

    mpz_mul_ui(k6, k, 6);

    mpz_fac_ui(k6, mpz_get_ui(k6));

    // k!

    mpz_fac_ui(fact_k, mpz_get_ui(k));

    // (3k)!

    mpz_mul_ui(temp_z, k, 3);

    mpz_fac_ui(fact_k3, mpz_get_ui(temp_z));

    // numerator = (-1)^k * (6k)! * (13591409 + 545140134k)

    mpz_mul_ui(A, k, 545140134);

    mpz_add_ui(A, A, 13591409);

    mpz_mul(A, A, k6);

    mpz_mul(A, A, pow_minus1_k);

    // denominator = (3k)! * (k!)^3 * (640320)^(3k)

    mpz_pow_ui(B, fact_k, 3);

    mpz_mul(B, B, fact_k3);

    mpz_pow_ui(D, mpz_set_ui(temp_z, 640320), 3 * mpz_get_ui(k));

    mpz_mul(B, B, D);

    // term = numerator / denominator

    mpf_set_z(numerator, A);

    mpf_set_z(denominator, B);

    mpf_div(term, numerator, denominator);

    // sum += term

    mpf_add(sum, sum, term);

    // Increment k

    mpz_add_ui(k, k, 1);

  }

  // pi = C / sum

  mpf_div(pi, C, sum);

  // Print pi to 50 decimal places

  gmp_printf("π = %.50Ff\n", pi);

  // Clear variables

  mpf_clear(pi);

  mpf_clear(sum);

  mpf_clear(term);

  mpf_clear(numerator);

  mpf_clear(denominator);

  mpf_clear(temp1);

  mpf_clear(temp2);

  mpf_clear(C);

  mpz_clear(k);

  mpz_clear(k6);

  mpz_clear(fact_k3);

  mpz_clear(fact_k);

  mpz_clear(pow_minus1_k);

  mpz_clear(A);

  mpz_clear(B);

  mpz_clear(D);

  mpz_clear(E);

  mpz_clear(temp_z);

  return 0;

}

Anleitung zum Kompilieren und Ausführen:

1. GMP-Bibliothek installieren:

• Unter Debian/Ubuntu:

sudo apt-get install libgmp-dev

• Unter Fedora:

sudo dnf install gmp-devel

• Unter macOS mit Homebrew:

brew install gmp

2. Programm speichern:

• Speichern Sie den obigen Code in einer Datei namens pi.c.

3. Programm kompilieren:

gcc -o pi pi.c -lgmp -lm

4. Programm ausführen:

./pi

Hinweise:

Genauigkeit einstellen: Die Variable N in der Schleife bestimmt die Anzahl der Terme, die für die Berechnung verwendet werden. Für 50 Dezimalstellen sind in der Regel 3 Iterationen ausreichend. Sie können N erhöhen, um eine höhere Genauigkeit zu erzielen.

Chudnovsky-Algorithmus: Dieses Programm verwendet den Chudnovsky-Algorithmus, der für seine schnelle Konvergenz bei der Berechnung von π bekannt ist.

GMP-Bibliothek: Die GNU Multiple Precision Arithmetic Library (GMP) ermöglicht Berechnungen mit sehr hohen Genauigkeiten und ist daher ideal für dieses Problem geeignet.

Beispielausgabe:

π = 3.14159265358979323846264338327950288419716939937510

Dieses Programm berechnet und gibt π auf 50 Dezimalstellen genau aus. Wenn Sie weitere Fragen haben oder Hilfe benötigen, lassen Sie es mich wissen!

GefaAa 
Beitragsersteller
 17.11.2024, 15:42
@GefaAa

Es sieht nur komisch aus da er für den Code Zeichen benutzt damit es besser aussieht

GefaAa 
Beitragsersteller
 17.11.2024, 15:43
@GefaAa

Hier ist der Code:

#include <stdio.h>

#include <gmp.h>

int main() {

  // Set the desired precision (in bits)

  mpf_set_default_prec(170); // ~50 decimal digits

  mpf_t pi, sum, term, numerator, denominator, temp1, temp2, C;

  mpz_t k, k6, fact_k3, fact_k, pow_minus1_k, A, B, D, E, temp_z;

  // Initialize variables

  mpf_init(pi);

  mpf_init(sum);

  mpf_init(term);

  mpf_init(numerator);

  mpf_init(denominator);

  mpf_init(temp1);

  mpf_init(temp2);

  mpf_init(C);

  mpz_init(k);

  mpz_init(k6);

  mpz_init(fact_k3);

  mpz_init(fact_k);

  mpz_init(pow_minus1_k);

  mpz_init(A);

  mpz_init(B);

  mpz_init(D);

  mpz_init(E);

  mpz_init(temp_z);

  mpz_set_ui(k, 0);

  mpf_set_ui(sum, 0);

  // Constants

  mpf_set_d(C, 426880.0);

  mpf_sqrt_ui(temp1, 10005);

  mpf_mul(C, C, temp1); // C = 426880 * sqrt(10005)

  // Number of terms to compute

  int N = 3; // Adjust N for desired accuracy

  for (int i = 0; i < N; i++) {

    // (-1)^k

    mpz_pow_ui(pow_minus1_k, mpz_init_set_si(temp_z, -1), i);

    // (6k)!

    mpz_mul_ui(k6, k, 6);

    mpz_fac_ui(k6, mpz_get_ui(k6));

    // k!

    mpz_fac_ui(fact_k, mpz_get_ui(k));

    // (3k)!

    mpz_mul_ui(temp_z, k, 3);

    mpz_fac_ui(fact_k3, mpz_get_ui(temp_z));

    // numerator = (-1)^k * (6k)! * (13591409 + 545140134k)

    mpz_mul_ui(A, k, 545140134);

    mpz_add_ui(A, A, 13591409);

    mpz_mul(A, A, k6);

    mpz_mul(A, A, pow_minus1_k);

    // denominator = (3k)! * (k!)^3 * (640320)^(3k)

    mpz_pow_ui(B, fact_k, 3);

    mpz_mul(B, B, fact_k3);

    mpz_pow_ui(D, mpz_set_ui(temp_z, 640320), 3 * mpz_get_ui(k));

    mpz_mul(B, B, D);

    // term = numerator / denominator

    mpf_set_z(numerator, A);

    mpf_set_z(denominator, B);

    mpf_div(term, numerator, denominator);

    // sum += term

    mpf_add(sum, sum, term);

    // Increment k

    mpz_add_ui(k, k, 1);

  }

  // pi = C / sum

  mpf_div(pi, C, sum);

  // Print pi to 50 decimal places

  gmp_printf("π = %.50Ff\n", pi);

  // Clear variables

  mpf_clear(pi);

  mpf_clear(sum);

  mpf_clear(term);

  mpf_clear(numerator);

  mpf_clear(denominator);

  mpf_clear(temp1);

  mpf_clear(temp2);

  mpf_clear(C);

  mpz_clear(k);

  mpz_clear(k6);

  mpz_clear(fact_k3);

  mpz_clear(fact_k);

  mpz_clear(pow_minus1_k);

  mpz_clear(A);

  mpz_clear(B);

  mpz_clear(D);

  mpz_clear(E);

  mpz_clear(temp_z);

  return 0;

}

ralphdieter  17.11.2024, 21:36
@GefaAa

Beeindruckend! Leider kompiliert das Programm nicht (mpz_init_set_si() und mpz_set_ui() liefern void).

Wenn man das gefixt hat, bekommt man

π = 3.14159265358979323846264338327950288419716767885485

Die fett gedruckten Ziffern sind korrekt. Erst mit N=4 stimmt alles.

Immerhin hat sich in den letzten Jahren einiges enorm verbessert. Aber wenn mein Assistentin mir Code lieferte, der nicht kompiliert und nach der Reparatur falsche Ergebnisse ausspuckt, würde ich sie rauswerfen.

Du darfst ChatGPT gern auf ihre Fehler hinweisen und mir berichten, wie sie jetzt damit umgeht. Vor zwei Jahren war sie für Kritik sehr empfänglich, hat aber nichts daraus gelernt.

Also bei Mathe kann ich leider nichts dazu sagen, aber manche konrekte Infos gibt selbst GPT-4o immernoch falsch aus.

Wenn du zb fragst, welches die letze Folge von Serie XY war, dann scheitert es da noch ziemlich, trotz online-Anbindung.

Oder wenn es um politische Themen oder Sehenswürdigkeiten etc geht.

Aber: es ist seit GPT 3.5 viel passiert.


GefaAa 
Beitragsersteller
 16.11.2024, 22:04

Wenn ich mit 4o Frage (mit online Anbindung) kommt das:

Die letzte Folge von “Aktenzeichen XY… ungelöst” wurde am 6. November 2024 im ZDF ausgestrahlt. In dieser Sendung wurden unter anderem folgende Fälle behandelt:

Schüsse auf Politiker: Ein unbekannter Täter schoss in der Nacht zum 19. März 2023 in Hattenhofen (Landkreis Göppingen, Baden-Württemberg) durch ein Fenster auf den FDP-Politiker und Landwirt Georg Gallus, der währenddessen schlief. Gallus wurde von vier Kugeln getroffen und musste notoperiert werden.

Unbekannte Tote in Hannover: Zwei Studentinnen fanden am 20. August 1994 auf einem Bundeswehrgelände in Hannover die skelettierte Leiche einer Frau. Untersuchungen ergaben, dass sie mindestens zwei Jahre zuvor getötet wurde. Die Identität der Frau ist bis heute unbekannt.

Cold Case aus Köln: Andrea Weltzer (28) wurde in der Nacht zum 7. Januar 1992 bewusstlos und mit lebensgefährlichen Verletzungen auf einer Straße in Köln gefunden. Sie starb kurz darauf im Krankenhaus an ihren schweren Stichverletzungen. Die Ermittler haben inzwischen tatrelevante männliche DNA gefunden und hoffen auf neue Hinweise.

Doppelte Fahrerflucht in Österreich: Jeanette (19) wurde in der Nacht zum 17. Juni 2023 in Obertrum am See von einem Auto erfasst. Der Fahrer ließ die verletzte junge Frau auf der Straße liegen und fuhr weiter. Kurz darauf wurde sie von einem zweiten Auto überrollt, dessen Fahrer ebenfalls flüchtete. Der Fahrer des ersten Wagens hat sich inzwischen bei der Polizei gemeldet; der zweite Fahrer wird weiterhin gesucht.

Einbruch in Trier: Zwei unbekannte Männer drangen in der Nacht zum 26. Mai 2023 in das Haus einer 80-jährigen Frau in Trier ein. Sie fesselten die Seniorin und durchsuchten das Haus nach Wertsachen. Die Täter entkamen mit Schmuck, vier Handys, einem Tresor und einer älteren Digitalkamera.

Die nächste Ausgabe von “Aktenzeichen XY… ungelöst” ist für den 11. Dezember 2024 geplant.

GefaAa 
Beitragsersteller
 16.11.2024, 22:02

o1 hat keine online Anbindung nur gpt 4o

Windoofs10  16.11.2024, 22:04
@GefaAa

o1?

Ist das eine neue Version?

Tut mir leid, dann habe ich das falsch verstanden.

Welche Aufgaben meinst du denn konkret?

GefaAa 
Beitragsersteller
 16.11.2024, 22:05
@Windoofs10

Ja die ist nur die „denkt“ bevor sie schreibt und überprüft ihre Antworten. Das ist nochmal ein Riesen unterschied zwischen 4o und o1 preview

GefaAa 
Beitragsersteller
 16.11.2024, 22:07
@Windoofs10

Ich habe alles versucht was schwer und komplex ist wie Mathe, Ingenieur fragen und auch deutsch grammatikalische Frage und er antwortet immer richtig

Probier mal zu fragen "how many r's are there in strawberry" - bisher hat es kein einziges Modell vor o1 geschafft, da die richtige Antwort, also drei, zu geben. Ob sie das in o1 jetzt gefixt haben, keine Ahnung. Ebenso kannst du es fragen zu würfeln, da kam bei GPT Modellen verlässlich beim ersten Versuch immer vier raus.

Die Frage ist halt, ob es die Antworten eigenständig mit Hilfe des Language Models beantwortet oder weiß, dass es dafür eine Code interpreter verwenden sollte. Dieses Art Reasoning, also das Kennen der eignen Limitationen, ist keine Stärke von Sprachmodellen, und das ändert sich auch nicht, weil man es jetzt zwanzig Sekunden für sich selbst rumphilosophieren lässt, bevor es eine richtige Antwort gibt. Es wird dadurch vielleicht besser, aber nicht gelöst.

Ansonsten stell halt einfach irgendeine spezifische Frage zu irgendeinem Thema, mit dem du dich sehr gut auskennst und es wird mehr oder weniger Instant irgendwo irgendwas behaupten, was halt nicht ganz richtig ist.


GefaAa 
Beitragsersteller
 17.11.2024, 01:49

Bei o1 wird es richtig gegeben und ich hab das halt probiert in Themen denen ich mich auskenne und habe auch Aufgaben in diesen gebiet gestellt welche nicht öffentlich waren, also nicht in der Google Datenbank die er hat.

Frag ChatGPT halt etwas Unmögliches, wie die Lottozahlen von heute Abend.

Laut ChatGPT sind in dem Wort "Erdbeere" drei R wenn ich ihn das frage


GefaAa 
Beitragsersteller
 17.11.2024, 17:51

Aber nicht bei o1 preview

Irgendjemand783  17.11.2024, 18:21
@GefaAa

Stimmt ist bei mir tatsächlich nur manchmal so. Einmal hat er sogar 1 R gesagt

GefaAa 
Beitragsersteller
 19.11.2024, 17:39
@Irgendjemand783

Ja in den alten Modellen aber nicht bei o1 preview es geht nur um den