Matlab: for-lus 'out of bounds'
Geplaatst: do 19 apr 2012, 20:05
Ik was bezig met een differentiaalvergelijking numeriek op te lossen aan de hand van eindige differentiemethoden in Matlab. Maar ik krijg een foutmelding waarvan ik wel weet wat die betekent, maar niet hoe ik deze kan oplossen..
Mijn (sterk gereduceerd) script is de volgende (ik probeer een Dirichlet-randvoorwaarde te implementeren):
Wanneer ik deze wil runnen, krijg ik volgende foutmelding:
Attempted to access t(1202); index out of bounds because numel(t)=1201.
Error in testscript (line 24)
U(k-1, n+1) = temp1 - (temp1 - temp0)*exp(-alpha*t(k-1));
Ik heb al verschillende oplossingen gezocht zoals:
Iemand die ziet wat ik hier fout doe?
Als jullie nood hebben aan mijn volledige Matlab-script, dan post ik deze gerust (maar de fout ligt echt wel aan bovenstaand deel).
Mijn (sterk gereduceerd) script is de volgende (ik probeer een Dirichlet-randvoorwaarde te implementeren):
Code: Selecteer alles
temp1 = 100;
temp0 = 20;
alpha = 0.01;
deltat = 0.0125;
deltarho = 0.025;
t = (0:deltat:15);
rho = (0:deltarho:1);
m = (500-0)/deltat +1; %aantal knopen bij t
n = (2-0.025)/deltarho +1; %aantal knopen bij rho
U = zeros(m, n+1);
for k = 1:1:m
U(k, n+1) = temp1 - (temp1 - temp0)*exp(-alpha*t(k));
end
Attempted to access t(1202); index out of bounds because numel(t)=1201.
Error in testscript (line 24)
U(k-1, n+1) = temp1 - (temp1 - temp0)*exp(-alpha*t(k-1));
Ik heb al verschillende oplossingen gezocht zoals:
- mijn for-lus laten lopen tot m+1
- binnen binnen mijn for lus overal k vervangen door k-1
Iemand die ziet wat ik hier fout doe?
Als jullie nood hebben aan mijn volledige Matlab-script, dan post ik deze gerust (maar de fout ligt echt wel aan bovenstaand deel).