Laden...
S
ShadownightProgramming
myCSharp.de - Member
2
Themen
13
Beiträge
Letzte Aktivität
vor 5 Jahren
Dabei seit
16.02.2020
Erstellt vor 5 Jahren

Die Derivate-Partial Funktion aus der Bibliothek erwartet als Funktion eine F# Funktion weshalb ich die Eingangs erwähnte Funktion als F-Sharp umsetzten und dort aufrufen muss, nur weiß ich nicht wie man die 2 Projekte verbindet geschweige ob ein Verweis auf das F-Sharp-projekt reicht ... (Konnte ich das File1 nicht finden deshalb wende ich mich ja an euch)

Erstellt vor 5 Jahren

Das sollte hquer heißen ... sry das reduzierte h (Planckisches Wirkungsquant) (s. bemerkung XD)

Erstellt vor 5 Jahren

Ich melde mich nochmal zum Thema meines Threads: Net, C# Programmierung, Arrays wo ich bereits die Grundaufgabe erläuterte: Der Berechnung der Viele-Welten-Theorie aus dem Bereich der Quantenphysik.
Nun habe ich ein Problem bei der Implementierung der Schroedinger-Gleichung:
Diese sieht folgendermaßen aus: (s. Bild).
Der Code der verwendeten Hamilton-Funktion sieht bisher folgendermaßen aus:(noch nicht fertig, da man die Masse ja nur mittels der Schroedinger-Gleichung lösen kann (meines Wissens nach)


public double Hamiltonfunktion(Teilsys1 Teils1, double impuls, Vector3D.Vector ort)         {             Vector3D.Vector vecttemp = new Vector3D.Vector(0,0,0);                                                     //Masse             
return ((double)-((Math.Pow(?(), 2) / 2 * Teils1.)) + (vecttemp.X*vecttemp.X)+(vecttemp.Y*vecttemp.Y)+(vecttemp.Z*vecttemp.Z));         }

Aber das eigentliche Problem liegt in der Funktion, die diese Gleichung nutzt:

Um die Masse zu berechnen benötige ich die partielle Ableitung der H Funktion welche in C# Folgendermaßen aussieht:

 public double ?()   //ugs.: "reduziertes h"         
{             
         var x = (? / (2 * Math.PI));             
return x;         
}

Die gefragte Funktion würde ja in F# folgendermaßen aussehen:

module Script1  
                  let multiply h c = h*c;

Wie schaffe ich es nun die Funktion in diese Ableitung einzubauen?:

double Impuls = (double)TAlex.MathCore.Complex.Negate(TAlex.MathCore.Complex.One) * ?() * MathNet.Numerics.DifferentiateModule.partialDerivative(1, 1, finalunits, Script1.multiply);
Erstellt vor 5 Jahren

Dankesehr für eure Hilfen 😃 Ich hab nicht richtig mitgedacht 😕 ... DANKI nochmal an alle die sich die Mühe gemacht haben 😃. Wollt Ihr das Endprodukt sehen und Vorschläge zur Laufzeitverbesserung geben? Da meine Berechnungen seehr lange dauern aber im Moment ist das die "schnellste" Lösung für das Testen nach Leben aller möglichen "Universen / Welten". Sehr viele If-Schleifen. Ich würde es in einem anderen Thread posten 😃 "Review" zum Beispliel 😃

Erstellt vor 5 Jahren

hier die mittlerweile umgeschrieben Variante dass ich zuerst das Array initialisiere und danach die Werte zuweise:

 
// l loops till colb 
                        for (int l = 0; l < colb; l++)
                        {
                            double[,] matr;
                            matr = new double[i + l + 1, j + k + 1] = A[i, j] *
                                                      B[k, l];
                            C = new TAlex.MathCore.LinearAlgebra.CMatrix(matr);

                            return C;
                        };

Jetzt stört nur noch die

 matr = new double[i + l + 1, j + k + 1] = A[i, j] *
                                                      B[k, l];

Zeile mit dem Error Code:
CS0131 Die linke Seite einer Zuweisung muss eine Variable, eine Eigenschaft oder ein Indexer sein.

Erstellt vor 5 Jahren

Ich kann C# nur eben verstehe ich nicht wieso er nicht die Indizies nimmt die man ihm gibt ...

Erstellt vor 5 Jahren

Es kommt der Fehler : Die linke Seite einer Zuweisung muss eine Variable, eine Eigenschaft oder ein Indexer sein. ManyWorldsTheory M:...\Projects\ManyWorldsTheory\ManyWorldsTheory\GFG.cs 42 Aktiv
wenn ich die entsprechendeZeile so abändere:

C = new TAlex.MathCore.LinearAlgebra.CMatrix(new TAlex.MathCore.LinearAlgebra.CMatrix(new double[i + l + 1, j + k + 1] = 
                                
                                A[i, j] * B[k, l]));

Also ist wieder die verdächtige Zeile mit dem new double verantwortlich ... Wie bekommt man aus der Matrix den "Gesamt-Kronecker-Wert" heraus?

Erstellt vor 5 Jahren

Wenn ich das return C weglasse, kommt > Fehlermeldung:

CS0161: Nicht alle Codepfade geben einen Wert zurück!

Das geht also nicht.

Erstellt vor 5 Jahren

wird gemacht Entschuldige ist mein erster Tag hier ...

Erstellt vor 5 Jahren

Genau das ist meinem Verständinis nach und wenn man sich die Quelle No. 2 anschaut, auch der Sinn und Zweck der Funktion oder verstehe ich da was falsch?
Mfg 😃