2018年12月29日 星期六

利用 正割法 解 非線性方程式 f(x) (exp(x)+1/pow(2,x)+2*cos(x)-6) python語言


# 利用 正割法 解 非線性方程式 f(x) (exp(x)+1/pow(2,x)+2*cos(x)-6) python語言



# Python Program to find root of an equations using secant method

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}

>>>

沒有留言:

張貼留言

2024_09 作業3 以Node-Red 為主

 2024_09 作業3  (以Node-Red 為主  Arduino 可能需要配合修改 ) Arduino 可能需要修改的部分 1)mqtt broker  2) 主題Topic (發行 接收) 3) WIFI ssid , password const char br...