I'm rusty with fortran and programming in general. I can't see my "error" in a code that I wrote from scratch.(adsbygoogle = window.adsbygoogle || []).push({});

Basically I wanted to get some fun and solve for a temperature in thermodynamics where I must get "T_f" which appear in a transcendental equation: ##A\ln \left ( \frac{T_f^2}{T_1T_2} \right )+2B[2T_f-(T_1T_2)]=0##.

Where T_1 is worth 100, T_2 is worth 200, A=2 and B=0.005.

Here is my code:that I compile along withCode (Text):program rootfinderbisection

implicit none

real(4)::a,b,xn,fa,fb,fn,f,e,x_n,t_1,t_2

write(*,*)"Enter the temperatures t_1 and t_2"

read(*,*)t_1, t_2

write(*,*)"Enter your interval guess, [a,b]"

read(*,*)a,b

write(*,*)"Enter the precision you want"

read(*,*)e

fa=f(a)

fb=f(b)

if (abs(fa)<e) then

write(*,*) "The solution is",a

stop

else if (abs(fb)<e) then

write(*,*)"The solution is",b

stop

end if

if (f(a)*f(b)>0) then

write(*,*)"There's an even number of root(s) in that interval"

stop

endif

xn=0.5*(a+b)

fn=f(xn)

do while (abs(fn)>e)

if (fa*fn<0) then

b=xn

fb=fn

else

a=xn

fa=fn

endif

xn=0.5*(a+b)

fn=f(xn)

end do

write(*,*)"The solution is",x_n

end programThe problem is that for the values I said above, I get the message "There's an even number of root(s) in that interval". Thus apparently the condition f(a)*f(b)>0 is satisfied. However when I enter the numbers in my pocket calculator I get f(a)=-2.3862... and f(b)=2.3862... where I truncated both values. Thus the condition is not satisfied.Code (Text):function f(x)

implicit none

real(4)::f,x, t_1,t_2

f=2.*log((x**2.)/(t_1*t_2))+2.*0.005*(2.*x-(t_1+t_2))

end function

I really don't see what's wrong. Any idea?

Edit: I tried with many different values for a and b. I even changed t_1 and t_2, same message.

Edit2: I've just tested the values of fa and fb. It thinks they are worth infinity. Going to check this out.

Edit3: No idea why it thinks they are worth infinity. o_0.

Edit4: ok it does not plug in t_1 and t_2 inside my function.

**Physics Forums - The Fusion of Science and Community**

The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

# Fortran bisection method

Loading...

Similar Threads - Fortran bisection method | Date |
---|---|

How to buy Fortran Programming Software Commersial License | Jan 30, 2018 |

Fortran for Computational Fluid Dynamics Problems | Jan 11, 2018 |

Runtime error 112 | Oct 17, 2015 |

Bisection formula fortran90/95 | Jun 25, 2015 |

Bisection method in fortran 90 | Dec 14, 2012 |

**Physics Forums - The Fusion of Science and Community**