print("第一種方法 第二種方法")
# 二分法
"""
x0 初始值, sigma 容許誤差 n 迭代上限
"""x0 = 1.5
sigma = math.pow(10, -6)
n = 1000
def binary_split(x0, sigma, n):
# (a, b)為求根區間上下界 count為迭代次數計數器
a = math.floor(x0)
b = math.ceil(x0)
count = 0
while (abs(b-a) > sigma and count < n):
mid = (a+b)/2
f1 , f2 , f3 = function(a) , function(mid) , function(b)
if f1*f3 < 0 and f1*f2 < 0:
b = mid
count+= 1
else:
a = mid
count+= 1
if count < n:
return (a+b)/2
else:
print("none")
return 0
# 牛頓迭代法 使用單點弦法
def newton(x0, sigma, n):
def func_diff(x1, x0):
return (x1-x0)/(function(x1)-function(x0))
# 迭代計數器 count
count = 0
x1 = math.ceil(x0)
while abs(x1-x0) > sigma and count < n:
x1 = x1 - func_diff(x0, x1)*(x1-x0)
count += 1
if count < n:
return x1
else:
print("none !")
return 0
數值分析實驗 二 之數值積分與微分
1 用復化梯形公式的自動控制誤差演算法求積分。2 romberg積分演算法求積分。復化梯形公式 sy2 1.m檔案 myint 0,1,100 fun1.m檔案 function f fun1 x if x 0 x 1 f 1 else f sin x x endmyint,m檔案 function...
數值分析實驗二 數值積分
1 2 include include using namespace std double f double x return pow x,2 int main double a,b,e int n cin a b e cin n double h b a n double x 1000 x 0 ...
數值分析實驗相關
綜合說明 在寫這次實驗的時候,程式的圖形方式選用的是sdl圖形庫,關於sdl圖形庫的使用,可以網上查詢相關資料,對於一般的2d圖形顯示還是很簡單好上手的。這些實驗的 我都發在了github 也遇到一些問題,我也分享一下解決辦法 1.配置完的sdl專案顯示控制台 需要在專案屬性 配置屬性 鏈結器 系統...