Probleem in matlab
Forumregels
(Middelbare) school-achtige vragen naar het forum "Huiswerk en Practica" a.u.b.
Zie eerst de Huiswerkbijsluiter
(Middelbare) school-achtige vragen naar het forum "Huiswerk en Practica" a.u.b.
Zie eerst de Huiswerkbijsluiter
-
- Berichten: 96
Probleem in matlab
Goede middag,
Ik zou de functie arctan(x) moeten benaderen met Legendre-veeltermen in MATLAB. We kregen het functievoorschrift gegeven, en natuurlijk het voorschrift voor de veeltermen. Ik heb volgende dingen in MATLAB gezet, maar mijn foutenkromme ziet er niet uit zoals hij er eigenlijk zou moeten uitzien. Zou iemand mij kunnen helpen ? Want volgens mij zit er een fout in mijn code of in de commando's waarmee ik de code wil oproepen in het slechtste geval.
Alvast bedankt.
De Legendre veeltermen :
function L = legendre(i,x)
n = length(x);
L = zeros(1,n);
if i > 1
L = (2*i-1)/i.*x.*legendre(i-1,x) - (i-1)/i.*legendre(i-2,x);
elseif i == 0
L = 1;
elseif i == 1
L = x;
end
De benadering :
function som = arctanLeg(i,x)
n = length(x);
som = zeros(1,n);
for j = 0 : i
functie = @(x) atan(x).*legendre(i,x);
som = som + (2*j+1)/2.*quad(functie,-1,1).*legendre(i,x);
end
Hoe ik alles wil oproepen :
x = linspace(-1,1,10000);
y = arctanLeg(9,x);
z = atan(x) - y;
plot(x, z, 'b', 'LineWidth', 2);
Ik zou de functie arctan(x) moeten benaderen met Legendre-veeltermen in MATLAB. We kregen het functievoorschrift gegeven, en natuurlijk het voorschrift voor de veeltermen. Ik heb volgende dingen in MATLAB gezet, maar mijn foutenkromme ziet er niet uit zoals hij er eigenlijk zou moeten uitzien. Zou iemand mij kunnen helpen ? Want volgens mij zit er een fout in mijn code of in de commando's waarmee ik de code wil oproepen in het slechtste geval.
Alvast bedankt.
De Legendre veeltermen :
function L = legendre(i,x)
n = length(x);
L = zeros(1,n);
if i > 1
L = (2*i-1)/i.*x.*legendre(i-1,x) - (i-1)/i.*legendre(i-2,x);
elseif i == 0
L = 1;
elseif i == 1
L = x;
end
De benadering :
function som = arctanLeg(i,x)
n = length(x);
som = zeros(1,n);
for j = 0 : i
functie = @(x) atan(x).*legendre(i,x);
som = som + (2*j+1)/2.*quad(functie,-1,1).*legendre(i,x);
end
Hoe ik alles wil oproepen :
x = linspace(-1,1,10000);
y = arctanLeg(9,x);
z = atan(x) - y;
plot(x, z, 'b', 'LineWidth', 2);
-
- Berichten: 7.068
Re: Probleem in matlab
De volgende keer graag
Volgens mij moet die i in de loop een j zijn.
Code: Selecteer alles
-tags gebruiken.
De fout zit in dit stuk:
[code]for j = 0 : i
functie = @(x) atan(x).*legendre(i,x);
som = som + (2*j+1)/2.*quad(functie,-1,1).*legendre(i,x);
end
-
- Berichten: 96
Re: Probleem in matlab
Achja nu zie ik het. Eigenlijk heel dom dat ik daar heb over gelezen. Bedankt !
Ook bedankt voor de info ivm de code-tags, ik wist niet dat dit kon.
Ook bedankt voor de info ivm de code-tags, ik wist niet dat dit kon.