石黒/日誌/2013-05-06
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*最適化数学第3章 勾配法、ニュートン法など [#z34eead4]
疑似コードが載っているがなんだか読みづらいのでPythonで実装してみる試み
**Sympy [#g593ceaa]
https://github.com/sympy/sympy/wiki/Tutorial
アーカイブ展開してcd
sudo python setup.py install
sample.py
from sympy import *
x = Symbol('x')
print diff(cos(x), x, 2)
**アルゴリズム3.1が通らない件 [#t9d140c1]
なんか特定の変数のときだけ無限ループに陥ります。先輩方たすけて
from sympy import *
f = lambda x: -(x-3.0)**2 + 3
fd = lambda a: f(Symbol('x')).diff(Symbol('x')).subs(Symbol('x'), a)
x = Symbol('x')
print f(x)
print fd(x)
x0 = -1
h0 = 1
def search(f, fd):
#1.
x = x0; h = float(h0);]
#2.
while True:
h = sign(fd(x)) * abs(h); X = x; Xd = x + h;
#3.
if f(X) < f(Xd):
#(a)
while not f(X) > f(Xd):
h = 2 * h; X = Xd; Xd = X + h;
#(b)
x = X; h = h / float(2);
#4.
else:
#(a)
while not f(X) <= f(Xd):
h = float(h) / float(2); Xd = Xd - h;
#(b)
x = Xd; h = 2 * h;
#5.
if abs(fd(x)) <= 0.1: #epsilon
break
#6.
return x
print search(f, fd)
終了行:
*最適化数学第3章 勾配法、ニュートン法など [#z34eead4]
疑似コードが載っているがなんだか読みづらいのでPythonで実装してみる試み
**Sympy [#g593ceaa]
https://github.com/sympy/sympy/wiki/Tutorial
アーカイブ展開してcd
sudo python setup.py install
sample.py
from sympy import *
x = Symbol('x')
print diff(cos(x), x, 2)
**アルゴリズム3.1が通らない件 [#t9d140c1]
なんか特定の変数のときだけ無限ループに陥ります。先輩方たすけて
from sympy import *
f = lambda x: -(x-3.0)**2 + 3
fd = lambda a: f(Symbol('x')).diff(Symbol('x')).subs(Symbol('x'), a)
x = Symbol('x')
print f(x)
print fd(x)
x0 = -1
h0 = 1
def search(f, fd):
#1.
x = x0; h = float(h0);]
#2.
while True:
h = sign(fd(x)) * abs(h); X = x; Xd = x + h;
#3.
if f(X) < f(Xd):
#(a)
while not f(X) > f(Xd):
h = 2 * h; X = Xd; Xd = X + h;
#(b)
x = X; h = h / float(2);
#4.
else:
#(a)
while not f(X) <= f(Xd):
h = float(h) / float(2); Xd = Xd - h;
#(b)
x = Xd; h = 2 * h;
#5.
if abs(fd(x)) <= 0.1: #epsilon
break
#6.
return x
print search(f, fd)
ページ名: