2017-02-12 89 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

你可以做到這一點使用polyderpolyval如下:

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) 

如果你有符號數學工具箱,你也可以做到這一點使用:

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)