| |
|
|
p.specht
| Interessanter Weise ist es pas toujours entier simple, pour bestimmte Funktionskurven den Anstieg à einer Stelle X trop ermitteln. si cela nämlich überhaupt sinnvoll ist, bleibt quelquefois quand même rien d'autre sur comme rein numerische Methoden trop verwenden. cet avons mais aussi ses Tücken, z.B. chez Nullstellen ou bien (+/-Infinity)-Polstellen. suivante wurden qui schlimmsten tomber abgefangen, mais garantie ist le reste toujours aucun, qui cela chez anderen Funktionstypen aussi klappt. alors est es testen, checken, ausprobieren - wofür cela nachstehende Progi hilfreich son pourrait.
Titre de la fenêtre "Test: Numerische Differentiation (Anstieg "+\
"in x pour qui Differenzenmethode)"
' *************************************************
' (CL) CopyLeft 2013-09 by P. Specht, vienne
' sans jedwede Gewähr!
' *************************************************
proc FNY : parameters x!
return -1*10^-35' ici auskommentieren, Funktion suivante programmieren:
return sin(x!)
endproc
' *************************************************
' *** Differenzenmethode, ici optimiert pour ***
' *** Winkelfunktionen im Bereich Nähe (+1..-1) ***
' *************************************************
proc Ableitung :parameters x!
var nenn!=x!*(1.000005-0.999995)
cas nenn!=0:return 0
return (fny(x!*1.000005)-fny(x!*0.999995))/nenn!
endproc
Fenêtre Style 24:font 2:randomize
Fenêtre 0,0-%maxx,%maxy-40
var xh&=width(%hwnd)\2:var yh&=height(%hwnd)\2
si fny(1)=-1*10^-35
imprimer "\n Abzuleitende Funktion s'il te plaît dans Proc FNY(x) einprogrammieren!"
sound 770,100:sound 440,300
waitinput 10000
end
endif
declare xa!,xm!,xe!,xd!,y$,x!,y!
declare xl&,yl&,xn&,yn&
declare xo&,yo&,xm&,ym&
declare xp&,yp&,xq&,yq&
Imprimer "\n représenter ab X-Start = ";:input xa!
imprimer " jusqu'à X-Fin = ";:input xe!
si xe!=0:xe!=8:xa!=-8:endif'== reine paresse ====
imprimer " Fehlerfunktion représenter? ";:input y$
cas y$=»:y$="Ja"
y$=upper$(left$(y$,1)):cas y$="Y":y$="J"
'seulement Schleppwerte qui unterschiedlichen Line-Befehle:
xl&=0:yl&=yh& : xo&=0:yo&=yh& : xq&=0:yq&=yh&
x!=xa!
xd!=(xe!-xa!)/(2*xh&)
cas xd!=0:xd!=1*10^-35
repeat
usepen 0,2,rgb(255,0,0)
y!=fny(x!)
xn&=(x!-xa!)/xd!
yn&=yh&-100*y!
line xl&,yl& - xn&,yn&
xl&=xn&:yl&=yn&
usepen 0,1,rgb(0,0,155)
y!=Ableitung(x!)
xm&=(x!-xa!)/xd!
ym&=yh& - 100*y!
line xo&,yo& - xm&,ym&
xo&=xm&:yo&=ym&
si y$="J"
usepen 0,1,rgb(0,255,0)
y!=Ableitung(x!)-cos(x!)
xq&=(x!-xa!)/xd!
yq&=yh& - 10^12*y!
line xp&,yp& - xq&,yq&
xp&=xq&:yp&=yq&
endif
x!=x!+xd!' STEP
until x!>xe!
waitinput
end
P.S.: Am gefährlichsten erscheinen Divisionen par zéro, juste derrière elle sommes negative Wurzelargumente un beliebter Exception- ou bien gar Aufhängegrund. Negative Logarithmen faire qui l'affaire aussi spannend, dicht gefolgt de trop hoch greifenden Potenzfunktionen.. |
|
|
| XProfan 11Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 10.05.2021 ▲ |
|
|
|