Citat:
Man behöver sen inte alls approximera med ett polynom, folk använder glatt exponentialfunktioner, potensfunktioner osv.
Javisst, du kan glatt testa alla former tills dess att du får den bästa formen inom din definierade sökrymd (dvs i praktiken köra min metod). För att hitta rätt formel (exempelvis newtons ekvationer) måste du prova alla former, dvs köra min metod. Ska du däremot approximera så använder du någon av ovannämda, dvs du provar ett begränsat antal former som lämpar sig för approximering. Det kallas curve fitting och är inte exakt detsamma som optimering.
Citat:
Ursprungligen postat av
Xenonen
Det här stämmer inte. "Bästa" anpassningen är vanligen fysikaliskt helt fel eftersom alla mätdata innehåller fel och din anpassning försöker räkna in även dessa fel i ekvationen.
En sak i taget. Gör så här. Välj ut en fysisk formel. Simulera ett experiment genom att ge mig säg 5 punkter. Dvs, ge mig x och y. Max 5% mätfel, vilket är lite för högt till att börja med (men en gräns måste vi ha). Inget trams som y = 0 + slumpmässigt_felvärde eller liknande.
Eftersom att jag har en sketen netbook och atom processor med en kärna (och jag redan pekat ut kompexitetsproblemet) så väljer du en formel med högst fem operatorer inklusive funktioner och fyra variabler (konstanter räknar vi som variabler). Detta är ändå ganska högt och längre än vad jag kommit hittills (så det blir en utmaning.. men du måste inte utnyttja alla).
Jag har begränsat mig till givna konstanter, vilket mitt första inlägg bevittnar om.
Tillåtna operatorer är + - * /.
Tillåtna funktioner: sqrt, ln, ^2.
Tillåtna konstanter: 0.5, pi, ljusets hastighet, 9.82, 1.
Exempel på en ogiltig formel är:
1/sqrt(0.5 + (x^2)*ln x) <-- 6 operatorer
Exempel på giltig formel:
1/sqrt(0.5 + x*ln x) <-- 5 operatorer, 4 variabler
Om du svarar så knåpar jag ihop ett program som hittar din formel. Sedan skapar jag en formel med samma regler, men som är 1 operator och 1 variabel mindre och ser hur bra dina approximeringsmetoder gör (din tur).
Något du vill ändra?
Det här ett proof of concept, dvs jag tänker inte sitta och implementera någon enterprise lösning här.
edit: vi skippar ^x eftersom att det inte spelar större roll för proof-of-concept och bara slösar min tid om jag ska implementera det. men x*x*x*x är okej, det går ju under reglerna.