children

Подэкспрессии или условия символьного выражения

Начиная с R2020b, синтаксис subexpr = children(expr) для скалярного входного expr возвращает subexpr как неотключенный массив ячеек вместо вектора. Можно использовать subexpr = children(expr,ind) для индекса в возвращенный массив ячеек подэкспрессий. Для получения дополнительной информации см. раздел Вопросов совместимости.

Описание

пример

subexpr = children(expr) возвращает неотключенный массив ячеек, содержащий дочерние подэкспрессии символьного выражения expr. Для примера дочерние подэкспрессии суммы являются его терминами.

пример

subexpr = children(A) возвращает вложенный массив ячеек, содержащий дочерние подэкспрессии каждого выражения в символьной матрице A.

пример

subexpr = children(___,ind) возвращает дочерние подэкспрессии символьного выражения expr или символьную матрицу A как массив ячеек, индексируемый ind.

Примеры

свернуть все

Найдите дочерние подэкспрессии символьного выражения x2+xy+y2. Подэкспрессии возвращаются в неотключенном массиве ячеек. children использует внутренние правила сортировки при возврате подэкспрессий. Индексировать в каждый элемент массива ячеек можно при помощи subexpr{i}, где i - индекс камеры. Дочерние подэкспрессии суммы являются ее терминами.

syms x y
subexpr = children(x^2 + x*y + y^2)
subexpr=1×3 cell array
    {1x1 sym}    {1x1 sym}    {1x1 sym}

s1 = subexpr{1}
s1 = xyx*y
s2 = subexpr{2}
s2 = x2x ^ 2
s3 = subexpr{3}
s3 = y2y ^ 2

Можно также индексировать в каждый элемент подэкспрессий путем определения индекса ind в children функция.

s1 = children(x^2 + x*y + y^2,1)
s1 = xyx*y
s2 = children(x^2 + x*y + y^2,2)
s2 = x2x ^ 2
s3 = children(x^2 + x*y + y^2,3)
s3 = y2y ^ 2

Чтобы преобразовать массив ячеек подэкспрессий в вектор, можно использовать команду [subexpr{:}].

V = [subexpr{:}]
V = (xyx2y2)[x * y, x ^ 2, y ^ 2]

Найдите дочерние подэкспрессии уравнения x2+xy=y2+1. Дочерние подэкспрессии уравнения возвращаются в массиве ячеек 1 на 2. Индексируйте во все элементы массива ячеек. Подэкспрессии уравнения являются левой и правой сторонами этого уравнения.

syms x y
subexpr = children(x^2 + x*y == y^2 + 1)
subexpr=1×2 cell array
    {1x1 sym}    {1x1 sym}

subexpr{:}
ans = x2+yxx ^ 2 + y * x
ans = y2+1y ^ 2 + 1

Затем найдите дочерние подэкспрессии неравенства sin(x)<cos(x). Индексируйте во все элементы возвращенного массива ячеек. Дочерние подэкспрессии неравенства являются левой и правой сторонами этого неравенства.

subexpr = children(sin(x) < cos(x))
subexpr=1×2 cell array
    {1x1 sym}    {1x1 sym}

subexpr{:}
ans = sin(x)sin(x)
ans = cos(x)cos(x)

Найдите дочерние подэкспрессии интеграла abf(x)dx. Дочерние подэкспрессии возвращаются как массив ячеек с символьными выражениями.

syms f(x) a b
subexpr = children(int(f(x),a,b))
subexpr=1×4 cell array
    {1x1 sym}    {1x1 sym}    {1x1 sym}    {1x1 sym}

V = [subexpr{:}]
V = (f(x)xab)[f (x), x, a, b]

Найдите приближение Тейлора cos(x) функция рядом x=2.

syms x
t = taylor(cos(x),x,2)
t = 

