Ошибка кодирования корней уравнения 2º в Фортране - PullRequest
0 голосов
/ 28 октября 2018

Сегодня я начал кодировать уравнения и алгебраические выражения с использованием Fortran (я использую gfortran в Debian (ОС Parrot-home) и Geany).

Проблема в том, что я кодирую одинаково (или равно) к режиму, который я вижу в интернете, и я получаю только неправильный корень для x 'и x' '.

program equacao2grau
    real delta, a, b, c, x, x2
    complex sqrt
    print*, "This program calc 2º equations"
    print*, "Give the values 'A', 'B'e 'C'"
    read*, a         !Getting values
    read*, b         !       for
    read*, c         !resolution
    if (a /= 0) then          !if 'a' be different of 0
        delta = b**2 - 4*a    !do delta
    end if

    print*, delta = b**2 - 4*a*c

    if (a .EQ. 0) then
        stop
    end if
        if (delta .EQ. 0) then
            print*, "The value is", (-b / 2*a)
                stop
        end if
        if (delta .GT. 0) then
            print*, "The roots are", -b + sqrt(delta) / 2*a
            print*, "e", -b - sqrt(delta) / 2*a
            stop
        end if
end

Я знаю, это неполно, но я демотивирован с не найтилюбой правильный результат.

Вещи, которые я исследовал:

1 Ответ

0 голосов
/ 28 октября 2018

В выражениях отсутствуют скобки.

-b + sqrt(delta) / 2*a

Должно быть:

(-b + sqrt(delta)) / (2*a)

И то же самое для других корней.

Редактировать Кроме того, как указал @albert, вы пропустили c в формуле дельты.Более того, как сказал @IanBush, объявление complex sqrt должно быть удалено.И всегда используйте implicit none.

...