[wiskunde] probleem splines in matlab

Moderators: ArcherBarry, Fuzzwood

Reageer
Berichten: 96

[wiskunde] probleem splines in matlab

Ik ben bezig aan een opgave waarin we allerlei benaderingstechnieken moeten toepassen en met elkaar vergelijken. Op dit moment ben ik bezig aan een opgave ivm splines.

Ik heb gevonden hoe je in matlab splines berekent, en de grafiek van mijn functie dmv benadering met splines ziet er telkens logisch uit, het is bij de foutenkromme dat het mis gaat.

Ik heb volgend script :

Code: Selecteer alles

function vierkant_spline = oefening6(m)

x = linspace(0, 2*pi);

xx = zeros(1, m+1);

vierkant = f_theta(x);

for i = 1 : m  

    xx(i) = (2*(i - 1)*pi)/m;

end

xx(m + 1) = 2*pi;

vierkant_spline = spline(x, vierkant, xx);

subplot(1,2,1);

plot(vierkant_spline.*cos(xx), vierkant_spline.*sin(xx));

axis([-3/2, 3/2, -3/2, 3/2]);

title('Het vierkant dmv splines');

subplot(1,2,2);

fout = vierkant - vierkant_spline;

plot(xx, fout);

axis([0, 2*pi, -1/2, 1/2]);

title('De foutenkromme'); 
Ik weet ook dat het fout gaat omdat vierkant en vierkant_spline niet dezelfde dimensie hebben.

Volgende dingen heb ik al geprobeerd, weliswaar zonder juist resultaat :
  • x = linspace(0, 2*pi, m + 1) ipv gewoon x = 0 : 2*pi;
  • ik heb ook al geprobeerd om de matrix "vierkant" te "herconstrueren" om het zo te noemen, door het grootste en kleinste element te nemen uit de matrix, en hiertussen een interval van m + 1 punten te construeren, dit gaf dus een absurde foutenkromme
Heeft iemand een idee dat mij vooruit kan helpen aub ?

Gebruikersavatar
Berichten: 7.224

Re: [wiskunde] probleem splines in matlab

Als je de foutencurve tussen je functie f_theta en de spline wilt bekijken, zul je f_theta(xx) met spline(x, vierkant, xx) moeten vergelijken. Dan vergelijk je immers de werkelijke functie met je geinterpoleerde functie.
If I have seen further it is by standing on the shoulders of giants.-- Isaac Newton

Berichten: 96

Re: [wiskunde] probleem splines in matlab

Dat dacht ik ook, maar dan is de foutenkromme altijd constant 0, terwijl er duidelijk door de spline interpolatie geen perfect vierkant komt te staan.

Gebruikersavatar
Moderator
Berichten: 51.271

Re: [wiskunde] probleem splines in matlab

Welkom :D op het forum Huiswerk en Practica.

Jij wilt vlot hulp. Dat is alleen goed mogelijk als je daar zelf wat voor doet.

Naast de algemene regels van dit forum hebben we voor dit huiswerkforum een paar speciale regels en tips.

Die vind je in de huiswerkbijsluiter

In die huiswerkbijsluiter staat bijvoorbeeld:

VAKGEBIED-TAGS

Plaats het vakgebied waarop je vraag betrekking heeft tussen rechte haken in de titel.

bijv: [biologie] of [frans]. Zo blijft dit huiswerkforum overzichtelijk.


Hebben we even voor je gedaan. Denk je er de volgende keer zélf aan??

ALS WIJ JE GEHOLPEN HEBBEN...
help ons dan eiwitten vouwen, en help mee ziekten als kanker en zo te bestrijden in de vrije tijd van je chip...
http://www.wetenscha...showtopic=59270

Berichten: 7.068

Re: [wiskunde] probleem splines in matlab

Voer de volgende commando's eens uit in Matlab (terzijde: ik gebruik octave i.p.v. Matlab, maar ga ervan uit dat het hetzelfde oplevert):

Code: Selecteer alles

x = linspace(0, 2*pi);

size(x)
Dit geeft de dimensies van 'x'. Is het wat je verwacht?

Doe hierna eens:

Code: Selecteer alles

y = 0 : 2*pi;

size(y)
Heeft 'y' dezelfde dimensie als 'x'?

Probeer nu:
Geeft dit dezelfde foutmelding als je programma?

Als je twee vectoren van elkaar af wilt trekken dan zul je ervoor moeten zorgen dat beide vectoren dezelfde afmetingen hebben. Ik denk ook dat je de functie 'spline' nog eens goed moet bekijken (help spline).

Berichten: 96

Re: [wiskunde] probleem splines in matlab

Ik heb ondertussen het verschil door tussen linspace en de andere interval notatie.

Maar ik begrijp niet zo goed wat er fout is aan mijn gebruik van de functie "spline", ik heb het stukje in de helpfile er nog eens op nagelezen, en ik zie niet echt wat er anders zou kunnen gedaan worden.

Toch ben ik er mij van bewust dat de fout daar wel eens kan liggen, want wanneer ik in mijn plot ook het vierkant erbij plot, is er inderdaad geen fout, dus ik begrijp het eventjes niet goed meer wat er fout loopt.

Berichten: 7.068

Re: [wiskunde] probleem splines in matlab

Maar ik begrijp niet zo goed wat er fout is aan mijn gebruik van de functie "spline"
Ik zie dat ik hier verwarring heb gezaaid. Ik bedoelde dat je goed moest kijken hoe de dimensie van de inputs invloed heeft op de dimensie van de output (dat die gelijk is aan die van xx).

Terzijde: waarom maak je een functie van je hele programma?

Code: Selecteer alles


% aantal samples waarop de spline-benadering gebaseerd wordt.

n_samples = 100;

% aantal samples waarmee de benadering gecontroleerd wordt.

n_check = 1000;

t = linspace(0, 2*pi, n_samples);

tt = linspace(0, 2*pi, n_check);

vierkant_echt = f_theta(tt);

vierkant_spline = spline(t, f_theta(t), tt);

fout = vierkant_echt - vierkant_spline;


Berichten: 96

Re: [wiskunde] probleem splines in matlab

Ok, bedankt, nu werkt het zoals het zou moeten.

Ik denk dat ik inderdaad de functie spline een beetje fout begrepen had qua dimensies etc.

Ik heb een functie gemaakt van het programma, omdat het aantal punten dat je gebruikt voor de spline mee te berekenen variabel moest kunnen zijn, en ik zo een aantal punten kan meegeven.

Reageer