Hej Carsten
Jeg er ved at prøve at få det til at passe... men syndes ikke rigtig jeg kan
Hvad bruger du til X1, X2, X3 og X4 ?
Best Regards
Jesper Vels
"Carsten Svaneborg" <carsten.svaneborg@se.organisation.header.se> skrev i en
meddelelse news:oab5v9.rf2.ln@zqex.mpip-mainz.mpg.de...
> Jesper Vels wrote:
> > Jeg har altså 4 punkter:
> > (-20,8), (-15,4), (-10,6), (0,0)
>
> Ok. Jeg formoder du ønsker at konstruere et 7 grads polynomium der
> går gennem disse punkter, og har vandret tangent i hver af dem.
> Du har derfor 8 betingelser, så der skal nok være 8 koefficienter,
> og da den laveste er konstanten er den højeste g*x^7, nogle af
> dem kan dog være 0. Du kan ikke løse problemet med et 5 grads
> polynomium, fordi der ikke er nok parametre til at få alle
> begrænsningerne på plads.
>
> Dvs. polynomiet på en form f(x)=z +a*x +b*x^2 +c*x^3 + .. +g*x^7
>
> z=a=0 kan ses fra den 4 betingelse, men jeg regner helt
> generelt, bare for morskabens skyld.
>
> Du kan med fordel skrive polynomiet som f(x)=a.X dvs. prik
> produktet mellem to vektorer. a=(z,a,b,c,d,..) er vektoren
> med coefficienterne og X=(1,x,x^2,x³,...) er vektoren med x
> potenserne i polynomiet.
>
> Dit problem er nu at løse de 8 ligninger
> f(x[i])=y[i] og df/dx (x[j])=0 hvor i,j = 1,..,4
>
> f(x[1])=y[1] kan skrives som a.(1,x[1],x[1]^2,x[2]^4,..) = y[1]
>
> df(x)/dx =0 for x=x[1] som a.(0,1,2*x[1],3*x[1]^2,..) = 0
>
> Derfor kan alle 8 ligninger skrives i matrix form:
> (forudsat vi begge ikke bruger proportional spacing fonts)
>
> [ 1 x[1] x[1]^2 x[1]^3 .... ] [ z ] [ y[1] ]
> [ 1 x[2] x[2]^2 x[2]^3 .... ] [ a ] [ y[2] ]
> [ 1 x[3] x[3]^2 x[3]^3 .... ] [ b ] = [ y[3] ]
> [ 1 x[4] x[4]^2 x[4]^3 .... ] * [ c ] [ y[4] ]
> [ 0 1 2*x[1] 3*x[1]^2 .. ] [ d ] [ 0 ]
> [ 0 1 2*x[2] 3*x[2]^2 .. ] [ e ] [ 0 ]
> [ 0 1 2*x[3] 3*x[3]^2 .. ] [ f ] [ 0 ]
> [ 0 1 2*x[4] 3*x[4]^2 .. ] [ g ] [ 0 ]
>
> Jeg skriver kun de første 4 søjler, du kan let gætte formen
> på resten fra mønstret.
>
> Dvs. problemet kan skrives i matrix sprog som M a = b
> for M=denne 8x8 matrix, a=vektoren af ukendte coefficienter,
> og b=vektoren af y værdier og 0.
>
> Og forusat at matricen har en invers, så er løsningen
> a=M^-1 b, dvs. du får løsningen ved at invertere en 8x8 matrix.
> (= løse 8 linære ligninger med 8 ubekendte).
>
> Jeg er ret overbevist om at nogle af de smarte
> matematiske folk her i gruppen kan bevise at M har
> altid en invers, når alle x[1],.. er forskellige, så
> det vil jeg ikke bekymre mig om.
>
> Bemærk at ovenstående formulering er let at generalisere
> til flere punkter, hvis du kun ønsker at kontrollere
> den afledte i visse af punkterne, eller hvis du ønsker at
> binde højreordens afledede. Du skal bare altid have lige
> så mange parametre som der er betingelser.
>
> > Har mulighed for at bruge Matcad + TI92
>
> Det kan nu heller ikke skade at bruge hovedet!
> For sjovs-skyld burde du gøre det i hånden,
> Men Mathcad burde let kunne invertere 8x8 matricer.
>
> Den eksakte løsning syntes at være:
>
> z = 0
> a = 0
> b = 69393983/64591800
> c = 13108684187/40692834000
> d = 1112124947/25836720000
> e = 24738013177/8138566800000
> f = 14145349/129183600000
> g = 12798403/8138566800000
>
> Jeg har prøvet at løse matrix ligninger i hånden, og når det
> ikke er sjovt længre kan man bruge Mathematica. ;*)
>
> --
> Carsten Svaneborg
>
http://www.mpip-mainz.mpg.de/~svanebor