python 前进差分,中央差分,后进差分,Richardson补外を用いた牛顿法プログラム

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 前进差分,中央差分,后进差分,Richardson补外を用いた牛顿法プログラム相关的知识,希望对你有一定的参考价值。

# -*- coding: utf-8 -*-

# h = 0.00048828125
h = 0.001


def function_f(x):
	return x * x - 5.0

# 前進差分
def zenshin_dif(x_v):
	return x_v - function_f(x_v) / ((function_f(x_v + h) - function_f(x_v)) / h)

# 前進差分のRichardson補外 
def zenshin_richard_dif(x_v):
	temp1 = (function_f(x_v + h) - function_f(x_v))/h
	temp2 = (1/2.0) * ((function_f(x_v + (2 * h)) - function_f(x_v))/(2 * h))
	romberg1 = (temp1 - temp2)/(1 - 1/2.0)
	return x_v - function_f(x_v) / romberg1

# 中央差分
def chuo_dif(x_v):
	return x_v - function_f(x_v) / ((function_f(x_v + h) - function_f(x_v - h)) / (2.0 * h))

# 中央差分のRichardson補外 
def chuo_richard_dif(x_v):
	temp1 = (function_f(x_v + h) - function_f(x_v - h))/(2 * h)
	temp2 = (1/4.0) * ((function_f(x_v + (2*h)) - function_f(x_v - (2*h))) / (4*h))
	romberg1 = (temp1 - temp2)/(1 - 1/4.0)
	return x_v - function_f(x_v) / romberg1

# 後進差分
def koshin_dif(x_v):
	return x_v - function_f(x_v) /  ((function_f(x_v) - function_f(x_v - h)) / h)

# 後進差分のRichardson補外 
def koshin_richard_dif(x_v):
	temp1 = (function_f(x_v + (-1*h)) - function_f(x_v))/(-1*h)
	temp2 = (1/2.0) * ((function_f(x_v + (-2 * h)) - function_f(x_v))/(-2 * h))
	romberg1 = (temp1 - temp2)/(1 - 1/2.0)
	return x_v - function_f(x_v) / romberg1


# ステップの繰り返し

def iter(x_init):
	x_v = x_init
	for iter in range(0, 20):
		print x_v
		# x_v = zenshin_dif(x_v)
		# x_v = zenshin_richard_dif(x_v)
		# x_v = chuo_dif(x_v)
		# x_v = chuo_richard_dif(x_v)
		x_v = koshin_dif(x_v)
		# x_v = koshin_richard_dif(x_v)

iter(0.01)

以上是关于python 前进差分,中央差分,后进差分,Richardson补外を用いた牛顿法プログラム的主要内容,如果未能解决你的问题,请参考以下文章

差分进化算法(DE)简介及Python实现

差分进化算法(DE)简介及Python实现

差分进化算法(DE)简介及Python实现

差分滤波器的介绍及用于图像特征检测

python 背景差分

python Numdifftool的有限差分导数(Fornberg方法)