Марчин прав. Не используйте inline
функции. Такие больше не используются. Если вы хотите выделиться с помощью Symbolic Math Toolbox, используйте sym
для создания функции для вас, затем используйте это, чтобы отличить его.
Таким образом, сделайте что-то вроде этого, предполагая, что x
является независимой переменной:
syms x;
fprintf('Newton Raphson\n');
Fun=input('\nType a function \n');
xi=input('\nType initial value\n');
out = sym(Fun);
def = diff(out);
dxi = subs(def, 'x', xi);
Обратите внимание: поскольку формула является символической, если вы хотите заменить x
определенным значением, вам нужно будет использовать subs
. С помощью subs
мы заменяем x
нашим исходным значением, хранящимся в xi
.
Давайте сделаем прогонный пример. Вот что я получаю, когда запускаю этот код с моими входными и выходными данными:
Newton Raphson
Type a function
x^2 + x + 3
Type initial value
4
out
будет функцией, которая была введена в:
out =
x^2 + x + 3
xi
будет начальным значением:
xi =
4
Производная функции хранится в def
:
def =
2*x + 1
Наконец, подстановка нашего начального значения в нашу производную сохраняется в dxi
и, таким образом, дает:
dxi =
9
Удачи!
person
rayryeng
schedule
01.12.2014