cos(2)+sin(2)x-236-sin(2)x-25120-sin(2)x-2-cos(2)x-222+cos(2)x-2424cos (sym (2)) + (sin (sym (2)) * (x - 2) ^ 3 )/6 - (sin (sym (2)) * (x - 2) ^ 5 )/120 - sin (sym (2) * (x - 2) - (cos (sym (2)) * (x - 2) ^ 2 )/2 + (cos (sym)

Разложение Тейлора имеет шесть членов, которые разделены + или знак.

Постройте график cos(x) функция. Использование children разделить членов разложения. Покажите, что разложение Тейлора аппроксимирует функцию более близко, так как включено больше членов.

fplot(cos(x),[0 4])
hold on
s = 0;
for i = 1:6
    s = s + children(t,i);
    fplot(s,[0 4],'--')
end
legend({'cos(x)','1 term','2 terms','3 terms','4 terms','5 terms','6 terms'})

Figure contains an axes. The axes contains 7 objects of type functionline. These objects represent cos(x), 1 term, 2 terms, 3 terms, 4 terms, 5 terms, 6 terms.

Вызовите children функция для поиска дочерних подэкспрессий следующих символьных матричных входов. Результатом является 2-by- 2 вложенные массивы ячеек, содержащие дочерние подэкспрессии каждого элемента матрицы.

syms x y
symM = [x + y, sin(x)*cos(y); x^3 - y^3, exp(x*y^2) + 3]
symM = 

(x+ycos(y)sin(x)x3-y3exy2+3)[x + y, cos (y) * sin (x); x ^ 3 - y ^ 3, exp (x * y ^ 2) + 3]

s = children(symM)
s=2×2 cell array
    {1x2 cell}    {1x2 cell}
    {1x2 cell}    {1x2 cell}

Чтобы отменить вложение или получить доступ к элементам вложенного массива ячеек s, используйте скобки. Для примера, {1,1}-элемент s является 1-by- 2 массив ячеек из символьных выражений.

s11 = s{1,1}
s11=1×2 cell array
    {1x1 sym}    {1x1 sym}

Разомкните каждый элемент s использование скобок. Преобразуйте неотключенные массивы ячеек в векторы с помощью квадратных скобок.

s11vec = [s{1,1}{:}]
s11vec = (xy)[x, y]
s21vec = [s{2,1}{:}]
s21vec = (x3-y3)[x ^ 3, -y ^ 3]
s12vec = [s{1,2}{:}]
s12vec = (cos(y)sin(x))[cos (y), sin (x)]
s22vec = [s{2,2}{:}]
s22vec = (exy23)[exp (x * y ^ 2), sym (3)]

Если каждый элемент вложенного массива ячеек s содержит неотключенный массив ячеек того же размера, тогда можно также использовать ind входной параметр для доступа к элементам вложенного массива ячеек. Область индекса ind позволяет children для доступа к каждому столбцу подэкспрессий входного сигнала символьной матрицы symM.

scol1 = children(symM,1)
scol1=2×2 cell array
    {1x1 sym}    {1x1 sym}
    {1x1 sym}    {1x1 sym}

[scol1{:}].'
ans = 

(xx3cos(y)exy2)[x; x ^ 3; cos (y); exp (x * y ^ 2)]

scol2 = children(symM,2)
scol2=2×2 cell array
    {1x1 sym}    {1x1 sym}
    {1x1 sym}    {1x1 sym}

[scol2{:}].'
ans = 

(y-y3sin(x)3)[y; -y ^ 3; sin (x); sym (3)]

Входные параметры

свернуть все

Входное выражение, заданное как символьное число, переменная, функция или выражение.

Входная матрица, заданная как символьная матрица.

Индекс возвращаемых дочерних подэкспрессий, заданный как положительное целое число.

  • Если children(expr) возвращает неотключенный массив ячеек дочерних подэкспрессий, затем индексирует с children(expr,ind) возвращает ind-й элемент массива ячеек.

  • Если children(A) возвращает вложенный массив ячеек дочерних подэкспрессий, где каждый элемент камеры имеет одинаковый размер, затем индексирует с children(A,ind) возвращает ind-й столбец неотключенного массива ячеек.

Вопросы совместимости

расширить все

Поведение изменено в R2020b

Введенный в R2012a