MATLAB Answers

Replacing function variables with a vector before taking a gradient

조회 수: 2(최근 30일)
Valeri Aronov
Valeri Aronov 2021년 7월 30일
답변: Walter Roberson 2021년 7월 31일
I have a symbolic function:
A = 1/((C1*C2*R1*R2*w^2 - 1)^2 + w^2*(C2*R1 + C2*R2)^2)^(1/2)
I would like to replace C1, C2, R1, R2 symbolic variables with an x vector where C1 = C1_0*x(1); C2 = C2_0*x(2); R1 = R1_0*x(3); R2 = R2_0*x(4); and take a gradient of A by x. Whatever I tried failed to produce the result I am seeking.
  댓글 수: 3
Valeri Aronov
Valeri Aronov 2021년 7월 31일
I have found a path (I did not know about str2sym() existence):
syms x1 x2 x3 x4 real
x=[x1,x2,x3,x4]
A = subs(A, C1, str2sym('x1*C1_0'))
A = subs(A, C2, str2sym('x2*C2_0'))
...
gradient(A, x)
It may do for me even ideally I would prefer the notation in my question text for x.
Now, can some one advise if I need to remove this question entirely.

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

채택된 답변

Walter Roberson
Walter Roberson 2021년 7월 31일
syms x1 x2 x3 x4 real
syms C1_0 C2_0
x=[x1,x2,x3,x4]
A = subs(A, [C1, C2, R1, R2], [C1_0, C2_0, R1_0, R2_0] .*x)
gradient(A, x)

추가 답변(0개)

Community Treasure Hunt

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

Start Hunting!

Translated by