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
Student universiteit - vrijdag 10 juni 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