| |
|
|
p.specht
| cela Newton-Raphson-procéder funktioniert aussi avec Funktionen dans 2 Dimensionen, sprich: z =Z(x,y). malheureusement ist cela procéder insofern plutôt anspruchsvoll, comme qui sog. partiellen Ableitungen qui bekannten Funktion (pour x et pour y) également bekannt son devrait. chez pas allzu komplizierten Formeln sollte cela mais aller. Liegen allerdings seulement payons / Datensätze, z.B. avec Messwerten sur 2 Dimensionen avant, ensuite empfehlen sich autre, rein numerische procéder, z.B. Nelder-Mead udgl.
Hinweis: qui ici einprogrammierten Funktionen wurden gewählt, à Auswirkungen qui heiklen l'élection des Startpunktes sur cela Ergebnis darzustellen.
Titre de la fenêtre "Gradientenabstieg (Newtonverfahren dans 2 Dimensionen)"
AppendMenuBar 100,"Geg.: Z(x,y)=(x+sin(y))*exp(-sqr(x)*-sqr(y)) Ges.: lieu des lokalen Minimus"
Fenêtre 0,0-%maxx,%maxy-40:font 2
declare z!,x!,y!,xh&,yh&,f!,g!,s!
xh&=width(%hwnd)\2:yh&=height(%hwnd)\2
g!=1.5:s!=0.1:f!=220
proc Z :parameters x!,y!
return (x!+sin(y!))*exp(-sqr(x!)-sqr(y!))
endproc
proc dZdx :parameters x!,y!
return exp(-sqr(y!)-sqr(x!))*(1-2*x!*(x!+sin(y!)))
endproc
proc dZdy :parameters x!,y!
return exp(-sqr(y!)-sqr(x!))*(cos(y!)-2*y!*(x!+sin(y!)))
endproc
' ------ Z-champ représenter ----
cls
x!=-g!:Repeat
y!=-g!:Tandis que y!<=g!
z!=Z(x!,y!)
usepen 0,7+7*z!,rgb(0,0,400*z!)
line xh&+x!*f!+z!*7,(yh&-y!*f!-z!*11) - xh&+x!*f!,yh&-y!*f!
y!=y!+s!:endwhile
x!=x!+s!:until x!>=g!
'-------------------------------------------------------
' Gradientenabstieg
'-------------------------------------------------------
declare gstep!,xx!,yy!,xxo!,yyo!,dx!,dy!,dz!,eps!,n&,xxx!,yyy!
gstep!=0.15
whileloop 50,-50,-5:yyy!=&Boucle/50
whileloop -50,50,5 :xxx!=&Boucle/30
xx!=xxx!
yy!=yyy!'Startpunkt
n&=0
REPEAT
dx!=dZdx(xx!,yy!)
dy!=dZdy(xx!,yy!)
xxo!=xx!:yyo!=yy!
xx!=xx!-dx!*gstep!
yy!=yy!-dy!*gstep!
usepen 0,4,rgb(255,0,0)
line xh&+xx!*f!,(yh&-yy!*f!)-xh&+xx!*f!,yh&-yy!*f!
locate 2,2:imprimer xx!,yy!,Z(xx!,yy!),n&;" "
inc n&
UNTIL ((xx!=xxo!) and (yy!=yyo!)) or (n&>=250)
WEND
WEND
beep
waitinput
Fin
|
|
|
| XProfan 11Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 28.05.2021 ▲ |
|
|
|