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-2424because(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 (2)) * (x - 2) ^4)/24

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

Постройте 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'})

Вызовите 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)[x + y, because(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- 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; because(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- элемент th массива ячеек.

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

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

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

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

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