WisFaq!

\require{AMSmath} geprint op donderdag 2 mei 2024

Re: Polynomen in Matlab programmeren

Beste Anneke,
Bedankt voor de snelle reactie.
Ja, zoiets had ik me ook al bedacht, maar wist niet zeker of het goed was.
Het is alleen, Hoe moet ik dat eerste deel invoeren?
Ik dacht iets van:

clear all

function result = legpoly ( a, N )

P0=1;
P1=x;
for k=1:n
P=((2*n)*x*P1)-(n*P0)/(n+1);
P0=P1;
P1=P;
end;

Pn+1(x)=((2*n+1)*x*Pn(x)-(n*Pn-1(x)))/(n+1);

Maar goed, dat werkt dus niet. Ik weet nl niet hoe ik die recursieve functie kan beschrijven...
Want stel dat dit hierboven ongeveer goed is, dan krijg ik alsnog voor bijv n=5 geen 5e maar 6e polynoom, dus ook daar moet ik iets in verzinnen. Ik dacht eerst van n=N-1 ofiets dergelijks???

alvast bedankt,
Jerney

JAZZ
10-6-2005

Antwoord

dag Jerney

Blijkbaar is het principe van recursie niet duidelijk voor jou.
En verder zondig je zo ongeveer tegen alle programmeer-principes.
Het commando clear mag niet voor de function-heading komen, moet helemaal niet voorkomen in je function-file, hooguit in een script waarmee je de function aanroept.
Je invoerparameters a en N komen helemaal niet terug in de berekening van het functieresultaat.
De uitvoerparameter result krijgt geen waarde.
Hoe moet het dan wel?
Ik vermoed dat er bij jou meer aan schort dan dit ene probleem, en dat een bijscholing of begeleiding noodzakelijk is, maar ik wil je voor dit probleem wel even helpen.
Aangenomen dat jouw definitie van Legendre Polynoom geldig is (dat heb ik niet gecheckt) en dat P1 = 1 en niet x, zoals je in jouw programmaatje suggereert, zou de functionfile er zo uit kunnen zien:

function y=legpoly(x,n)
if (n==0)|(n==1)
y=1
else
y=((2*n-1)*x*legpoly(x,n-1)-(n-1)*legpoly(x,n-2))/n
end

succes,

Anneke
10-6-2005


© 2001-2024 WisFaq
WisFaq - de digitale vraagbaak voor het wiskunde onderwijs - http://www.wisfaq.nl

#39147 - Software - Student universiteit