質問: while文の条件がfalseになってもループが続いてしまいます while文の条件がfalseになってもループが続いてしまい,困っています. 添付したプログラムの22行目のwhile文において, xの値を見てみると,while文の条件(d<=0)がfalseになっても,同じwhile文内をループしているようです. 何が原因なのでしょうか?
回答: コード拝見しましたが、2点ほど気になる点があります。 1.rlがベクトルなので、xもベクトルになってしまう。結果としてdもベクトルになってしまう。 d<=0という条件でのwhileなので、おそらくdは単一の数字(スカラ)を想定されているのではないかと思います。ですが現在の仕様だと初期値ではスカラなのにwhile文が始まったらベクトルに書き換わっています。これは想定通りでしょうか? 2.whie文の中をみると常に同じ計算が繰り返されるだけで値が更新されない whileループの中を見てみますと、演算をしている部分は次の3行です。 x=p; x=x+rl; % x = p + rl d=abs(p)-abs(x); これが繰り返されることになりますので、毎度同じ結果が出ることになります。おそらくpがループの度に更新されるべきだと思うのですが、いかがでしょうか。