Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Beginner Fortran Help

  1. Feb 10, 2013 #1
    Can someone give him a head start re: the following Q:

    We can make the program test itself by having it plug in the found root and evaluate the LHS (it should be zero). Complete the program by having it evaluate the LHS at x = root1.


    ! This program finds the roots of equations of the 2nd degree
    ! with coefficients a, b and c
    program Equation
    implicit none
    real*4 a, b, c, delta
    real*4 root1, root2
    integer*1 count

    ! ----------------------------------------------Prompt and Input
    print*, "Solves ax^2 + bx + c = 0"
    print*, "Enter the coefficients a,b,c separated by commas..."
    read*, a, b, c

    ! ----------------------------------------------Validate

    ! ----------------------------------------------Find delta
    delta = b**2 - 4.* a * c

    ! ----------------------------------------------Determine Roots
    if (delta .GT. 0.) then
    root1 = (-b + sqrt(delta)) / (2. * a)
    root2 = (-b - sqrt(delta)) / (2. * a)
    count = 2
    else if (delta .LT. 0.) then
    count = 0
    else
    root1 = -b / (2. * a)
    count = 1
    end if

    ! ----------------------------------------------Show Results
    if (count .EQ. 2) then
    write(*,20) " Equation has two roots: ", root1, ", ", root2
    else if (count .EQ. 1) then
    write(*,20) " Equation has one root: ", root1
    else
    write(*,20) " Equation has no real roots!"
    end if
    20 format(1x, A, F10.4, A, F10.4)

    ! ----------------------------------------------Verify root1
    if (count .GT. 0) then
    print*, "Verifying the first root by computing the L.H.S.:"



    end if

    ! ----------------------------------------------
    end
     
  2. jcsd
  3. Feb 10, 2013 #2

    SteamKing

    User Avatar
    Staff Emeritus
    Science Advisor
    Homework Helper

    Well, the next move is up to you. You have the coefficients a,b, and c and the roots, root1 and root 2. Write a statement which combines these values according to the formula ax^2+bx+c
     
  4. Feb 13, 2013 #3
    The previous Q asked me to modify the program under "Validate" so if a=0 then it stops the program from further computing, and now I need to output the root, if any, of the supplied 1st-degree equation. How do I modify the program to adopt this approach?


    ! This program finds the roots of equations of the 2nd degree
    ! with coefficients a, b and c
    program Equation
    implicit none
    real*8 a, b, c, delta
    real*8 root1, root2, x, LHS
    integer*1 count

    ! ----------------------------------------------Prompt and Input
    print*, "Solves ax^2 + bx + c = 0"
    print*, "Enter the coefficients a,b,c separated by commas..."
    read*, a, b, c

    ! ----------------------------------------------Validate
    if (a .EQ. 0) then
    print*, "This is not an equation of the 2nd degree!"
    stop
    end if

    ! ----------------------------------------------Find delta
    delta = b**2 - 4.* a * c

    ! ----------------------------------------------Determine Roots
    if (delta .GT. 0.) then
    root1 = (-b + sqrt(delta)) / (2. * a)
    root2 = (-b - sqrt(delta)) / (2. * a)
    count = 2
    else if (delta .LT. 0.) then
    count = 0
    else
    root1 = -b / (2. * a)
    count = 1
    end if

    ! ----------------------------------------------Show Results
    if (count .EQ. 2) then
    write(*,20) " Equation has two roots: ", root1, ", ", root2
    else if (count .EQ. 1) then
    write(*,20) " Equation has one root: ", root1
    else
    write(*,20) " Equation has no real roots!"
    end if
    20 format(1x, A, F20.15, A, F20.15)

    ! ----------------------------------------------Verify root1
    if (count .GT. 0) then
    print*, "Verifying the first root by computing the L.H.S.:"
    x = root1
    LHS = a*x**2 + b*x + c
    print*, "LHS = ", LHS
    end if

    ! ----------------------------------------------
    End
     
  5. Feb 13, 2013 #4

    SteamKing

    User Avatar
    Staff Emeritus
    Science Advisor
    Homework Helper

    What if you have two roots? Aren't you supposed to verify both?

    If you have a linear equation instead of a quadratic, how would you solve it?
     
  6. Feb 23, 2013 #5
    Thanks, finished that one. Now, I wrote the following program and am wondering how I would write a code that prompts the user every 12 months to make a desired payment of up to 10% of what remains of the loan.

    ! ------- Loan Payment -------

    program Borrow
    implicit none

    integer month
    real loan, mPayment, interestRate

    print*, "Enter the amount of the loan: "
    read*, loan

    print*, "Enter the annual interest rate (as a percent): "
    read*, interestRate

    print*, "Enter the monthly payment: "
    read*, mPayment

    print*, "Amount of the loan is: ", loan
    print*, "Annual interest rate : ", interestRate
    print*, "Your monthly payment is : ", mPayment

    print*, "month loan"
    month = 0
    do while (loan .gt. 0)
    loan = loan + loan*interestRate/100/12 - mPayment
    month = month + 1
    write(*,12), month, loan
    12 format(1x, I5, F12.2)
    end do

    stop
    end
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook




Similar Discussions: Beginner Fortran Help
  1. Fortran Help (Replies: 2)

Loading...