Ich erhalte in diesem Teil des Codes einen Gleitkommaüberlauffehler. Kann jemand von euch mir helfen, den Grund herauszufinden?Gleitkommaüberlauf
do j=1,ny-1
do i=1,nx-1
sum = 0.0d0
do k=0,1000
n=2.0d0*dfloat(k)+ 1.0d0
sum = sum + ((dsinh(n*pi*x(i))*dcos(n*pi*y(j)))/((n*n*pi*pi)*dsinh(2*n*pi)))
end do
ue(i,j)= (x(i)/(4.0d0))- 4.0d0*sum
end do
end do
Einige IMPLICIT NONE und ein aktuelles Programm kann helfen. Ich beginne mit einem Zwischenprodukt der Sachen rechts von der Summe = Summe +. Dann, wenn/wenn k groß wird, möchten Sie vielleicht, dass die Summe ein Double (* 8) des Produkts ist ein Float (* 4). Da SUM ein intrinsischer Wert ist, würde ich die 'Summe' in MySum umbenennen oder eine Array-Dimension (0: 1000) haben und SUM (MySum) verwenden. Warum würden Sie das Array bei 0 starten? 1001 Punkte scheinen merkwürdig. Die (n * pi * pi) und die (2 * n * pi) und (n * pi) könnten A, B und C oder Parameter vorberechnet werden und dann ist es schneller und sieht sauberer aus. – Holmz
Willkommen bei Stack Overflow. Sie sollten ein komplettes Programm zeigen und beschreiben, wie Sie es kompilieren und die tatsächliche Ausgabe zeigen, die Sie erhalten. Vergessen Sie nicht die Eingabedaten. Lesen Sie unbedingt die Hilfeseiten http://stackoverflow.com/tour http://stackoverflow.com/help/how-to-ask –
Bitte nehmen Sie sich auch etwas Mühe, um Ihren Beitrag und Ihren Code richtig zu formatieren. Ich habe Ihrem Code einige grundlegende Einrückungen hinzugefügt. –