6 svar
180 visningar
Johnn1 är nöjd med hjälpen
Johnn1 31
Postad: 27 jan 2022 11:33

Kurvanpassning.

Hej!


Håller på med en uppgift där jag ska anpassa en kurva.


punkten (4,3) används som skarv.


Vi har kurvan y = a1 + a2x + a3x^2+a4x^3 på intervallet [-1,4] och y=a5+a6x+a7x^2+a8x^3 på intervallet [4,8]


Det blir totalt åtta okända variabler. 


kurvan  y = a1 + a2x + a3x^2+a4x^3 ska gå genom punkterna  (-1,3) (2,7) och (4,3)


Kurvan y=a5+a6x+a7x^2+a8x^3 ska gå genom (4,3) (5,5) och (8,-1)


Dessutom skapar vi två villkor så att kurvan blir så snäll som möjligt. 


Derivatan av y = a1 + a2x + a3x^2+a4x^3 d.vs a2+2a3x+3a4x^2 och derivatan av a5+a6x+a7x^2+a8x^3 d.vs a6+2a7x+3a8x^2 ska vara lika då x=4


Andra derivatan av derivatan. 2a3+6a4x och 2a7+6a6x ska vara lika då x=4


Bestäm a1, a2…..a

Dock så får jag varken använda mig av polyfit, vander, interp1, interp2, polyfit, polyval eller splines. 


Vet inte hur jag ska gå tillväga för att lösa uppgiften då jag inte får använda någon typ av inbyggda funktioner. 

 

Tack!

DrMuld 110
Postad: 27 jan 2022 11:41

Du har 8 okända och 8 ekvation (3 punkter + 3 punkter + derivatan i x=4 + andra derivantan i x=4)

Det blir ett stort ekvationsystem, men som går att lösa

Johnn1 31
Postad: 27 jan 2022 17:23 Redigerad: 27 jan 2022 18:51

Förstår dock inte hur jag ska ställa upp det eller skriva in i matlab. Det kanske jag som är helt ute och cyklar. 

Blir det så här om jag ska ställa upp ekv. systemet?

 

 1 -1    1 -1 0 0 0 0 =[3] 1     2    4     8 0 0 0 0=[7]1     4   16   64 0 0 0 0=[3][ 1    4   16    64 0 0 0 0]=[3][ 1    5   25   125 0 0 0 0]=[5][ 1    8   64    512 0 0 0 0] =[-1]och sedan[ 0 1 8 48 0 0 0 0] = 0[0 2 0  24 0 0 0 0] = 0d.v.s derivatan samt andra derivatan

Matsmats 567 – Livehjälpare
Postad: 27 jan 2022 18:31

Hej,

du är lite inne på rätt spår men du vill ju lösa ut 8 obekanta (a1 - a8) ur 8 ekvationer, förslagsvis genom matrisinvertering (eftersom det är MATLAB). Vi vill mao skapa en 8 x 8 matris.

Du skulle t.ex. kunna bilda första raden i matrisen för punkten (-1,3) på följande sätt:

rad1 = 1 -1 -12 -13 0 0 0 0 och får då en första ekvation rad1*a1 a2 a3 a4 a5 a6 a7 a8T=3

Johnn1 31
Postad: 27 jan 2022 18:52
Matsmats skrev:

Hej,

du är lite inne på rätt spår men du vill ju lösa ut 8 obekanta (a1 - a8) ur 8 ekvationer, förslagsvis genom matrisinvertering (eftersom det är MATLAB). Vi vill mao skapa en 8 x 8 matris.

Du skulle t.ex. kunna bilda första raden i matrisen för punkten (-1,3) på följande sätt:

rad1 = 1 -1 -12 -13 0 0 0 0 och får då en första ekvation rad1*a1 a2 a3 a4 a5 a6 a7 a8T=3

Jag redigerade mitt svar.

 

Är det så du menar? Och sedan bara köra linsolve(x,y) för att få fram "a" värdena? 

Johnn1 skrev:

Jag redigerade mitt svar.

I fortsättningen, om någon har svarat på ditt inlägg och du har ett nytt försök, gör ett nytt inlägg i tråden istället för att ändra i det gamla. Det är svårt att förstå vad som hänt i tråden om gamla försök försvinner. /moderator

Matsmats 567 – Livehjälpare
Postad: 27 jan 2022 19:48

Du har inte med a1 - a8 i uppställningen.

Min tanke var att du skulle skapa en matrisekvation X×aT = Y, där a = a1  a2 a3 a4 a5 a6 a7 a8 .

Om du ställt upp matrisen i MATLAB så löser du den genom att invertera X.

Jag gav ett förslag på första raden i X.

Svara Avbryt
Close