Zielfunktion falsch geschrieben?



  • Hallo zusammen,
    ich stehe vor folgendem Problem. Ich bekomme ein Lösungsvektor ausgegeben der mir sinnvoll erscheint. Jedoch sollte doch der erreichte minimale Funktionswert somit der selbige sein, wie wenn ich die Werte des Lösungsvektor mit Excel über die selbe Funktion berechne, das ist er aber nicht. Ich bin komplett verwirrt wie kann sowas zustande kommen? Kann sich das mal einer anschauen, ob ich ggf. Klammern oder irgendetwas nicht richtig beachte ich programmiere erst seit wenigen Tagen.Ich hab den Quellcode der Zielfunktion mal direkt mit werten versehen und zeig euch noch diesen wo ich zuvor die variablen definiert hab.

    ffun =(0.25942*10**(-05))*3.141592*X(1)*X(2)*X(3)
         &      +1+(0.25942*10**(-05))*3.141592*(X(2)**2)*X(3)
         &      +2*0.0001*X(3)*(2*3.141592*X(2)+X(1))
         &      +0.0008*(X(3)**2)*(2*3.141592*X(2)+X(1))
         &      +(0.1592*10**(-05))*(3.141592*(X(2)**2)+3.141592*X(2)*X(1))
    
     ... Code ... 
    

    Quellcode mit definierten Variablen geschrieben

    REAL*8 FUNCTION FFUN(X)
    IMPLICIT NONE
    REAL*8 X(3)
    DOUBLE PRECISION :: pi = 3.141592d0
    DOUBLE PRECISION :: a1 = 0.0001d0
    DOUBLE PRECISION :: a2 = 0.0008d0
    DOUBLE PRECISION :: a3 = 1.d0
    DOUBLE PRECISION :: a4 = 0.25942*10**(-5)*1d0
    DOUBLE PRECISION :: a7 = 0.1592*10**(-5)*1d0
    
    ffun =a4*pi*X(1)*X(2)*X(3)
    & +a3+a4*pi*X(2)**2*X(3)
    & +2*a1*X(3)*(2*pi*X(2)+X(1))+a2*X(3)**2*(2*pi*X(2)+X(1))
    & +a7*(pi*X(2)**2+pi*X(2)*X(1))
    
    END
     ... Code ... 
    


  • @georg2222 Du hast die Zeile, die mit a1 anfangen sollte vergessen



  • @schlangenmensch Nein das ist es nicht. Ich denke mal du meinst nicht a1, sondern a2. Ohne Variablen musste ich das nur auf zwei Zeilen aufteilen, weil eine Zeile in Fortran nicht mehr als 130 Zeichen haben darf.