|
| polynomisk regression Fra : Dennis Kristensen |
Dato : 26-03-03 16:20 |
|
Hej,
Jeg skal lave et polynomium udfra en række punkter, problemet består i at få
polynomiet tvunget igennem et bestemt punkt, (x,y)=(20,0), for den er 0 og
skal altid være 0, men hvordan gør jeg så det?
MVH Dennis
| |
Jeppe Stig Nielsen (26-03-2003)
| Kommentar Fra : Jeppe Stig Nielsen |
Dato : 26-03-03 18:15 |
|
Dennis Kristensen wrote:
>
> Hej,
>
> Jeg skal lave et polynomium udfra en række punkter, problemet består i at få
> polynomiet tvunget igennem et bestemt punkt, (x,y)=(20,0), for den er 0 og
> skal altid være 0, men hvordan gør jeg så det?
I stedet for at lede efter generelle polynomier p(x) skal du nok lede
efter polynomier af typen
(x-20)·q(x)
hvor q(x) er et polynomium.
--
Jeppe Stig Nielsen <URL: http://jeppesn.dk/>. «
"Je n'ai pas eu besoin de cette hypothèse (I had no need of that
hypothesis)" --- Laplace (1749-1827)
| |
Sven Nielsen (26-03-2003)
| Kommentar Fra : Sven Nielsen |
Dato : 26-03-03 23:52 |
|
In article <3e81c55f$0$213$edfadb0f@dread15.news.tele.dk>,
tolstrup@privat.dk says...
> Jeg skal lave et polynomium udfra en række punkter, problemet består i at få
> polynomiet tvunget igennem et bestemt punkt, (x,y)=(20,0), for den er 0 og
> skal altid være 0, men hvordan gør jeg så det?
Der er to muligheder: Enten er dit polynomium nul-polynomiet P_0(x) = 0
eller også er det et polynomium hvor 20 er en rod. I så fald kan det
polynomium du søger skrives som: P(x) = P'(x) * (x-20).
Hvis du ved hvordan man regner med polynomier (altså polynomiers
multiplikation), burde dette kunne hjælpe dig.
En anden mulighed er, at du vælger en metode til lineær regression (der
er faktisk mange forskellige), hvor du kan vægte de forskellige punkter.
Ved at give (20,0) en passende høj vægt kan du få et polynomium, der
kommer passende "tæt på" dette punkt.
Du kommer desværre ikke med så præcise oplysninger om din opgave, at jeg
kan vejlede dig meget bedre, end jeg nu har gjort. Men du kan jo prøve
at komme med flere oplysninger, hvis du ikke fik hjælp nok.
Med venlig hilsen Sven.
| |
Jeppe Stig Nielsen (27-03-2003)
| Kommentar Fra : Jeppe Stig Nielsen |
Dato : 27-03-03 00:03 |
|
Sven Nielsen wrote:
>
> Der er to muligheder: Enten er dit polynomium nul-polynomiet P_0(x) = 0
> eller også er det et polynomium hvor 20 er en rod. I så fald kan det
> polynomium du søger skrives som: P(x) = P'(x) * (x-20).
Den første mulighed er jo dog et specialtilfælde af den anden.
--
Jeppe Stig Nielsen <URL: http://jeppesn.dk/>. «
"Je n'ai pas eu besoin de cette hypothèse (I had no need of that
hypothesis)" --- Laplace (1749-1827)
| |
Sven Nielsen (27-03-2003)
| Kommentar Fra : Sven Nielsen |
Dato : 27-03-03 02:01 |
|
In article <3E8231A3.2263CBA9@jeppesn.dk>, mail@jeppesn.dk says...
> Sven Nielsen wrote:
> > Der er to muligheder: Enten er dit polynomium nul-polynomiet P_0(x) = 0
> > eller også er det et polynomium hvor 20 er en rod. I så fald kan det
> > polynomium du søger skrives som: P(x) = P'(x) * (x-20).
> Den første mulighed er jo dog et specialtilfælde af den anden.
Det er den jo også. Det var et lille kiks fra min side. Men det kunne
måske være en fordel at chekke det trivielle specialtilfælde først, hvis
man skulle lave en algoritme for løsning af problemet.
Med venlig hilsen Sven.
| |
Dennis Kristensen (27-03-2003)
| Kommentar Fra : Dennis Kristensen |
Dato : 27-03-03 09:00 |
|
"Sven Nielsen" <sven@SPAMNOTscientist_NOSPAM_.com.SPAMTRAP> wrote in message
news:MPG.18ebf42a1f956840989694@read.news.dk.uu.net...
> In article <3e81c55f$0$213$edfadb0f@dread15.news.tele.dk>,
> tolstrup@privat.dk says...
>
> > Jeg skal lave et polynomium udfra en række punkter, problemet består i
at få
> > polynomiet tvunget igennem et bestemt punkt, (x,y)=(20,0), for den er 0
og
> > skal altid være 0, men hvordan gør jeg så det?
>
> Der er to muligheder: Enten er dit polynomium nul-polynomiet P_0(x) = 0
> eller også er det et polynomium hvor 20 er en rod. I så fald kan det
> polynomium du søger skrives som: P(x) = P'(x) * (x-20).
>
> Hvis du ved hvordan man regner med polynomier (altså polynomiers
> multiplikation), burde dette kunne hjælpe dig.
>
> En anden mulighed er, at du vælger en metode til lineær regression (der
> er faktisk mange forskellige), hvor du kan vægte de forskellige punkter.
> Ved at give (20,0) en passende høj vægt kan du få et polynomium, der
> kommer passende "tæt på" dette punkt.
>
> Du kommer desværre ikke med så præcise oplysninger om din opgave, at jeg
> kan vejlede dig meget bedre, end jeg nu har gjort. Men du kan jo prøve
> at komme med flere oplysninger, hvis du ikke fik hjælp nok.
>
Nej det gik lidt stærkt, undskyld, men jeg har prøvet at, som i siger søge
et polynomium P(x)=P'(x)*(x-20).
Problmet er at jeg har 7 målepunkter som tilnærmelsesvis udgør et
3.gradspoly. og som nævnt krydser det i punktet (20,0), hvorfra det ikke må
forskydes. Hvis jeg søger polynomiet P'(x)*(x-20) kan je få en løsning, hvor
alle de andre nulpunkter bliver forskudt, så meget at det alligevel ikke
kan bruges, håber det hjalp lidt på problemet.
Kunne det hjælpe at gå en grad op i P'(x)???
| |
Kai Birger Nielsen (27-03-2003)
| Kommentar Fra : Kai Birger Nielsen |
Dato : 27-03-03 09:44 |
|
In <3e82afce$0$248$edfadb0f@dread15.news.tele.dk> "Dennis Kristensen" <tolstrup@privat.dk> writes:
>Problmet er at jeg har 7 målepunkter som tilnærmelsesvis udgør et
>3.gradspoly. og som nævnt krydser det i punktet (20,0), hvorfra det ikke må
>forskydes. Hvis jeg søger polynomiet P'(x)*(x-20) kan je få en løsning, hvor
>alle de andre nulpunkter bliver forskudt, så meget at det alligevel ikke
>kan bruges, håber det hjalp lidt på problemet.
>Kunne det hjælpe at gå en grad op i P'(x)???
Hvis du har syv målepunkter, kan du sagtens være så uheldig at
du skal bruge et syvendegradspolynomie for at ramme dem alle.
Har du nogen grund til at tro at det lige er et tredjegradspolynomie,
der er det bedste at fitte med ? (Generelt tror jeg at du får
en mere ekstrem opførsel af funktionen udenfor målepunkterne, jo
højere grad du bruger, men hvis du kun skal bruge tilnærmelsen
indenfor måleintervallet, kan du formentlig være ligeglad med det.
Men standardrædselsscenariet er fitting af salg af kaburatorsprit
vha et tredjegradspolynomie og baseret på vintersalgstal. Det
fitter salget i sommermånederne ret dårligt
Hvis du bare vil have en pæn kurve, så tror jeg at det er
smartere at dele kurven i småstykker og fitte med en simpel
kurve på en måde så "samlingerne" bliver pæne.
mvh Birger Nielsen (bnielsen@daimi.au.dk)
| |
Dennis Kristensen (27-03-2003)
| Kommentar Fra : Dennis Kristensen |
Dato : 27-03-03 13:24 |
|
"Kai Birger Nielsen" <bnielsen@daimi.au.dk> wrote in message
news:b5udl7$16cq$1@news.net.uni-c.dk...
> In <3e82afce$0$248$edfadb0f@dread15.news.tele.dk> "Dennis Kristensen"
<tolstrup@privat.dk> writes:
>
>
> Hvis du har syv målepunkter, kan du sagtens være så uheldig at
> du skal bruge et syvendegradspolynomie for at ramme dem alle.
> Har du nogen grund til at tro at det lige er et tredjegradspolynomie,
> der er det bedste at fitte med ?
nu får i lige tallene
x -40 -20 0 20 40 60 80
y 2,22 0,472 -0,134 0 0,632 1,65 2,86
ved at indføre dem i exvel, og tilføre en 'trendline', kan jeg se, at en
3.grads fitting er tilstrækkelig til mig.
> Hvis du bare vil have en pæn kurve, så tror jeg at det er
> smartere at dele kurven i småstykker og fitte med en simpel
> kurve på en måde så "samlingerne" bliver pæne.
Jo tak, jeg ville gerne have en MEGET pæn kurve i området -40 til 80... :)
Men jeg skal bruge et og kun et polynomie der beskriver hele forløbet.
Dennis
| |
Jeppe Stig Nielsen (27-03-2003)
| Kommentar Fra : Jeppe Stig Nielsen |
Dato : 27-03-03 13:58 |
|
Dennis Kristensen wrote:
>
> nu får i lige tallene
>
> x -40 -20 0 20 40 60 80
> y 2,22 0,472 -0,134 0 0,632 1,65 2,86
>
> ved at indføre dem i exvel, og tilføre en 'trendline', kan jeg se, at en
> 3.grads fitting er tilstrækkelig til mig.
Sådan her:
x -40 -20 0 20 40 60 80
y 2,22 0,472 -0,134 0 0,632 1,65 2,86
y/(x-20) -0,037 -0,01185 0,0067 udef. 0,0316 0,04125 0,04767
Du finder så bedste andengradspolynomium gennem disse seks punkter
(se bort fra den midterste række, y-rækken). Så multiplicerer du det
fundne andengradpolynomium q(x) med (x-20). Så får du dit søgte tredje-
gradspolynomium
p(x) = (x-20)·q(x)
Er det ikke det du vil?
--
Jeppe Stig Nielsen <URL: http://jeppesn.dk/>. «
"Je n'ai pas eu besoin de cette hypothèse (I had no need of that
hypothesis)" --- Laplace (1749-1827)
| |
Jeppe Stig Nielsen (27-03-2003)
| Kommentar Fra : Jeppe Stig Nielsen |
Dato : 27-03-03 14:10 |
|
Jeppe Stig Nielsen wrote:
>
> Sådan her:
>
> x -40 -20 0 20 40 60 80
> y 2,22 0,472 -0,134 0 0,632 1,65 2,86
>
> y/(x-20) -0,037 -0,01185 0,0067 udef. 0,0316 0,04125 0,04767
>
> Du finder så bedste andengradspolynomium gennem disse seks punkter
> (se bort fra den midterste række, y-rækken). Så multiplicerer du det
> fundne andengradpolynomium q(x) med (x-20). Så får du dit søgte tredje-
> gradspolynomium
>
> p(x) = (x-20)·q(x)
>
> Er det ikke det du vil?
Nu gjorde jeg det lige på min regnemaskine. Jeg får
p(x) = (x-20)·(-0,0000043550x²+0,00086188x+0,0056949)
--
Jeppe Stig Nielsen <URL: http://jeppesn.dk/>. «
"Je n'ai pas eu besoin de cette hypothèse (I had no need of that
hypothesis)" --- Laplace (1749-1827)
| |
Dennis Kristensen (27-03-2003)
| Kommentar Fra : Dennis Kristensen |
Dato : 27-03-03 14:55 |
|
> >
> > Er det ikke det du vil?
>
> Nu gjorde jeg det lige på min regnemaskine. Jeg får
>
> p(x) = (x-20)·(-0,0000043550x²+0,00086188x+0,0056949)
>
Jo lige i øjet, men hvordan har du mon fundet dine koefficienter i
2.gradslign., måske er det i bund og grund fitting jeg generelt gør forkert
:(
Dennis
| |
Kai Birger Nielsen (28-03-2003)
| Kommentar Fra : Kai Birger Nielsen |
Dato : 28-03-03 10:37 |
|
In <3e82ed87$0$135$edfadb0f@dread15.news.tele.dk> "Dennis Kristensen" <tolstrup@privat.dk> writes:
>"Kai Birger Nielsen" <bnielsen@daimi.au.dk> wrote in message
>news:b5udl7$16cq$1@news.net.uni-c.dk...
>> In <3e82afce$0$248$edfadb0f@dread15.news.tele.dk> "Dennis Kristensen"
><tolstrup@privat.dk> writes:
>>
>>
>> Hvis du har syv målepunkter, kan du sagtens være så uheldig at
>> du skal bruge et syvendegradspolynomie for at ramme dem alle.
>> Har du nogen grund til at tro at det lige er et tredjegradspolynomie,
>> der er det bedste at fitte med ?
Jeg korrigerer lige. Det er nok med et sjettegradspolynomie til
7 punkter.
>nu får i lige tallene
>x -40 -20 0 20 40 60 80
>y 2,22 0,472 -0,134 0 0,632 1,65 2,86
>ved at indføre dem i exvel, og tilføre en 'trendline', kan jeg se, at en
>3.grads fitting er tilstrækkelig til mig.
Ok. For sjov fandt jeg 6. gradspolynomiet til dig:
sub pretty {
my($x) = $_[0];
$x = ($x+40)/20;
my($y) = (
- 0.002275 * $x**6
+ 0.031875 * $x**5
- 0.110875 * $x**4
- 0.529875 * $x**3
+ 7.09715 * $x**2
-22.218000 * $x
+19.980000 )/9.0;
return $y;
}
Det er nemmest at finde hvis de tilhørende x-værdier er 0,1,2,3...
Derfor transformationen x=(x+40)/20. Hvis man godt kan lide
regnearbejde kan man bare sætte det ind for x i formlen og
regne løs. Koefficienterne ser pænere ud hvis man ganger med
9, så det er bare for at slippe for 0.023944444444444444 og
den slags.
>> Hvis du bare vil have en pæn kurve, så tror jeg at det er
>> smartere at dele kurven i småstykker og fitte med en simpel
>> kurve på en måde så "samlingerne" bliver pæne.
>Jo tak, jeg ville gerne have en MEGET pæn kurve i området -40 til 80... :)
>Men jeg skal bruge et og kun et polynomie der beskriver hele
>forløbet.
Ok, ovenstående giver sådan et og den ser ganske rigtigt pæn ud.
mvh Birger Nielsen (bnielsen@daimi.au.dk)
| |
Ole Pagh (28-03-2003)
| Kommentar Fra : Ole Pagh |
Dato : 28-03-03 13:25 |
|
>
> nu får i lige tallene
>
> x -40 -20 0 20 40 60 80
> y 2,22 0,472 -0,134 0 0,632 1,65 2,86
>
Resultat fra et udemærket 'kurve-fit' program:
------------------------------------------
"CurveExpert 1.3: 5th Degree Polynomial Fit"
"Standard Error:" 0.00598736
"Correlation Coefficient:" 0.999998
Weighting Scheme: Unknown
"nth order Polynomial, y=a+bx+cx^2+dx^3..."
"a:" -0.13104545
"b:" -0.0094217424
"c:" 0.00089023674
"d:" -5.9919508e-006
"e:" 5.2438447e-008
"f:" -3.1510417e-010
"X Data" "Y Data" "Curve fit Data"
-40 2.22 2.2202
-20 0.472 0.470818
0 -0.134 -0.131045
20 0 -0.00393939
40 0.632 0.634955
60 1.65 1.64882
80 2.86 2.8602
---------------------------
mvh Ole
| |
Dennis Kristensen (09-04-2003)
| Kommentar Fra : Dennis Kristensen |
Dato : 09-04-03 12:09 |
|
"Dennis Kristensen" <tolstrup@privat.dk> wrote in message
news:3e81c55f$0$213$edfadb0f@dread15.news.tele.dk...
> Hej,
>
> Jeg skal lave et polynomium udfra en række punkter, problemet består i at
få
> polynomiet tvunget igennem et bestemt punkt, (x,y)=(20,0), for den er 0 og
> skal altid være 0, men hvordan gør jeg så det?
>
Hvad nu hvis man vender den og skal skære et punkt (x,y)=(0,1)
Dataerne er nu:
x: -12,323 -8,994 -4,745 0,000 5,312 10,977
17,068
y: 0,9783 0,9953 1,001 1,000 0,9937 0,9838 0,9722
Fra excel med intecept sat til 1 fås:
-2,594E-7*x^4+7,621E-6*x^3-9,052E-5*x^2-1,019E-3*x+1
Men denne ligning kan jeg ikke få.
MVH Dennis
| |
|
|