Pythonを使用して、次の暗黙の方程式を数値的に解こうとしています:
y*sin(c)+sin(y*c)=0
はc
定数です。どのようにすればよいでしょうか?古典的なニュートン ラフソン法を実装しましたが、収束していないようです。
編集:
コードは次のとおりです。
f = open('results.dat','w')
import math
alpha = input('Define the alpha angle: ')
print >> f, 'alpha =', alpha
lambda_0 = input('Define an initial value: ')
print >> f, 'y_0 = ', y_0
gamma = math.pi - math.radians(alpha)
# def f(x,y):
# p = 2.0 * x
# t = p * y
# val = t * math.cos(t) - math.sin(t)
# val /= (p * math.cos(t) + math.sin(p))
# return val
toll = 1e-12
itmax = 50
diff = 1.0
it = 0
while diff > toll and it <= itmax:
p = 2.0 * gamma
t = p * y_0
y_1 = t * math.cos(t) - math.sin(t)
y_1 /= (p * math.cos(t) + math.sin(p))
print >> f, 'p = ', p
print >> f, 't = ', t
print >> f, 'y at iteration ', it, ' = ', y
diff = abs(y - y_0)
y_0 = y
it += 1
print >> f, 'diff = ', diff
print >> f, 'y_0 = ', y_0
print >> f, 'it = ', it
f.close()