# 利用 正割法 解 非線性方程式 f(x) (exp(x)+1/pow(2,x)+2*cos(x)-6) python語言
from math import *
MAX=50
TOL=0.00001
def f(x):
temp=(exp(x)+1/pow(2,x)+2*cos(x)-6.0)
return temp
i=2
x0=1.8
x1=2.0
q0=f(x0)
q1=f(x1)
print(" i xi f(x)\n")
print("====================================\n")
print("{%-2d} {%10.6f} {%10.6f}\n" %(0,x0,q0))
print("{%-2d} {%10.6f} {%10.6f}\n" %(1,x1,q1))
while(i<=MAX):
x=x1-q1*(x1-x0)/(q1-q0)
print("{%-2d} {%10.6f} {%10.6f}\n" %(i,x,f(x)))
if(fabs(x-x1) < TOL):
print("====================================================\n")
print("The Root={%10.6f} f({%10.6f})={%10.6f}\n" %(x,x,f(x)) )
break
else:
i=i+1
x0=x1
q0=q1
x1=x
q1=f(x)
if(i>MAX):
print("Secant Method faileds!!!\n")
======== RESTART: H:/2018-09勤益科大數值分析/數值分析/PYTHON/EX2-9-1.py ===========
i xi f(x)
====================================
{0 } { 1.800000} { -0.117582}
{1 } { 2.000000} { 0.806762}
{2 } { 1.825441} { -0.016116}
{3 } { 1.828860} { -0.002147}
{4 } { 1.829385} { 0.000007}
{5 } { 1.829384} { -0.000000}
====================================================
The Root={ 1.829384} f({ 1.829384})={ -0.000000}
>>>
沒有留言:
張貼留言