2009-11-29 2 views
8
syms t;   % Define symbolic var x. 
y = int(t^2); % Calculate integral of x; it should be t^3/3. 
x = [1:10] 

Теперь я хочу рассчитать y (x), это должно быть [1/3, 8/3, .., 1000/3].Оценка символического выражения

+2

Если вы находите интеграл от t^2, вы бы не получили t^3/3, а не 2t. 2t была бы производной от t^2 – rzrgenesys187

+1

да, конечно. скажем, я спешил :) – Fantomas

ответ

17

Короткий ответ: используйте subs. Длинный ответ:

>> syms t; 
>> y = int(t^2) % note: as rzrgenesys187 says, this is t^3/3 

y = 

t^3/3 

>> x = 1:10; % same as x = [1:1:10]    
>> subs(y, 't', x) 

ans = 

    Columns 1 through 7 

    0.3333 2.6667 9.0000 21.3333 41.6667 72.0000 114.3333 

    Columns 8 through 10 

    170.6667 243.0000 333.3333 

Если вы хотите, чтобы выражение y(x) ведут себя как вызов функции, вы можете связать переменную 'у', используя анонимную функцию:

>> y = int(t^2);   
>> y = @(t) subs(y, 't', t); % the 't^3/3' value of y gets bound into the anonymous function 
>> y(x) 

ans = 

    Columns 1 through 7 

    0.3333 2.6667 9.0000 21.3333 41.6667 72.0000 114.3333 

    Columns 8 through 10 

    170.6667 243.0000 333.3333 

>> y(2) 

ans = 

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