import math
def funcF( x, y) :
return ( ( 2 * x) - math .cos ( y + 1 ) ) # math.sin(x + 1) - y - 1.2
def funcG( x, y) :
return ( y + math .sin ( x) + 0.4 ) # 2 * x + math.cos(y) - 2
def derivedF_x( x) :
return ( 2 ) # math.cos(x + 1)
def derivedG_x( x) :
return ( math .cos ( x) ) # 2
def derivedF_y( y) :
return ( math .sin ( y + 1 ) ) # -1
def derivedG_y( y) :
return ( 1 ) # -math.sin(y)
def Determ( func1, func2, func3, func4) :
return ( func1 * func4 - func2 * func3)
def NewtonMethod( el_x, el_y) :
e = 0.0001
k = 0
dN = Hn = Kn = 0
dN = Determ( derivedF_x( el_x) , derivedF_y( y) , derivedG_x( x) , derivedG_y( el_y) )
Hn = Determ( derivedF_y( y) , funcF( el_x, el_y) , derivedG_y( el_y) , funcG( el_x, el_y) ) / dN
Kn = Determ( funcF( el_x, el_y) , derivedF_x( el_x) , funcG( el_x, el_y) , derivedG_x( ) ) / dN
#Нахождение корней сис-мы
while ( abs ( Hn) >= e and abs ( Kn) >= e) :
el_x += Hn
el_y += Kn
dN = Determ( derivedF_x( el_x) , derivedF_y( y) , derivedG_x( x) , derivedG_y( el_y) )
Hn = Determ( derivedF_y( y) , funcF( el_x, el_y) , derivedG_y( el_y) , funcG( el_x, el_y) ) / dN
Kn = Determ( funcF( el_x, el_y) , derivedF_x( el_x) , funcG( el_x, el_y) , derivedG_x( ) ) / dN
k += 1
print ( "\n Корни системы:" )
print ( " x =" , "%.5f" % el_x, "y = " , "%.5f" % el_y)
print ( "Количество итераций:" , k)
arg = [ -3 , -2.6 , -2.2 , -1.8 , -1.4 , -1 , -0.6 , -0.2 , 0.2 , 0.6 , 1 ]
x, y = [ ] , [ ]
#Заполнение значениями ф-й
for i in arg:
y.append ( math .cos ( i + 1 ) / 2 ) # math.sin(i + 1) - 1.2
x.append ( -math .sin ( i) -0.4 ) # -math.cos(i)/2 + 1
#Определение начальных точек
el_x, el_y = x[ 5 ] , y[ 5 ]
print ( "Начальные точки приближения:\n x =" , "%.2f" % el_x, "\n y =" , el_y)
NewtonMethod( el_x, el_y)
aW1wb3J0IG1hdGgKCmRlZiBmdW5jRih4LCB5KToKICAgIHJldHVybigoMiAqIHgpIC0gbWF0aC5jb3MoeSArIDEpKSAjIG1hdGguc2luKHggKyAxKSAtIHkgLSAxLjIKCmRlZiBmdW5jRyh4LCB5KToKICAgIHJldHVybih5ICsgbWF0aC5zaW4oeCkgKyAwLjQpICMgMiAqIHggKyBtYXRoLmNvcyh5KSAtIDIKCmRlZiBkZXJpdmVkRl94KHgpOgogICAgcmV0dXJuKDIpICMgbWF0aC5jb3MoeCArIDEpCgpkZWYgZGVyaXZlZEdfeCh4KToKICAgIHJldHVybiAobWF0aC5jb3MoeCkpICMgMgoKZGVmIGRlcml2ZWRGX3koeSk6CiAgICByZXR1cm4gKG1hdGguc2luKHkgKyAxKSkgIyAtMQoKZGVmIGRlcml2ZWRHX3koeSk6CiAgICByZXR1cm4oMSkgIyAtbWF0aC5zaW4oeSkKCmRlZiBEZXRlcm0oZnVuYzEsIGZ1bmMyLCBmdW5jMywgZnVuYzQpOgogICAgcmV0dXJuKGZ1bmMxICogZnVuYzQgLSBmdW5jMiAqIGZ1bmMzKQoKZGVmIE5ld3Rvbk1ldGhvZChlbF94LCBlbF95KToKICAgIGUgPSAwLjAwMDEKICAgIGsgPSAwCiAgICBkTiA9IEhuID0gS24gPSAwCiAgICBkTiA9IERldGVybShkZXJpdmVkRl94KGVsX3gpLCBkZXJpdmVkRl95KHkpLCBkZXJpdmVkR194KHgpLCBkZXJpdmVkR195KGVsX3kpKQogICAgSG4gPSBEZXRlcm0oZGVyaXZlZEZfeSh5KSwgZnVuY0YoZWxfeCwgZWxfeSksIGRlcml2ZWRHX3koZWxfeSksIGZ1bmNHKGVsX3gsIGVsX3kpKSAvIGROCiAgICBLbiA9IERldGVybShmdW5jRihlbF94LCBlbF95KSwgZGVyaXZlZEZfeChlbF94KSwgZnVuY0coZWxfeCwgZWxfeSksIGRlcml2ZWRHX3goKSkgLyBkTgogICAgCiAgICAj0J3QsNGF0L7QttC00LXQvdC40LUg0LrQvtGA0L3QtdC5INGB0LjRgS3QvNGLCiAgICB3aGlsZShhYnMoSG4pID49IGUgYW5kIGFicyhLbikgPj0gZSk6CiAgICAgICAgZWxfeCArPSBIbgogICAgICAgIGVsX3kgKz0gS24KICAgICAgICBkTiA9IERldGVybShkZXJpdmVkRl94KGVsX3gpLCBkZXJpdmVkRl95KHkpLCBkZXJpdmVkR194KHgpLCBkZXJpdmVkR195KGVsX3kpKQogICAgICAgIEhuID0gRGV0ZXJtKGRlcml2ZWRGX3koeSksIGZ1bmNGKGVsX3gsIGVsX3kpLCBkZXJpdmVkR195KGVsX3kpLCBmdW5jRyhlbF94LCBlbF95KSkgLyBkTgogICAgICAgIEtuID0gRGV0ZXJtKGZ1bmNGKGVsX3gsIGVsX3kpLCBkZXJpdmVkRl94KGVsX3gpLCBmdW5jRyhlbF94LCBlbF95KSwgZGVyaXZlZEdfeCgpKSAvIGROCiAgICAgICAgayArPSAxCiAgICBwcmludCgiXG7QmtC+0YDQvdC4INGB0LjRgdGC0LXQvNGLOiIpCiAgICBwcmludCgiIHggPSIsICIlLjVmIiAlIGVsX3gsICJ5ID0gIiwgIiUuNWYiICUgZWxfeSkKICAgIHByaW50KCLQmtC+0LvQuNGH0LXRgdGC0LLQviDQuNGC0LXRgNCw0YbQuNC5OiIsIGspCgphcmcgPSBbLTMsIC0yLjYsIC0yLjIsIC0xLjgsIC0xLjQsIC0xLCAtMC42LCAtMC4yLCAwLjIsIDAuNiwgMV0KeCwgeSA9IFtdLCBbXQoKI9CX0LDQv9C+0LvQvdC10L3QuNC1INC30L3QsNGH0LXQvdC40Y/QvNC4INGELdC5CmZvciBpIGluIGFyZzoKICAgIHkuYXBwZW5kKG1hdGguY29zKGkgKyAxKSAvIDIpICMgbWF0aC5zaW4oaSArIDEpIC0gMS4yCiAgICB4LmFwcGVuZCgtbWF0aC5zaW4oaSktMC40KSAjIC1tYXRoLmNvcyhpKS8yICsgMQoKI9Ce0L/RgNC10LTQtdC70LXQvdC40LUg0L3QsNGH0LDQu9GM0L3Ri9GFINGC0L7Rh9C10LoKZWxfeCwgZWxfeSA9IHhbNV0sIHlbNV0KcHJpbnQoItCd0LDRh9Cw0LvRjNC90YvQtSDRgtC+0YfQutC4INC/0YDQuNCx0LvQuNC20LXQvdC40Y86XG4geCA9IiwgIiUuMmYiICUgZWxfeCwgIlxuIHkgPSIsIGVsX3kpCgpOZXd0b25NZXRob2QoZWxfeCwgZWxfeSk=