Оцените строку, представляющую символьное выражение
Оцените строку '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. Для получения дополнительной информации смотрите Шестнадцатеричные и Двоичные значения (MATLAB).
Создайте вектор символов, который представляет шестнадцатеричное значение. Преобразуйте значение в символьное десятичное число.
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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.