exponenta event banner

дети

Вложенные выражения или термины символического выражения

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

Описание

пример

subexpr = children(expr) возвращает массив nonnested cell, содержащий дочерние подчиненные выражения символьного выражения 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(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'})

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около-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около-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-й столбец массива nonnested cell.

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

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

В R2020b изменилось поведение

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