Оцените строку, представляющую символьное выражение
Оцените строку 'sin(pi)'
. str2sym
возвращает ожидаемый результат.
str2sym('sin(pi)')
ans = 0
str2sym
принимает =
оператор представляет уравнение, не присвоение. Кроме того, str2sym
не добавляют переменные, содержимые в строке к рабочей области.
Покажите это поведение путем оценки 'x^2 = 4'
. str2sym
функция возвращает уравнение x^2 == 4
но x
не появляется в рабочей области.
eqn = str2sym('x^2 = 4')
eqn = x^2 == 4
Найдите переменную в eqn
при помощи symvar
. Переменная var
теперь относится к x
.
var = symvar(eqn)
var = x
Присвойте значения от eqn
путем решения eqn
для var
и присвоение результата.
varVal = solve(eqn,var)
varVal = -2 2
str2sym
не заменяет значениями из рабочей области для переменных во входе. Поэтому str2sym
имеет восстанавливаемый выход. Вместо этого значения рабочей области замены при помощи subs
на выходе str2sym
.
Установите y
к 2
. Затем оцените 'y^2'
с и без subs
показать как subs
замены y
с его значением.
y = 2; withoutSubs = str2sym('y^2')
withoutSubs = y^2
withSubs = subs(str2sym('y^2'))
withSubs = 4
Когда символьные выражения хранятся как строки в файле, оценивают строки путем чтения файла и использования str2sym
.
Примите файл mySym.txt
содержит этот текст.
a = 2.431 y = a*exp(t) diff(z(t),t) = b*y*z
Выполните выражения в mySym.txt
использование str2sym
.
filename = 'mySym.txt';
filetext = fileread(filename);
filetext = splitlines(filetext);
str2sym(filetext)
ans = a == 2.431 y == a*exp(t) diff(z(t), t) == b*y*z
Выход str2sym
независимо от значений рабочей области, что означает, что выход восстанавливаем. Покажите эту воспроизводимость путем присвоения значения b
и переоценка сохраненных выражений.
b = 5; str2sym(filetext)
ans = a == 2.431 y == a*exp(t) diff(z(t), t) == b*y*z
Чтобы использовать значения рабочей области или значение от исходных уравнений, использовать subs
(решите уравнение сначала с помощью solve
), как описано в Оценивают Строку как Символьное выражение и Значения Рабочей области Замены во Вход Строки.
str2sym
выполняет функции во входе, когда функции находятся на пути. В противном случае, str2sym
возвращает символьный объект как ожидалось. Это поведение означает, что выход восстанавливаем.
Покажите это поведение путем чтения дифференциального уравнения и начального условия из файла. Решите уравнение для условия. Поскольку str2sym
не оценивает y(t)
в уравнении выход восстанавливаем.
filename = 'mySym.txt';
filetext = fileread(filename);
filetext = splitlines(filetext);
eqn = str2sym(filetext(1))
eqn = diff(y(t), t) == -y(t)
cond = str2sym(filetext(2))
cond = y(0) == 2
ySol = dsolve(eqn,cond)
ySol = 2*exp(-t)
Поскольку MATLAB® синтаксический анализатор автоматически преобразует все числа в двойную точность, обеспечьте исходную точность путем введения больших номеров и чисел высокой точности как строки. Вместо str2sym
, введите целочисленное использование sym
и использование чисел с плавающей запятой vpa
потому что sym
и vpa
быстрее.
Покажите ошибку между вводом отношения больших целых чисел непосредственно по сравнению с точным строковым представлением.
num = sym(12230984290/38490293482)
num = 5724399718238385/18014398509481984
numExact = sym('12230984290/38490293482')
numExact = 6115492145/19245146741
error = num - numExact
error = -7827162395/346689742765832461975814144
Покажите ошибку между введением номера высокой точности непосредственно по сравнению с точным строковым представлением.
num = vpa(8.023098429038490293482)
num = 8.0230984290384910195825796108693
numExact = vpa('8.023098429038490293482')
numExact = 8.023098429038490293482
error = num - numExact
error = 0.00000000000000072610057961086928844451883343504
Для получения дополнительной информации смотрите Числовой к Символьному Преобразованию. Для полных рабочих процессов смотрите Численные расчеты С Высокой точностью и Главными Факторизациями.
Начиная в R2019b, можно представлять шестнадцатеричные и двоичные значения с помощью векторов символов. Шестнадцатеричные значения запускаются с 0x
или 0X
префикс, в то время как двоичные значения запускаются с 0b
или 0B
префикс. Можно затем преобразовать шестнадцатеричные и двоичные значения в символьное использование десятичных чисел str2sym
. Для получения дополнительной информации смотрите Шестнадцатеричные и Двоичные значения.
Создайте вектор символов, который представляет шестнадцатеричное значение. Преобразуйте значение в символьное десятичное число.
H = '0x2A' D = str2sym(H)
D = 42
Создайте вектор символов, который представляет двоичное значение. Преобразуйте значение в символьное десятичное число.
B = '0b101010' D = str2sym(B)
D = 42
symstr
— Представьте символьное выражение представления в виде строкиСтрока, представляющая символьное выражение в виде вектора символов, строки или массива ячеек из символьных векторов.
str2sym
принимает =
оператор представляет уравнение, не присвоение.
str2sym
не создает переменные, содержимые во входе.
str2sym('inf')
возвращает бесконечность (Inf
).
str2sym('i')
возвращает мнимое число 1i
.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.