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

조회 수: 4 (최근 30일)
匠
2024년 9월 2일
댓글: 2024년 9월 4일
以下のプログラムにて,たくさんある解のうち,一つを取り出したいです。
以下のプログラムを実行したところ,エラーがでました。
どのように修正すればよいでしょうか?
%% 以下,プログラム
****************************************************************
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)

채택된 답변

Kojiro Saito
Kojiro Saito 2024년 9월 4일
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
匠
2024년 9월 4일
ありがとうございます。
まさに,やりたいことができました。

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Symbolic Math Toolbox에 대해 자세히 알아보기

제품


릴리스

R2023b

Community Treasure Hunt

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

Start Hunting!