ある条件をクリアするまで、演算を繰り返すにはどうすればよいでしょうか。
3 ビュー (過去 30 日間)
古いコメントを表示
以下のプログラミングにおいて、条件をクリアするまで演算を繰り返すようにするには、どのようにすればよいのでしょうか。
変数Nを固定し、Qを15~で小数第三位で増分していき(15,15.001,15.002…)、Aがもっとも0に近似した段階のQを求めるという形にしたいのです。(方程式でQをダイレクトに求める方法(A=0の)では、式が複雑すぎて、途中でフリーズしてしまいます。)
以下のプログラミングでは、15~16でQを増分し、算出されたAのなかからもっとも0に近いものを手作業で見つけ、その時のQを採用するというやり方になり、非常に困っております。
どうぞよろしくお願い致します。
syms N Q;
N=2*pi^2;
index = 0:0.001:1;
m = length(index);
A = sym(zeros(m,1));
n = 0;
for i = 0:0.001:1;
n = n+1;
Q=15+i;
Z1=(N+2^0.5*Q/2)^0.5;
Z2=(-(-N+2^0.5*Q/2))^0.5;
Z3=(N-2^0.5*Q/2)^0.5;
Z4=(-(-N-2^0.5*Q/2))^0.5;
ah1=(Z1*sinh(Z1)-Z1^2*cosh(Z1))/(2*cosh(Z1)-2-Z1*sinh(Z1));
bh1=(Z1^2-Z1*sinh(Z1))/(2*cosh(Z1)-2-Z1*sinh(Z1));
a2=(Z2*sin(Z2)-Z2^2*cos(Z2))/(2-2*cos(Z2)-Z2*sin(Z2));
b2=(Z2^2-Z2*sin(Z2))/(2-2*cos(Z2)-Z2*sin(Z2));
ah3=(Z3*sinh(Z3)-Z3^2*cosh(Z3))/(2*cosh(Z3)-2-Z3*sinh(Z3));
bh3=(Z3^2-Z3*sinh(Z3))/(2*cosh(Z3)-2-Z3*sinh(Z3));
a4=(Z4*sin(Z4)-Z4^2*cos(Z4))/(2-2*cos(Z4)-Z4*sin(Z4));
b4=(Z4^2-Z4*sin(Z4))/(2-2*cos(Z4)-Z4*sin(Z4));
K1=2*(2+3/2)+(3/4+3*(ah1+a2+ah3+a4)/4);
K2=2*(2+3/2)+(3/4+3*(ah1+a2+ah3+a4)/4);
K3=8+3/2+(ah1+a2+ah3+a4)/2;
K4=-(ah1-a2+ah3-a4)/4;
K5=(ah1-a2-ah3+a4)/(2*2^0.5);
K6=3*(bh1-b2+bh3-b4)/4;
K7=-3/4-(bh1+b2+bh3+b4)/4;
K8=(bh1+b2-bh3-b4)/(2*2^0.5);
K9=(ah1+a2-ah3-a4)/(2*2^0.5);
K10=(bh1-b2-bh3+b4)/(2*2^0.5);
K11=(bh1-b2+bh3-b4)/2;
K=[K1 K4 K5 K6 K7 K8;K4 K2 K9 K7 K6 K10;K5 K9 K3 K8 K10 K11;...
K6 K7 K8 K1 K4 K5;K7 K6 K10 K4 K2 K9;K8 K10 K11 K5 K9 K3];
A(n) =det(K);
end
0 件のコメント
採用された回答
その他の回答 (0 件)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!