開心生活站

位置:首頁 > IT科技 > 

matlab怎麼對函數求導

IT科技3.07W

t=0:0.02:0.18 y=[415.7 415.68 415.65 415.55 415.38 415.2 415.07 414.96 414.85 414.5 ] n=5 p=polyfit(t,y,n)%5次多項式 dp=polyder(p)%導函數 tt=linspace(-.05,0.2); plot(t,y,'ro');hold on a=plotyy(tt,polyval(p,tt),tt,polyval(dp,tt)

在分析函數的時候,往往需要求解函數的導數,用matlab其實是可以求解導數的,本文以arctan的求導爲例。

材料/工具

matlab軟件

用matlab對函數求導及其極值 ,可以先用diff()函數求出y',然後令y'=0,用vpasolve()解出x值。實現代碼如下: syms x z=exp(4.1399-0.0235*x); y=0.000157*z*(1-z)*(1+z)^3/((1+z)^4+0.00004476*z^2)^(3/2); dy=diff(y,1) x=vpasolve(dy==0)

方法

打開matlab軟件;

首先,求導屬於符號運算,對於一般的數值型的變量是不能進行求導的。 其次,用@ 定義的匿名函數只是一個函數句柄,必需對其進行調用才能真正使得函數生效。 其實,也並非用@ 定義的函數就不能求導,重要的是滿足上面的兩點:要調用函數,而且得

matlab怎麼對函數求導

輸入一下指令,清空工作空間;

本來不想說的。 你的前幾個數據的y是相同的,也就是說是它們的數值導數肯定爲零。但不意味着這些點都是極值點,這些絕對是你的數據精度的問題。 解析式比數值的優勢,我覺得就是“精度”,解析式能求出任何一點的值,而數值只是有限的幾個點是己知

clear;

matlab求導命令diff調用格式: diff(函數) , 求的一階導數; diff(函數, n) , 求的n階導數(n是具體整數); diff(函數,變量名), 求對的偏導數; diff(函數, 變量名,n) ,求對的n階偏導數;

clc;

matlab怎麼對函數求導 第2張

輸入一下指令定義一個符號變量,如圖所示;

matlab的求導命令與求導法 建立符號變量命令sym和syms調用格式: x=sym('x'), 建立符號變量x; syms x y z , 建立多個符號變量x,y,z; matlab求導命令diff調用格式: diff(函數) , 求的一階導數; diff(函數, n) , 求的n階導數(n是具體整數

sysm x;

MATLAB中,diff函數用於求一階導數 例如y=x^2+3*x 求在x=2下的一階導數值 程序爲:x = 2;subs(diff(y,x)); 具體到題主的問題,程序爲 syms t m=0.650; b=0.97; g=9.79; h=7.86; y=h+(g-0.2233)*(1-exp(-b*t))/b^2-(g-0.2233)*t/b; T=0:0.1:1.5;

matlab怎麼對函數求導 第3張

輸入一下指令,定義一個函數;

dy=diff(y);plot(x(2:end),dy,'b');xlim([0,86]);

f1=atan(x);

diff(f,v,n) %對符號函數f以v爲自變量求n階導,返回的是符號函數(表達式)。 代碼案例: y1 = 'log((2*tan(x)+1)/(tan(x)+2))' %log在matlab中求自然對數 y11=diff(y1) %求導 simple(y11) %化簡 y2 = 'sin(e^(x^2+3*x-2))' y21=diff(y2) simple

matlab怎麼對函數求導 第4張

輸入一下指令求解導函數的符號解;

diff(f,v,n) %對符號函數f以v爲自變量求n階導,返回的是符號函數(表達式)。 代碼案例: y1 = 'log((2*tan(x)+1)/(tan(x)+2))' %log在matlab中求自然對數 y11=diff(y1) %求導 simple(y11) %化簡 y2 = 'sin(e^(x^2+3*x-2))' y21=diff(y2) simple

df1=diff(f1,x);

在matlab中,可以利用diff函數對隱函數求導。其調用格式如下: diff(函數) % 求一階導數;diff(函數, n) % 求n階導數(n是具體整數);diff(函數,變量名) % 求偏導數;diff(函數, 變量名,n) % 求n階偏導數; 下面通過示例來說明diff函數對隱函

matlab怎麼對函數求導 第5張

輸入一下指令查看求導的結果,如圖所示;

你好! 我依照你舉得例子,簡單編寫了一個程序,爲了清晰起見,語句寫得比較簡單,你看看: syms x1 x2 x3 f = x1^2+x2^2+x3^2; fx1 = diff(f,x1); fx2 = diff(f,x2); fx3 = diff(f,x3); x11 = input('請輸入整數x1:'); x22 = input('請輸入整

subplot(1,2,1);

可通過syms將函數句柄轉換爲符號函數用diff求導後再通過matlabFunction轉換爲函數句柄 clc;clearf = @(x) x.^2 + 2.* x + 1 % 通過函數句柄建立匿名函數syms x % 通過符號變量將匿名函數轉換爲符號函數y = f(x)g = matlabFunction(diff(y)) % 通

ezplot(f1),grid on;

你寫個函數就行了。F求導看都能看出來,用啥diff,求導後函數爲: f=exp(x)+3*x^2; 你可以寫個函數 function f=fdiff(x) f=exp(x)+3*x^2; 然後在寫你的循環: for i=1:50 f(i)=feval(fdiff,i); end 即可。

subplot(1,2,2);

>> sol=dsolve('DI=I*(100-I)') sol = 0 100 -100/(exp(C3 - 100*t) - 1) >> I=str2func(['@(t,C3)',vectorize(char(sol(3)))]) I = @(t,C3)-100./(exp(C3-100.*t)-1) >> C3=1;t=-0:0.01:0.5; plot(t,I(t,C3)) 應該有初值,有初值就簡單了,我假

ezplot(df1),grid on;

例如: 如果e是自然對數的底,那麼 syms x y; y=(exp(x)-exp(-x))/(exp(x)+exp(-x)); diff(y) ans = 1-(exp(x)-exp(-x))^2/(exp(x)+exp(-x))^2 如果e是某常量,那麼 syms x y e; y =(e^x-e^(-x))/(e^x+e^(-x)); diff(y) ans = (e^x*log(e)+e^(-x

matlab怎麼對函數求導 第6張

查看求導結果如下

可以用syms命令先令未知量爲符號變量。然後對符號式子diff求導 再用subs命令將符號未知量代爲數值,進式子裏。 具體用法參見 help syms help subs 爲什麼非要把求導的東西放在函數裏調用呢。試試能不能把求導放在主函數裏。

matlab怎麼對函數求導 第7張

擴展閱讀,以下內容您可能還感興趣。

matlab語言怎樣表示x的導數

diff(f,v,n) %對符號函數f以v爲自變量求n階導,返回的是符號函數(表達式)。

代碼案例:

y1 = 'log((2*tan(x)+1)/(tan(x)+2))' %log在matlab中求自然對數

y11=diff(y1) %求導

simple(y11) %化簡

y2 = 'sin(e^(x^2+3*x-2))'

y21=diff(y2)

simple(y21)。

如何用matlab對隱函數求導

在matlab中,可以利用diff函數對隱函數求導。其調用格式如下:

diff(函數)    % 求一階導數;

diff(函數, n)   % 求n階導數(n是具體整數);

diff(函數,變量名)   % 求偏導數;

diff(函數, 變量名,n)    % 求n階偏導數;

下面通過示例來說明diff函數對隱函數求導的方法。

題目:隱函數y^3 - x^3 - 1 = 0的導數。

syms x y  % 定義變量

F = y^3 - x^3 - 1  % 隱函數  F = y^3 - x^3 - 1 = 0

dy1 = - diff(F,x)/diff(F,y)  %  一階導數

dy2 = diff(dy1,x) + diff(dy1,y)*dy1;  %  二階導數

dy2 = simplify(dy2);

計算結果:

dy1 = x^2/y^2

dy2 = -2*x*(-y^3+x^3)/y^5

matlab中,一個函數有多個自變量,怎麼分別求導並代入具體數值,舉個例子f=x1+x2+x3,分

你好!

我依照你舉得例子,簡單編寫了一個程序,爲了清晰起見,語句寫得比較簡單,你看看:

syms x1 x2 x3

f = x1^2+x2^2+x3^2;

fx1 = diff(f,x1);

fx2 = diff(f,x2);

fx3 = diff(f,x3);

x11 = input('請輸入整數x1:');

x22 = input('請輸入整數x2:');

x33 = input('請輸入整數x3:');

subs(fx1,x1,x11)

subs(fx2,x2,x22)

subs(fx3,x3,x33)

輸出的subs就是賦值之後的每一個偏導的結果,你可以試着運行一下。

diff默認對x求導,如果有好幾個x,則默認對x1求導,默認求一介導。

祝好~更多追問追答追問可是我有7個變量,這樣寫程序是不是太長了,老師說可以簡化,能不能用循環或者向量簡化追答我覺得是可以的,不過我自己沒法嘗試,你可以試試~追問多謝

matlab 用句柄傳入的函數如何應用diff函數對其求導數?或者有無替代方法把一個函數傳進來並且求導。

可通過syms將函數句柄轉換爲符號函數

用diff求導後

再通過matlabFunction轉換爲函數句柄    

clc;clear

f = @(x) x.^2 + 2.* x + 1    % 通過函數句柄建立匿名函數

syms x                       % 通過符號變量將匿名函數轉換爲符號函數

y = f(x)

g = matlabFunction(diff(y))  % 通過matlabFunction將符號函數轉換爲匿名函數

matlab對函數求導後的調用

你寫個函數就行了。F求導看都能看出來,用啥diff,求導後函數爲:

f=exp(x)+3*x^2;

你可以寫個函數

function f=fdiff(x)

f=exp(x)+3*x^2;

然後在寫你的循環:

for i=1:50

f(i)=feval(fdiff,i);

end

即可。

標籤:函數 matlab 求導