invalid index in program
信息
此问题已关闭。 请重新打开它进行编辑或回答。
显示 更早的评论
p=8/3;
r=25;
sigma=10;
npoints =5000;
dt = 0.1;
a = zeros(npoints,1);
b = zeros(npoints,1);
c= zeros(npoints,1);
t = zeros(npoints,1);
//t=1:dt:100;
a(1)=1;
b(1)=1;
c(1)=1;
suma=0;
sumb=0;
sumc=0;
sumS=0;
sumZ=0;
for i = 1:npoints-1
sumS=sumS+a(i)*c(i-npoints);
sumZ=sumZ+a(i)*b(i-npoints);
a(i+1)=((sigma)/(i+1))*(b(i)-a(i));
b(i+1)=(1/(i+1))*(r*a(i)-b(i)-sumS);
c(i+1)=(1/(i+1))*(sumZ-p*c(i));
suma=suma+a(i).*(t^i);
sumb=sumb+b(i).*(t^i);
sumc=sumc+c(i).*(t^i);
t(i+1) = t(i) + dt;
end;
plot(t,suma)
pl revise the program
20 个评论
Jan
2022-2-24
Please post the complete error message or explain the difference between the results and your expectations. It is easier to fix a problem than to guess, what the problem is.
Rik
2022-2-24
My first revision would be to remove the //. That is not a valid Matlab syntax. This isn't your first question. You know how this works.
shiv gaur
2022-2-24
shiv gaur
2022-2-24
Jan
2022-2-24
@shiv gaur: Again: Please explain as accurate as possible what the problem with your code is. You see, that the "//" is not accepted by Matlab, so simply remove it.
The explanation, that the code should show the Lorenz attractor does not help to understand, what your problem is.
shiv gaur
2022-2-24
"revise program" is a very lean command. You do not want to spend the time for explaining, which problem you have. This will not encourage others to spend time to help you.
shiv gaur
2022-2-24
Jan
2022-2-24
"the result of lorenz by ode is not matching by power series my program of power series lorenz" -
Your code does not run due to the programming error, so how can the results differ?
Rik
2022-2-24
I understand that there may be a language barrier, but I can't imagine that in your native language 'revise program' would be considered a polite request. You're asking strangers to do you a favor. Right now it looks like you're not prepared to put in any effort explaining your question. Lucky for you that Walter and Jan are kinder than I am.
Please read the link that Jan provided. Please use interpunction and line breaks. Remember that it is easy for people to ignore your post. If you make your problem clear, you will increase the chances that someone will enjoy your question as a puzzle. The puzzle should not be understanding your question, but rather how to solve it.
You have accepted 3 answers out of the many your received. You should consider how you can make your questions different so you actually get answers that solve enough of your questions to be accepted.
shiv gaur
2022-2-24
Jan
2022-2-24
@shiv gaur: The code you have posted does not run:
b(step+1)=b(step)+(-x(step)*c(step)+r*a(step)-b(step))*dt;
% ^ x is undefined
There is no chance to guess, what your problem is. You do not mention, what your problem is. Your code does not run and in consequence it does not show, what your problem is.
So how can we help you?
- Post running code.
- Use left button of the toolbar's "Code" section to format the code to improve the readbility.
- Explain in clear word, what the problem is.
shiv gaur
2022-2-24
@shiv gaur: Seriously?! Both code block are still not running:
c(step+1)=c(step)+(a(step)*b(step)-p*z(step))*dt;
% ^ undefined variable z
and:
sumS=sumS+a(i)*c(i-npoints);
% ^^^^^^^^^ causes a negative index
Your question "why not giving match plot" is not meaningful: Both codes do not procude any plot, because they stop with errors.
You do not care about a proper formating - do you see, that I've spend the time for apply the code formatting in your contributions? You repeatedly post not running code. You ignore questions for clarifications still do not mention, what the problem is you want to solve.
This is not a fair usage of this forum.
Please confirm, that you have read and understood this: https://www.mathworks.com/matlabcentral/answers/6200-tutorial-how-to-ask-a-question-on-answers-and-get-a-fast-answer
shiv gaur
2022-2-24
回答(2 个)
Walter Roberson
2022-2-24
npoints =5000;
for i = 1:npoints-1
sumS=sumS+a(i)*c(i-npoints);
First iteration: i is 1, and a(1) is being indexed; as you initialized a(1) that is valid so far.
Then c(i-npoints) is being indexed. That is c(1-5000) which is c(-4999) which is not a valid index.
0 个评论
Jan
2022-2-24
Use the debugger to examine the cause of problems. Type this in the command window:
dbstop if error
Run the code again until it stops at the error.
A guess: c(i-npoints) cannot work, because the index is negative.
0 个评论
此问题已关闭。
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

