| |
|
|
p.specht
| Interessanter Weise es no siempre bastante simplemente, para cierto Funktionskurven el Anstieg a uno Punto X a ermitteln. Falls el nämlich überhaupt sinnvoll es, restos manchmal trotzdem nichts más encima como rein numerische Métodos utilizarse. Diese haben aber auch ihre Tücken, z.B. en Nullstellen oder (+/-Infinity)-Polstellen. Nachstehend fueron el schlimmsten Fallen abgefangen, aber Garantie es el todavía siempre no, daß en el otro Funktionstypen auch klappt. Also heißt lo testen, checken, ausprobieren - wofür el nachstehende Progi hilfreich ser podría.
Título de la ventana "Test: Numerische Differentiation (Anstieg "+\
"in x después de el Differenzenmethode)"
' *************************************************
' (CL) CopyLeft 2013-09 by P. Pájaro carpintero, Wien
' Ohne jedwede Gewähr!
' *************************************************
proc FNY : parámetros x!
volver -1*10^-35' hier auskommentieren, Función nachstehend programa:
volver sin(x!)
ENDPROC
' *************************************************
' *** Differenzenmethode, hier optimiert para ***
' *** Winkelfunktionen en Nähe (+1..-1) ***
' *************************************************
proc Ableitung :parámetros x!
var nenn!=x!*(1.000005-0.999995)
caso nenn!=0:volver 0
volver (fny(x!*1.000005)-fny(x!*0.999995))/nenn!
ENDPROC
Ventana de Estilo 24:font 2:randomize
Ventana 0,0-%maxx,%maxy-40
var xh&=width(%hwnd)\2:var yh&=height(%hwnd)\2
if fny(1)=-1*10^-35
imprimir "\n Abzuleitende Función Por favor, en Proc FNY(x) einprogrammieren!"
sound 770,100:sound 440,300
waitinput 10000
end
endif
declarar xa!,xm!,xe!,xd!,y$,x!,y!
declarar xl&,yl&,xn&,yn&
declarar xo&,yo&,xm&,ym&
declarar xp&,yp&,xq&,yq&
Imprimir "\n Darstellen de X-Start = ";:input xa!
imprimir " a X-End = ";:input xe!
if xe!=0:xe!=8:xa!=-8:endif'== reine Faulheit ====
imprimir " Fehlerfunktion darstellen? ";:input y$
caso y$="":y$="Ja"
y$=upper$(left$(y$,1)):caso y$="Y":y$="J"
'Nur Schleppwerte el unterschiedlichen Line-Befehle:
xl&=0:yl&=yh& : xo&=0:yo&=yh& : xq&=0:yq&=yh&
x!=xa!
xd!=(xe!-xa!)/(2*xh&)
caso 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&
if 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 por Null, igual detrás de él son negative Wurzelargumente una beliebter Exception- oder gar Aufhängegrund. Negative Logarithmen hacer el Sache auch spannend, dicht gefolgt de a hoch greifenden Potenzfunktionen.. |
|
|
| XProfan 11Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 10.05.2021 ▲ |
|
|
|