solveのRetu​rnConditio​nによって得られた解​からの抽出

2 vues (au cours des 30 derniers jours)
匠 安田
匠 安田 le 2 Sep 2024
Commenté : 匠 安田 le 4 Sep 2024
以下のプログラムにて,たくさんある解のうち,一つを取り出したいです。
以下のプログラムを実行したところ,エラーがでました。
どのように修正すればよいでしょうか?
%% 以下,プログラム
****************************************************************
syms omega zeta zeta_0 A real positive
syms s t
G = omega^2 / (s^2 + 2*zeta*omega*s + omega^2);
y = ilaplace(G/s, s, t);
y = simplify(subs(y, (zeta^2 - 1)^(1/2), 1j*(1 -zeta^2)^(1/2)));
dydt = diff(y, t);
t0 = solve(dydt == 0, t, 'ReturnConditions', true)
t1 = subs(t0.t, k, 1);
****************************************************************
%% 以下,出力
****************************************************************
t0 =
フィールドをもつ struct:
t: (pi*k)/(omega*(1 - zeta^2)^(1/2))
parameters: k
conditions: in(k, 'integer') & zeta ~= -1 & zeta ~= 1
関数または変数 'k' が認識されません。
t1 = subs(t0.t, k, 1)

Réponse acceptée

Kojiro Saito
Kojiro Saito le 4 Sep 2024
solveのドキュメントparametersの下記の説明があります。kが認識されないのはパラメーターがワークスペース変数にないためで、下線部分の記述に該当します。
生成されたパラメーターのベクトルとして返される解のパラメーター。この出力引数は、ReturnConditionstrue の場合にのみ返されます与えられた出力引数が 1 つの場合、parameters は構造体のフィールドとして返されます。複数の出力引数が与えられた場合、parameters は最後から 2 番目の出力引数として返されます。生成されたパラメーターは MATLAB® ワークスペースに表示されません。parameters を使用してアクセスする必要があります。
1つの出力を指定した場合は、構造体t0parametersフィールドにkに該当する変数が格納されているため、subsの入力をkではなくt0.parametersにします。
syms omega zeta zeta_0 A real positive
syms s t
G = omega^2 / (s^2 + 2*zeta*omega*s + omega^2);
y = ilaplace(G/s, s, t);
y = simplify(subs(y, (zeta^2 - 1)^(1/2), 1j*(1 -zeta^2)^(1/2)));
dydt = diff(y, t);
t0 = solve(dydt == 0, t, 'ReturnConditions', true);
t1 = subs(t0.t, t0.parameters, 1)
t1 = 
または、出力を3つにしてkにパラメーターが格納されるようにしてからsubsを実行してもできます。
[t0, k, conditions] = solve(dydt == 0, t, 'ReturnConditions', true);
t1 = subs(t0, k, 1)
t1 = 
  1 commentaire
匠 安田
匠 安田 le 4 Sep 2024
ありがとうございます。
まさに,やりたいことができました。

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur ビッグ データの処理 dans Help Center et File Exchange

Produits


Version

R2023b

Community Treasure Hunt

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

Start Hunting!