Italia
Fonte/ Codesnippets

Funktionskurven manuell einpassen

 

p.specht

Funktionen die es nicht gibt, z.B. weil eine Formel dazu nicht bekannt ist: Liegen konkrete Meßergebnisse vor, kann man per diese manchmal durch Parabelanpassung, Fourieranalyse oder Reihenentwicklung eine Funktionsformel finden - doch manchmal eben auch nicht! Dann hilft nur mehr PROBIEREN und mit Parametern so lange herum EXPERIMENTIEREN, bis etwas halbwegs brauchbares herauskommt. Bzgl. Laufzeit ist eine Zusammensetzung der neuen Funktion aus Standardfunktionen, die in der Programmiersprache schon vorhanden sind, naturalmente vorteilhaft.

Sollte auch die manuelle Erzeugung scheitern, hilft nurmehr Abschnittsweise (lineare oder nichtlineare) Interpolation zwischen den gewonnenen Messpunkten - etwa durch Spline-Anpassung. Dann wird es allerdings SEHR aufwendig...

WindowTitle "ExpMan: Eine Funktionskurve aus bis zu 5 Glockenkurven manuell erzeugen"
'(CL) CopyLeft 2016-05 by P.Specht, Vienna/Austria - Ohne jede Gewähr! No warranty whatsoever!
WindowStyle 24:Window 0,0-%maxx,%maxy
declare xh&,yh&,x!,y!,first&,n&,fnr&,anzf&,lastx!,lasty!,w$,co&
declare f1pos!,f1streu!,f1amp!,f2pos!,f2streu!,f2amp!,f3pos!
declare f3streu!,f3amp!,f4pos!,f4streu!,f4amp!,f5pos!,f5streu!,f5amp!
xh&=width(%hwnd)\2:yh&=height(%hwnd)*7/8:font 2

proc f :parameters x!,mu!,sigma!

    return exp(-1*sqr(x!-mu!)/sigma!)

endproc

Default:
anzf&=5
inc anzf&'da plus Summenkurve
f1pos!=-2:f1streu!=1:f1amp!=1
f2pos!=-1:f2streu!=1:f2amp!=1
f3pos!= 0:f3streu!=1:f3amp!=1
f4pos!= 1:f4streu!=1:f4amp!=1
f5pos!= 2:f5streu!=1:f5amp!=1
beep
SCHLEIFE:
fnr&=anzf&+1

REPEAT

    dec fnr&'funktionsnummer
    first&=1

    whileloop -xh&,xh&,10

        x!=&Loop/100

        SELECT fnr&

            caseof 1 : y!=f(x!,f1pos!,f1streu!)*f1amp!:co&=rgb(255,0,0)

            caseof 2 : y!=f(x!,f2pos!,f2streu!)*f2amp!:co&=rgb(0,200,0)

            caseof 3 : y!=f(x!,f3pos!,f3streu!)*f3amp!:co&=rgb(0,0,255)

            caseof 4 : y!=f(x!,f4pos!,f4streu!)*f4amp!:co&=rgb(200,0,255)

            caseof 5 : y!=f(x!,f5pos!,f5streu!)*f5amp!:co&=rgb(100,100,0)

            caseof 6 : co&=0

            y! = f(x!,f1pos!,f1streu!)*f1amp!+f(x!,f2pos!,f2streu!)*f2amp!+ \
            f(x!,f3pos!,f3streu!)*f3amp!+f(x!,f4pos!,f4streu!)*f4amp!+f(x!,f5pos!,f5streu!)*f5amp!

        ENDSELECT

        if first&

            first&=0

        else

            usepen 0,2+4*(fnr&=anzf&),co&
            line xh&+lastx!*100,(yh&-lasty!*200) - xh&+x!*100,yh&-y!*200

        endif

        lastx!=x!:lasty!=y!

    endwhile

UNTIL fnr&=0

usepen 0,1,0:line 0,yh& - 2*xh&,yh&
locate 1,1
print "\n                        "
color 12,15
print " 1 F1-Position: ";format$("%g",f1pos!);"       "
print " 2 F1-Streuung: ";format$("%g",f1streu!);"       "
print " 3 F1-Amplitude ";format$("%g",f1amp!);"       "
print "                                   "
color 2,15
print " 4 F2-Position: ";format$("%g",f2pos!);"       "
print " 5 F2-Streuung: ";format$("%g",f2streu!);"       "
print " 6 F2-Amplitude:";format$("%g",f2amp!);"       "
print "                                   "
color 9,15
print " 7 F3-Position: ";format$("%g",f3pos!);"       "
print " 8 F3-Streuung: ";format$("%g",f3streu!);"       "
print " 9 F3-Amplitude ";format$("%g",f3amp!);"       "
print "                                   "
color 3,15
print " 7 F4-Position: ";format$("%g",f4pos!);"       "
print " 8 F4-Streuung: ";format$("%g",f4streu!);"       "
print " 9 F4-Amplitude ";format$("%g",f4amp!);"       "
print "                                   "
color 6,15
print " 7 F5-Position: ";format$("%g",f5pos!);"       "
print " 8 F5-Streuung: ";format$("%g",f5streu!);"       "
print " 9 F5-Amplitude ";format$("%g",f5amp!);"       "
color 0,15
print "\n Neustart? [j/-]             ";
locate 3,17:input w$:if w$<>"":f1pos!=val(w$):goto "weitr":endif
locate 4,17:input w$:if w$<>"":f1streu!=val(w$):case f1Streu!=0:f1Streu!=1:goto "weitr":endif
locate 5,17:input w$:if w$<>"":f1amp!=val(w$):goto "weitr":endif
locate 7,17:input w$:if w$<>"":f2pos!=val(w$):goto "weitr":endif
locate 8,17:input w$:if w$<>"":f2streu!=val(w$):case f2Streu!=0:f2Streu!=1:goto "weitr":endif
locate 9,17:input w$:if w$<>"":f2amp!=val(w$):goto "weitr":endif
locate 11,17:input w$:if w$<>"":f3pos!=val(w$):goto "weitr":endif
locate 12,17:input w$:if w$<>"":f3streu!=val(w$):case f3Streu!=0:f3Streu!=1:goto "weitr":endif
locate 13,17:input w$:if w$<>"":f3amp!=val(w$):goto "weitr":endif
locate 15,17:input w$:if w$<>"":f4pos!=val(w$):goto "weitr":endif
locate 16,17:input w$:if w$<>"":f4streu!=val(w$):case f4Streu!=0:f4Streu!=1:goto "weitr":endif
locate 17,17:input w$:if w$<>"":f4amp!=val(w$):goto "weitr":endif
locate 19,17:input w$:if w$<>"":f5pos!=val(w$):goto "weitr":endif
locate 20,17:input w$:if w$<>"":f5streu!=val(w$):case f5Streu!=0:f5Streu!=1:goto "weitr":endif
locate 21,17:input w$:if w$<>"":f5amp!=val(w$):goto "weitr":endif
locate 23,17:input w$:if w$="j":cls:goto "Default":endif
weitr:
cls
goto "SCHLEIFE"
 
Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'...
20.05.2021  
 



Zum Quelltext


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

1.351 Views

Untitledvor 0 min.
H.Brill23.05.2023
ecki10.02.2023
Rschnett06.08.2022
p.specht21.11.2021
Di più...

Themeninformationen

Dieses Thema hat 1 subscriber:

p.specht (1x)


Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie