2013-11-17 4 views
3

У меня проблема с символическими функциями. Я создаю функцию своего собственного, первым аргументом которого является строка. Тогда я уверен, преобразование этой строки в символической функции:Оценка символической функции Matlab

f = syms(func) 

Допустим, моя строка sin(x). Поэтому теперь я хочу рассчитать его, используя subs.

a = subs(f, 1) 

В результате sin(1) вместо номера.

Для 0 он работает и вычисляется правильно. Что делать, чтобы получить фактический результат, а не только sin(1) или sin(2) и т. Д.?

ответ

6

Вы можете использовать также использовать eval() для оценки функции, которые вы получаете от subs() функции

f=sin(x); 
a=eval(subs(f,1)); 
disp(a); 
a = 

    0.8415 
+0

Спасибо, это именно то, что я искал :) – user2141889

4
syms x 
f = sin(x) ; 

затем, если вы хотите, чтобы присвоить значение x, например, pi/2 вы можете сделать следующее:

subs(f,x,pi/2) 
ans = 

1 
1

Вы можете эффективно оценить функции с помощью matlabFunction. syms s t x = [2 - 5 * t - 2 * s, 9 * s + 12 * t - 5, 7 * s + 2 * t - 1]; x = matlabFunction (x); , то вы можете ввести х в окне командной строки и убедитесь, что появляется следующее:

х

х =

@(s,t)[s.*-2.0-t.*5.0+2.0,s.*9.0+t.*1.2e1-5.0,s.*7.0+t.*2.0-1.0] 

вы можете видеть, что функция теперь определяется s и t. Вы можете вызвать эту функцию, записав x (1,2), где s = 1 и t = 1. Он должен генерировать ценность для вас.

Вот некоторые вещи, которые следует учитывать: я не знаю, что является более точным между этим методом и subs. Точность различных методов может варьироваться. Я не знаю, что будет работать быстрее, если вы пытаетесь создать огромные матрицы. Если вы не делаете серьезных исследований или кодирования для скорости, эти вещи, вероятно, не имеют значения.

Смежные вопросы