x = 0で関数の1次導関数を計算するためにPythonを使用しました。私は何をすべきかを検討するための助けが必要です。私の正確な仕事は、私の近似のエラーがどのようにステップサイズSが10の累乗で減少するかをプロットすることです。h
を少なくとも10E-8に減らす必要があります。ここに私のコードは私の関数を作成する次のとおりです。Pythonを使用して近似の誤差を計算すると、ステップサイズが小さくなるにつれて減少します
私の機能とxの値を取得する:
from numpy import *
from matplotlib.pyplot import *
def f1(x):
g = sin(math.pi*e**-x)
return g
n = 1000
x = zeros(n+1,dtype=float)
step = 2.0/float(n)
f = zeros(n+1,dtype=float)
df = zeros(n+1,dtype=float)
dfdx= zeros(n+1,dtype=float)
for i in range(0,n+1):
x[i] = -1.0 + float(i)*step
f[i] = f1(x[i])
dfdx[i] = - math.pi*e**(-x[i])*cos(math.pi*e**-(x[i]))
for i in range(0,n):
df[i] = (f[i+1]-f[i])/step
df[n] = (f[n] - f[n-1])/step
df2[0]=(f[1]-f[0])/step
df2[n]=(f[n] - f[n-1])/step
for i in range(1,n):
df2[i] = (f[i+1]-f[i-1])/(2.0*step)
これはべきだったとして、パイを出力し、私はdfdx[x==0]
を計算するのに必要なすべての値を、保存されました。私は、これは私の講義を参照して作られたまともなビットですが、私は何が起こっているのほとんどを知っている。私のエラーをプロットするために、ステップの値の配列hx
を作成することにしました。私の推測ではdf[n/2]-dfdx[n/2]
です。ここで、n
はグリッドポイントの数です。私はこの中で、直接私の可変ステップを使用する必要があると感じ、私は以下の混乱を持っているよう
def f2(x):
l = df[n/2]-dfdx[n/2]
hx = zeros(9,dtype=float)
er = zeros(9,dtype=float)
for i in range(0,n+1):
hx[i]= df[hx/2]-dfdx[hx/2] + 10**-[i]
g[i] = l(hx[i])
私は、この内の任意の自信を持っていない(明らかと一緒に - ?私は何をしますか) :
10の累乗でステップサイズを小さくする必要があるアレイを適切に作成するにはどうすればよいですか?コード内でそれを試行する私の方法は動作しません。
私のエラー機能は有効ですか?そうでない場合、なぜですか?
ステップサイズが小さくなるにつれて、適切に値を保存するにはどうすればよいですか?次のようなものが動作するはず
あなたが特定のサイズの配列を初期化する必要があるので、あなたが、配列が必要です。しかし、リストを使用すると、 'my_list.append(value) 'を使って要素を簡単に追加することができます – DavidG
私は講師がしたことだけではありません。 – sangstar