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

2 Ansichten (letzte 30 Tage)
匠 安田
匠 安田 am 2 Sep. 2024
Kommentiert: 匠 安田 am 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)

Akzeptierte Antwort

Kojiro Saito
Kojiro Saito am 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 Kommentar
匠 安田
匠 安田 am 4 Sep. 2024
ありがとうございます。
まさに,やりたいことができました。

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu ビッグ データの処理 finden Sie in Help Center und File Exchange

Produkte


Version

R2023b

Community Treasure Hunt

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

Start Hunting!