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 | Science Articles, Homework Help, Discussion**

Join Physics Forums Today!

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

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

# Fortran bisection method

**Physics Forums | Science Articles, Homework Help, Discussion**