2014-01-05 5 views
1

Я пытаюсь оценить функцию в t = 1 в Matlab. Как я могу получить ответ на следующий код?Оценить функцию в Matlab

result = dsolve('D2y-23*Dy+22*y=sin(t)','y(0)=0','Dy(0)=0'); 
disp(result); 
disp(fnval(result, 1)); 

Первый ответ: exp(22*t)/10185 + (23*cos(t))/970 - exp(t)/42 + (21*sin(t))/970.

Но когда я пытаюсь найти оценку функции в точке t = 1, прогром бросает какое-то исключение. Возможно, функция «fnval» здесь не подходит.

ответ

3

Вы можете использовать subs.

result = dsolve('D2y-23*Dy+22*y=sin(t)','y(0)=0','Dy(0)=0'); 
t = 1; 
subs(result) 

ans = 
    3.5198e+005 

Вы также можете сделать это с помощью eval, который похож на ваш первоначальный подход:

eval(result) 

после присвоения значения для t.

Вы можете оценить функцию для диапазона чисел, используя Eval вместе с vectorize:

t = -0.1:0.01:0.1; 
plot(t,eval(vectorize(result))) 

Это дает:

enter image description here

+0

Благодаря своей точности, что мне нужно! –

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