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+πi2 + sym (pi) * sym (1i)

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

sq = @(y) y^2;

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

X = mapSymType(expr,'integer',sq)
X = 4+πi4 + sym (pi) * sym (1i)

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

X = mapSymType(expr,'complex',@exp)
X = πei+2sym (pi) * exp (sym (1i)) + 2

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

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

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

x2+sin(x)=t4x/2 + sin (x) = = t/4

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

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

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

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

x+sin(2x)=t2x + sin (2 * x) = = t/2

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

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

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

x+sin(2x)=t2x + sin (2 * x) = = t/2

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

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

x2+g(sin(x))=t4x/2 + g (sin (x)) = = t/4

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

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

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

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

X = mapSymType(expr,'expression',@log)
X = log(f(x)-2y+sin(x))журнал (f (x) - 2 * y + 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)2 * g (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)2 * g (t) + f (x) + z * sin (x)

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

X = mapSymType(expr,'symfunDependingOn',x,func)
X = z+2g(t)+zsin(x)z + 2 * g (t) + z * sin (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))[f1 (t) + f2 (t) = = 0, f1 (t) = = 2 * g1 (t), g1 (t) = = diff (g2 (t), t)]

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

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

X = mapSymType(eq,'symfunOf',t,@symFunType)
X = (f1+f2=0f1=2g1g1=0)[f1 + f2 == 0, f1 == 2*g1, g1 == 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(19 * exp ((-t)) * (cos (sqrt (sym (3)) * t) + (sqrt (sym (3)) * sin (sqrt (sym (3)) * t )/19 )/39 - (19 * exp ((2 * t)) * (cosh (sqrt (sym (3)) * t

Результат с точки зрения exp, sin, cos, 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(19 * exp ((-t)) * (cos (sqrt (sym (3)) * t) + (sqrt (sym (3)) * sin (sqrt (sym (3)) * t )/19 )/39 - (19 * exp ((2 * t)) * (exp (sqrt (sym (3)) * t

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

свернуть все

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

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

Категория символического типаСтроковые значения
числа
  • 'integer' - целочисленные числа

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

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

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

  • 'real' - действительные числа, включая 'integer', 'rational', и 'vpareal'

  • 'number' - номера, включая 'integer', 'rational', 'vpareal', 'complex', и 'real'

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

  • 'symfun' - неназначенные символические функции

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

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

  • 'power' - оператор степени или экспоненции ^ и квадратный корневой оператор sqrt

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

  • 'and' - логический оператор И &

  • 'not' - логический оператор NOT ~

  • 'xor' - логический оператор exclusive-OR 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