Filter löschen
Filter löschen

ある条件をクリアする​まで、演算を繰り返す​にはどうすればよいで​しょうか。

3 Ansichten (letzte 30 Tage)
m17td024
m17td024 am 7 Dez. 2018
Kommentiert: Kazuya am 14 Dez. 2018
以下のプログラミングにおいて、条件をクリアするまで演算を繰り返すようにするには、どのようにすればよいのでしょうか。
変数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

Akzeptierte Antwort

Kazuya
Kazuya am 7 Dez. 2018
Bearbeitet: Kazuya am 7 Dez. 2018
条件をクリアするまで実施する方法、ではありませんが fminbnd関数がまさに目的にあっているような気がします。f(Q) = abs(A - 0) が最小値となる Q を 15から16の間から見つけることができるかもしれません。Q の値によってAの値が変わってくるのかによってうまくいかないこともありますが。
サンプルコードがいくつかあるので参考にしてみてください。
  12 Kommentare
madhan ravi
madhan ravi am 13 Dez. 2018
+1
Kazuya
Kazuya am 14 Dez. 2018
見つかりましたか!よかったです。

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu 最適化 finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!