2017-02-12 11 views
-1

Я новичок в Matlab и хочу рассчитать что-то вроде f (x)/f '(x). Я хочу, чтобы пользователь вводил функцию f (x), параметр x и значение x (предположим, что 5, так что я могу оценить f (5)/f '(5)). Представьте, что я должен делать.Ввод математической функции и ее дифференциация в matlab

+0

У вас есть символический набор инструментов? Существует два разных подхода в зависимости от того, используете ли вы его. –

+0

Обязательно сообщите мне, если ответ, который я вам предоставил, работает для вас. – nikaltipar

+0

@ Ben Voigt: Я обыскал и нашел метод ввода функции, ее параметра и значения, но НЕ дифференцирования. Тем не менее, я был бы благодарен, что вы могли бы рассказать мне об этих двух подходах. –

ответ

0

Один подход заключается в использовании символических переменных

function [ val ] = func(fun, num) 
    symfun = sym(fun); 
    dsymfun = diff(symfun); 
    y = symfun/dsymfun; 
    val = subs(y, num); 
end 

, а затем вызвать его

например

value = func('x^2', 5) 

value = 

5/2 

В противном случае, вы можете указать свой вклад в виде символьной переменной:

function [ val ] = func(fun, num) 
    dfun = diff(fun); 
    y = fun/dfun; 
    val = subs(y, num); 
end 

, а затем написать

syms x; 
func(x^2, 5) 
+0

Спасибо @ nikaltipar Программа верна. Но мне нужно ввести функцию f, а также параметр. –

+0

Я обновил свой ответ, проверьте его. – nikaltipar

0

Вы можете сделать это с помощью polyder и polyval следующим образом:

f = input('Enter f(x): '); %e.g; Enter [1 3 4] if f(x)= x^2 + 3*x + 4 
df = polyder(f);   %f'(x) 
x= input('Enter x: '); %Enter the value of 'x' e.g 5 
fx_dfx= polyval(f,x)/ polyval(df,x) %f(x)/f'(x) 

Если у вас есть Символическое Math Toolbox, вы также можете сделать это с помощью:

syms x;      %Creating a symbolic variable x 
f = input('Enter f(x): '); %Enter f(x) e.g: x^2 + 3*x + 4 
f(x)= f;      %Converting sym to symfun 
df(x) = diff(f)    %f'(x) 
x_val= input('Enter x: '); %Enter the value of 'x' e.g 5 
fx_dfx = double(f(x_val)/df(x_val)) %f(x)/f'(x)