Как мы храним некоторые конкретные коэффициенты символического выражения в matlab ver 5.3.1? - PullRequest
0 голосов
/ 22 июля 2010

Привет друзья, Я хочу выяснить следующую проблему: Предположим, у нас есть выражение вроде

syms t k A0
r1=(-1+k-3/4*k*A0^2)*sin(t)+1/4*k*A0^2*sin(3*t)+A0*sin(5*t);

мы хотим удалить коэффициенты sin(t) и решить для A0 и, наконец, поместить это значение в остальную часть выражения. Как мы можем сделать это без вырезания и вставки.

1 Ответ

0 голосов
/ 28 июля 2010

Я не знаю, какие символические возможности были доступны для MATLAB версии 5.3.1, но вы можете решить вашу проблему, используя функции COEFFS , SUBS и SOLVE из текущего Symbolic Math Toolbox :

>> eqCoeffs = coeffs(r1,sin(t));  %# Get coefficients for polynomial in sin(t)
>> b = eqCoeffs(2);               %# Second coefficient is what you want
>> bValue = 1;                    %# The value to set the coefficient equal to
>> newA0 = solve(subs('b = bValue'),A0)  %# Solve for A0

newA0 =

 -(2*3^(1/2)*(k - 2)^(1/2))/(3*k^(1/2))  %# Note there are two values since
  (2*3^(1/2)*(k - 2)^(1/2))/(3*k^(1/2))  %#   A0 is squared in the equation

>> r2 = subs(r1,A0,newA0)                %# Substitute the new A0 values into r1

r2 =

 sin(t) + (sin(3*t)*(k - 2))/3 - (2*3^(1/2)*sin(5*t)*(k - 2)^(1/2))/(3*k^(1/2))
 sin(t) + (sin(3*t)*(k - 2))/3 + (2*3^(1/2)*sin(5*t)*(k - 2)^(1/2))/(3*k^(1/2))

Обратите внимание, что коэффициенты sin(t) в двух уравнениях r2 равны 1 (значение, которое я использовалдля bValue).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...