mapSymType

Примените функцию к символьным подобъектам определенного типа

Описание

пример

X = mapSymType(symObj,type,func) применяет функциональный func к символьным подобъектам типа type в символьном объекте symObj. Вход type должен быть чувствительный к регистру строковый скаляр или вектор символов, и он может включать логическое выражение.

  • func должен быть указатель на функцию или символьная функция типа 'symfun'.

  • func должен возвратить скаляр, который может быть преобразован в символьный объект с помощью sym или str2sym функция.

Если symObj содержит несколько подвыражений типа type, затем mapSymType применяет функциональный func к самому большому подвыражению.

пример

X = mapSymType(symObj,funType,vars,func) применяет функциональный func к неприсвоенным символьным функциям, которые зависят от переменных vars в символьном объекте symObj.

Можно установить функциональный тип funType к 'symfunOf' или 'symfunDependingOn'. Например, syms f(x); mapSymType(f,'symfunOf',x,@(u)cos(u)) возвращает cos(f(x)).

Примеры

свернуть все

Создайте символьное выражение, которое содержит символьные числа с помощью sym.

expr = sym('2') + 1i*pi
expr = 2+πi

Создайте указатель на функцию, который вычисляет квадрат номера.

sq = @(y) y^2;

Примените функциональный sq к символьному подобъекту типа 'integer' в выражении expr.

X = mapSymType(expr,'integer',sq)
X = 4+πi

Можно также применить существующую функцию MATLAB®, такую как exp. Примените exp функционируйте к символьному подобъекту типа 'complex' в выражении expr.

X = mapSymType(expr,'complex',@exp)
X = πei+2

Примените символьную функцию к определенным подобъектам в символьном уравнении.

Создайте символьное уравнение.

syms x t
eq = 0.5*x + sin(x) == t/4
eq = 

x2+sin(x)=t4

Создайте символьную функцию, которая умножает вход на 2.

syms f(u)
f(u) = 2*u;

Примените символьную функцию f к символьным подобъектам типа 'variable' в уравнении eq.

X = mapSymType(eq,'variable',f)
X = 

x+sin(2x)=t2

Символьные переменные x и t в уравнении умножаются на 2.

Можно также применить ту же символьную функцию, которая создается с помощью symfun.

X = mapSymType(eq,'variable',symfun(2*u,u))
X = 

x+sin(2x)=t2

Теперь создайте неприсвоенную символьную функцию. Примените неприсвоенную функцию к символьным подобъектам типа 'sin' в уравнении eq.

syms g(u)
X = mapSymType(eq,'sin',g)
X = 

x2+g(sin(x))=t4

Преобразуйте самое большое символьное подвыражение определенного типа в выражении.

Создайте символьное выражение.

syms f(x) y
expr = sin(x) + f(x) - 2*y
expr = f(x)-2y+sin(x)

Примените log функционируйте к символьному подобъекту типа 'expression' в выражении expr.

X = mapSymType(expr,'expression',@log)
X = log(f(x)-2y+sin(x))

Когда существует несколько подвыражений типа 'expression', mapSymType применяет log функционируйте к самому большому подвыражению.

Преобразуйте неприсвоенные символьные функции с определенными переменными зависимостями в выражении.

Создайте символьное выражение.

syms f(x) g(t) h(x,t) 
expr = f(x) + 2*g(t) + h(x,t)*sin(x)
expr = 2g(t)+f(x)+sin(x)h(x,t)

Создайте указатель на функцию, который преобразует вход в символьную переменную с именем 'z'.

func = @(obj) sym('z');

Примените функцию преобразования func к неприсвоенным символьным функциям в выражении expr.

Преобразуйте функции, которые зависят от точной последовательности переменных [x t] использование 'symfunOf'.

X = mapSymType(expr,'symfunOf',[x t],func)
X = 2g(t)+f(x)+zsin(x)

Преобразуйте функции, которые имеют зависимость от переменной t использование 'symfunDependingOn'.

X = mapSymType(expr,'symfunDependingOn',x,func)
X = z+2g(t)+zsin(x)

Удалите переменную зависимость неприсвоенных символьных функций в символьном массиве.

Создайте символьный массив, состоящий из нескольких уравнений.

syms f1(t) f2(t) g1(t) g2(t)
eq = [f1(t) + f2(t) == 0, f1(t) == 2*g1(t), g1(t) == diff(g2(t))]
eq = 

(f1(t)+f2(t)=0f1(t)=2g1(t)g1(t)=t g2(t))

