Решите дифференцированное уравнение по значению в Matlab

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

Чтобы получить проверку, я использую diff(eqn) для получения дифференцированного уравнения, однако я не уверен, как использовать это уравнение, чтобы затем решить для определенного значения, например. х = 2.

Вот мой код:

syms x

eqn= cos(x);

%set value for the derivative to be evaluated at
x2 = 2; 

%create function handle
f = @(x) cos(x); 

%call finite difference function
yderiv = derivative(f,x2) 

%use built-in to get differentiated function
ycheck = diff(eqn) 

С выходом:

yдерив = -0,9093

ycheck =
-sin(x)

Любая помощь в том, как решить ycheck на x2 или другой подход к использованию, будет очень признательна.

Ваше здоровье :)


person Finn LeSueur    schedule 09.08.2014    source источник
comment
subs(ycheck, x2) ? Это заменяет свободную символическую переменную (x) в ycheck значением x2   -  person Luis Mendo    schedule 09.08.2014
comment
Эй, если я отредактирую последнюю часть моего кода следующим образом: %используйте встроенную функцию для получения дифференцированной функции ycheck = diff(eqn); subs(ycheck, x, x2) Затем я получаю вывод: yderiv = -0,9093 ans =-sin(2)   -  person Finn LeSueur    schedule 10.08.2014
comment
Неважно! Если я введу eval(subs(ycheck, x, x2)) в я получу числовой ответ! Большое спасибо за Вашу помощь :)   -  person Finn LeSueur    schedule 10.08.2014


Ответы (1)


Для вычисления производной с конечными разностями вам не нужны используемые вами символьные выражения.

Тебе следует:

  1. Выберите свою дельту, например dx = 0.01
  2. Выберите диапазон, скажем, x = [0, 2*pi]. Создайте переменную для этого диапазона x = 0:dx:2*pi
  3. Оцените функцию, что-то вроде y = cos(x)
  4. Используйте функцию diff
  5. Разделите на dx.
  6. участок

Остальное (получение значения производной y при x = 2) должно быть понятно, когда вы выполните эти шаги.

person gire    schedule 09.08.2014
comment
Это не решает его проблемы, как оценить ycheck в x2. - person PetrH; 09.08.2014