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
    {[x*y]}    {[x^2]}    {[y^2]}

s1 = subexpr{1}
s1 = xy
s2 = subexpr{2}
s2 = x2
s3 = subexpr{3}
s3 = y2

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

s1 = children(x^2 + x*y + y^2,1)
s1 = xy
s2 = children(x^2 + x*y + y^2,2)
s2 = x2
s3 = children(x^2 + x*y + y^2,3)
s3 = y2

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

V = [subexpr{:}]
V = (xyx2y2)

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

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

subexpr{:}
ans = x2+yx
ans = y2+1

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

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

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

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

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

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

Найдите приближение Тейлора 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-2424

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

Постройте 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 object. The axes object 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- 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)

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

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

s11 = s{1,1}
s11=1×2 cell array
    {[x]}    {[y]}

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

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

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

scol1 = children(symM,1)
scol1=2×2 cell array
    {[x  ]}    {[cos(y)    ]}
    {[x^3]}    {[exp(x*y^2)]}

[scol1{:}].'
ans = 

(xx3cos(y)exy2)

scol2 = children(symM,2)
scol2=2×2 cell array
    {[y   ]}    {[sin(x)]}
    {[-y^3]}    {[3     ]}

[scol2{:}].'
ans = 

(y-y3sin(x)3)

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

свернуть все

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

Введите матрицу в виде символьной матрицы.

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

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

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

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

развернуть все

Поведение изменяется в R2020b

Представленный в R2012a