MATLAB Answers

Index in position 2 exceed array bounds

2 ビュー (過去 30 日間)
Maureen Domtche
Maureen Domtche 2019 年 4 月 11 日
コメント済み: Bob Nbob 2019 年 4 月 12 日
Here's my code and im tryna figure out why i always get "index in position 2 exceed arra bounds"
What do i have to change?
function [t, y] = Euler_implicite(fonction, J ,t0,y0, h,e, Nt)
y(1,:) = y0;
t=zeros(Nt);
t(1) = t0;
for i = 1:Nt
g= y(:,i+1)-y(:,i)- h*fonction;
t(i+1)=t(i)+h;
y = newton_systeme(g,J,SP, niteration, precision);
end
newton_systeme(g,J,y0,e,Nt);
end

  9 件のコメント

表示 6 件の古いコメント
Maureen Domtche
Maureen Domtche 2019 年 4 月 11 日
N = 100;
b = 1;
u = 0.05;r = 0.5;
nmax = 100;
precision = 1e-2;
h=0.5;
t0=0;
y0=10
sp= @(S,I) u*N-u*S-b/N*S*I;
ip = @(S,I) (b/N)*S*I-r*I-u*I;
fonction = {sp, ip};
J = {@(S,I)-u-b/N*I, @(S,I)-b/N*S;
@(S,I)(b/N)*I, @(S,I)(b/N)*S-r-u};
Adam Danz
Adam Danz 2019 年 4 月 11 日
What about Nt (and e)?
Maureen Domtche
Maureen Domtche 2019 年 4 月 11 日
Nt = 200 e = 0.05

サインインしてコメントする。

回答 (2 件)

Adam Danz
Adam Danz 2019 年 4 月 11 日
編集済み: Adam Danz 2019 年 4 月 11 日
Just before the i-loop, you set y equal to 10.
%from your code...
y0 = 10;
y(1,:) = y0; % same as y = 10
Then on the first iteration of the i-loop, i=1 so when you execute this line
g= y(:,i+1)-y(:,i)- h*fonction;
% ----------
you're trying to access the second value of y but y only has 1 value (y=10)!
Even if that didn't cause an error this section below would (also) cause an error.
g= y(:,i+1)-y(:,i)- h*fonction;
% -----------
K>> h*fonction
Undefined operator '*' for input arguments of type 'cell'.
So there's at least a couple areas of your code you need to re-think. In other words, your errors are conceptual errors. Your code isn't written properly and that's something you'll need to work on in the context of your project.
I suggest going through your code line-by-line to confirm that it's doing what it's supposed to be doing.

  3 件のコメント

Maureen Domtche
Maureen Domtche 2019 年 4 月 11 日
I tried going line by line to figure out whats wrong with my code and it turns out that the problematic line is this one "g= y(:,n+1)-y(:,n)- h*f(y(:,n),t(n+1)); " So if any of you guys have ideas on how to fix that let me know please
Adam Danz
Adam Danz 2019 年 4 月 11 日
We don't have enough information to fix it (or confirm that it's broken). It's just a bunch of letters to us.
Bob Nbob
Bob Nbob 2019 年 4 月 12 日
What you need to do to fix your code is to figure out how to get more than one element in y. As has been mentioned already the calculation of g is looking for two elements of y when only one exists. We are not particularly able to help you fix this particular problem because it is a very contextual solution, not something to do with the code. All we can tell you is that this is why the code isn't working.

サインインしてコメントする。


jahanzaib ahmad
jahanzaib ahmad 2019 年 4 月 11 日
there is nothing in y(:,i+1)

  2 件のコメント

jahanzaib ahmad
jahanzaib ahmad 2019 年 4 月 11 日
u want to minus before and after values but when u reach last value it gives error .
for for i = 1:Nt -1
the last value will not change .
Maureen Domtche
Maureen Domtche 2019 年 4 月 11 日
i tried it didn't work , i get the same erroe message

サインインしてコメントする。

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by