What am I doing wrong? (Trying to construct a while loop)
6 次查看(过去 30 天)
显示 更早的评论
V0=10
h_bar_SQ=0.076
E=0:0.1:10
a=0.3
Mass=1
alpha=sqrt(2.*Mass.*E/h_bar_SQ);
beta=sqrt(2.*Mass.*(V0-E)/h_bar_SQ);
F_even=beta.*cos(alpha.*a)-alpha.*sin(alpha.*a)
E=fzero(F_even)
while
E=fzero(F_even);
if
E=Nan;
break
else
a=a-0.010;
end
end
>> scriptmatlab Error: File: scriptmatlab.m Line: 10 Column: 7 Expression or statement is incomplete or incorrect.
>> scriptmatlab Error: File: scriptmatlab.m Line: 12 Column: 7 Expression or statement is incomplete or incorrect.
Line 10 is where is says while and line 12 is where it says if
回答(3 个)
Wayne King
2013-11-14
编辑:Wayne King
2013-11-14
One thing is your missing an "end"
if true
% code
endV0=10
h_bar_SQ=0.076
E=0:0.1:10
a=0.3
Mass=1
alpha=sqrt(2.*Mass.*E/h_bar_SQ);
beta=sqrt(2.*Mass.*(V0-E)/h_bar_SQ);
F_even=beta.*cos(alpha.*a)-alpha.*sin(alpha.*a)
E=fzero(F_even)
while
E=fzero(F_even);
if
E=Nan;
break
else
a=a-0.010;
end
end
end
You were missing an "end" for your initial if statement. The other thing is what kind of while statement are you trying to construct here? fzero() returns a value. What condition are you trying to test?
How about something like
while ~isnan(fzero( ))
Walter Roberson
2013-11-14
Your syntax
if
E=Nan;
break
else
a=a-0.010;
end
is not valid. "if" needs to be followed by a condition, and E=Nan; is not a condition.
0 个评论
Richard
2013-11-14
1 个评论
Walter Roberson
2013-11-14
Please use "Comment on this Answer" instead of creating new Answers.
while true
do a computation
if result of computation has some property
break
end
change something about one or more of the variables involved in the computation
end
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Performance and Memory 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!