Problem bei Weitergabe von Array an Funktion?



  • @Wade1234 ja, ich möchte ein 3D Gitter abrastern...also kleinschrittig alle Punkte in einem 3 D Koordinatensystem ablaufen (also bis zu meiner Betragsgrenze a)



  • @redpottpotter und dass kx_e[0], ky_e[0] und kz_e[0] überschrieben werden, ist auch korrekt?

    for(int i = 0; i < Nx; i++){
    kx_e[i] = kx_e[0] + i*(ke_xlimits[1]-ke_xlimits[0])/(Nx-1);
    
    for(int j = 0; j < Ny; j++){
    ky_e[j] = ky_e[0] + j*(ke_ylimits[1]-ke_ylimits[0])/(Ny-1);
    
    for(int l = 0; l < Nz; l++){
    kz_e[l] = kz_e[0] + l*(ke_zlimits[1]-ke_zlimits[0])/(Nz-1);
    

    beim ersten durchlauf überschreibst du das nämlich und eigentlich hast du dann kein lineares raster mehr.



  • @Wade1234 stimmt...ich hab es jetzt so geändert:

    double ke_xlimits[2] = {-a, a};
    double ke_ylimits[2] = {-a, a};
    double ke_zlimits[2] = {-a, a};
    
    //kx_e[0] = ke_xlimits[0];
    //ky_e[0] = ke_ylimits[0];
    //kz_e[0] = ke_zlimits[0];
    for(int i = 0; i < Nx; i++){
      kx_e[i] = ke_xlimits[0] + i*(ke_xlimits[1]-ke_xlimits[0])/(Nx-1);
    for(int j = 0; j < Ny; j++){
      ky_e[j] = ke_ylimits[0] + j*(ke_ylimits[1]-ke_ylimits[0])/(Ny-1);
    for(int l = 0; l < Nz; l++){
      kz_e[l] = ke_zlimits[0] + l*(ke_zlimits[1]-ke_zlimits[0])/(Nz-1);
    if(Pfaff(kx_e[i], ky_e[j], kz_e[l], Delta_0) == 0) {
        double x = kx_e[i];
        double y = ky_e[j];
        double z = kz_e[l];
      write_data(x, y, z);
      continue;
    }
    

    so müsste es doch passen und linear alle punkte erfassen oder? meine Ausgabe ist dieselbe, immernoch (0,0,0) als einzige "Lösung"



  • soll pfaff immer 0 zurückliefern (zeile 74)? nimm mal die bedingung raus, dann müsstest du deine ergebnisse eigentlich alle angezeigt bekommen.



  • @Wade1234 ja, ohne die bedingung bekomme ich das Raster das ich möchte, das funktioniert. Mein Ziel ist aber, nur die Werte kx, ky, kz ausgegeben zu bekommen, für die Pfaff = 0 ist. Also eigentlich war meine idee, jeden Rasterpunkt einmal einzusetzen und zu prüfen: ist Pfaff für diesen Punkt gleich =0 ? wenn ja, dann schreib den Rasterpunkt auf - wenn nein, weiter im Text.



  • @redpottpotter dann solltest du mal überprüfen, ob deine berechnungen in pfaff überhaupt stimmen. also du musst nicht alle berechnungen in eine zeile knallen, sondern du kannst (und solltest!) auch für jeden rechenschritt eine eigene variable anlegen und das ergebnis dort speichern. der compiler optimiert das nachher raus, aber du kannst im debugger ganz toll die zwischenergebnisse ansehen.



  • @Wade1234 Das habe ich schon...was mich aber eigentlich am meisten verwundert ist, dass wenn ich meine ausgegebene "Lösung" (0,0,0) in Pfaff einsetze definitiv nicht 0 rauskommen kann. Deshalb denke ich dass beim Durchlaufen des Codes ja auf jeden Fall etwas schief gehen muss..



  • @redpottpotter ein grund mehr, den debugger zu benutzen bzw. die zwischenergebnisse anzuzeigen.



  • @Wade1234 ich versuche mal, mir die Zwischenergebnisse immer ausgeben zu lassen...auf jeden Fall danke für deine Mühe!



  • Ich möchte hier mal auf Test Driven Development TDD hinweisen.

    Ansonsten habe ich hier den Überblick verloren, wie dein aktueller Code jetzt aussieht. Vlt willst du den ja nochmal posten, dann können wir den nochmal überfliegen (Wenn möglich Copy&Paste aus deinem original Source Code).


Anmelden zum Antworten