import numpy as np
from scipy import optimize
import matplotlib.pyplot as plt
import scienceplots
#Warning : As of version 2.0.0, you need to add import scienceplots before setting the style (plt.style.use('science')).
plt.style.use(['science', 'notebook'])
# rcPramsを使ってTeXのフォントをデフォルトにする
#plt.rcParams['font.family'] = 'Times New Roman' # font familyの設定
plt.rcParams['font.family'] = 'serif' # font familyの設定
plt.rcParams['mathtext.fontset'] = 'cm' # math fontの設定
ニュートン法の関数
# eps: 収束判定条件
# x00: 解の初期値
# max: 繰り返し回数の上限
def newton(func, dfunc, eps, x00, nmax): # ニュートン・ラフソン法
global nx
icon = -1
x0 = x00
for i in range(nmax):
x = x0-func(x0)/dfunc(x0)
if np.abs(x-x0)>eps:
x0 = x
else:
icon = 0
break
xz = x
nx = i
if icon==-1:# Error in newton
raise Exception('Error in newton')
return xz
関数の計算
def calf2(func, func2, x0, dx, nx):# 与えられた関数計算,出力
print(f"{'x':>8s} {'f(x)':>15s} {'f2(x)':>15s}")
for i in range(nx):
x = x0 + dx*i
y = func(x)
y2 = func2(x)
print(f"{x:>8.3f} {y:>15.11f} {y2:>15.11f}")
return