Я получаю ошибку переполнения с плавающей запятой в этой части кода. Может кто-нибудь из вас, ребята, поможет мне узнать причину.Переполнение с плавающей запятой
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
Некоторые IMPLICIT NONE и действительная программа могут помочь. Я получил dstart с промежуточным продуктом материала справа от суммы = sum +. Тогда, если /, когда k становится большим, вы можете захотеть, чтобы сумма была двойной (* 8) продукта - float (* 4). Поскольку СУМ является неотъемлемой частью, я бы переименовал «sum'to MySum» или имел размер массива (0: 1000) и использовал SUM (MySum). Зачем вам начинать массив с 0? 1001 балл кажется странным. (N * pi * pi) и (2 * n * pi) и (n * pi) можно было предварительно вычислить A, B и C или параметры, а затем быстрее и выглядеть чище. – Holmz
Добро пожаловать в переполнение стека. Вы должны показать полную программу и описать, как вы ее компилируете, и показать фактический результат, который вы получаете. Не забывайте входные данные. Обязательно прочтите справочные страницы http://stackoverflow.com/tour http://stackoverflow.com/help/how-to-ask –
Просьба также приложить некоторые усилия, чтобы правильно отформатировать сообщение и ваш код. Я применил несколько базовых отступов к вашему коду. –