Примените symFunType функционируйте, чтобы заменить неприсвоенную символьную функцию на переменную того же имени.

Ищите все функции, которые имеют зависимость от переменной t использование 'symfunOf' и преобразуйте их использующий symFunType.

X = mapSymType(eq,'symfunOf',t,@symFunType)
X = (f1+f2=0f1=2g1g1=0)

Создайте символьное выражение. Найдите его обратное Преобразование Лапласа.

syms s;
G = (s+10)/(s^2+2*s+4)/(s^2-4*s+1);
expr = ilaplace(G)
expr = 

19e-tcos(3t)+3sin(3t)1939-19e2tcosh(3t)-183sinh(3t)1939

Результат в терминах exp, sinпотому чтоsinh, и cosh функции.

Перепишите sinh и cosh в результате как exp. Используйте mapSymType применять rewrite функционируйте к подвыражениям, которые содержат sinh или cosh.

expr = mapSymType(expr,"sinh|cosh",@(subexpr) rewrite(subexpr,"exp"))
expr = 

19e-tcos(3t)+3sin(3t)1939-19e2te3t2+e-3t2-183e3t2-e-3t21939

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

свернуть все

Символьные объекты в виде символьных выражений, символьные функции, символьные переменные, символьные числа или символьные модули.

Символьные типы в виде чувствительной к регистру скалярной строки или вектора символов. Вход type может содержать логическое выражение. Опции значения следуют.

Символьная категория типаПредставьте значения в виде строки
числа
  • 'integer' — целые числа

  • 'rational' — рациональные числа

  • 'vpareal' — переменная точность вещественные числа с плавающей точкой

  • 'complex' Комплексные числа

  • 'real' — вещественные числа, включая 'integer', 'rational', и 'vpareal'

  • 'number' — числа, включая 'integer', 'rational', 'vpareal'комплекс, и 'real'

константы'constant' — символьные математические константы, включая 'number'
символьные математические функции'vpa', 'sin'exp, и так далее — символьные математические функции в символьных выражениях
неприсвоенные символьные функции
  • 'F'G, и так далее — имя функции неприсвоенной символьной функции

  • 'symfun' — неприсвоенные символьные функции

арифметические операторы
  • 'plus' — оператор сложения + и оператор вычитания -

  • 'times' — оператор умножения * и оператор деления /

  • 'power' — степень или оператор возведения в степень ^ и оператор квадратного корня sqrt

переменные'variable' — символьные переменные
модули'unit' — символьные модули
выражения'expression' — символьные выражения, включая все предыдущие символьные типы
логические выражения
  • 'or' — логическая операция ИЛИ |

  • 'and' — логическая операция И &

  • 'not' — логический НЕ оператор ~

  • 'xor' — логический оператор исключающего ИЛИ xor

  • 'logicalconstant' — символьные логические константы symtrue и symfalse

  • 'logicalexpression' — логические выражения, включая 'or', 'and', 'not'xor, symtrue и symfalse

уравнения и неравенства
  • 'eq' — оператор равенства ==

  • 'ne' — оператор неравенства ~=

  • 'lt' — меньше оператор < или больше - чем оператор >

  • 'le' — меньше, чем или равный оператору <= или больше, чем или равный оператору >=

  • 'equation' — символьные уравнения и неравенства, включая 'eq', 'ne'&lt, и 'le'

неподдерживаемые символьные типы

'unsupported' — неподдерживаемые символьные типы

Функция ввода в виде указателя на функцию или символьной функции. Для получения дополнительной информации об указателях на функцию и символьной функции, см. Создание указателя на функцию и symfun, соответственно.

Если symObj содержит несколько подвыражений типа type, затем mapSymType применяет функциональный func к самому большому подвыражению (самый верхний узел соответствия в древовидной структуре данных).

Функциональный тип в виде 'symfunOf' или 'symfunDependingOn'.

  • 'symfunOf' применяет func к неприсвоенным символьным функциям, которые зависят от точной последовательности переменных, заданных массивом vars. Например, syms f(x,y); mapSymType(f,'symfunOf',[x y],@(g)g^2) возвращает f(x,y)^2.

  • 'symfunDependingOn' применяет func к неприсвоенным символьным функциям, которые имеют зависимость от переменных, заданных массивом vars. Например, syms f(x,y); mapSymType(f,'symfunDependingOn',x,@(g)g/2) возвращает f(x,y)/2.

Входные переменные в виде символьных переменных или символьного массива.

Смотрите также

| | | | | | | |

Введенный в R2019a