首頁 > 軟體

MATLAB求解隱函數的導數和繪製隱函數的影象

2019-12-25 02:19:09

本文結合一道關於隱函數的考研真題,從「真題題目、數學概念、MATLAB程式碼、程式碼說明」四個方面,演示MATLAB求解隱函數的導數和繪製隱函數影象的方法。


1

第一,首先給出這道關於隱函數求導的真題(如下圖),這道題來自2012年考研數學二中的第9題,該題意思為求隱函數的二階導數,並計算出x=0時二階導數y''(0)等於多少。


2

第二,介紹隱函數的數學概念(如下圖),隱函數是由隱式方程所隱含定義的函數。


3

第三,下面利用MATLAB解決這道考研真題,啟動MATLAB,新建m檔案,輸入如下程式碼。

close all; clear all; clc; format compact

syms x                 % 定義符號變數x     

y = sym('y(x)');       % y是關於x的函數

F = x^2-y+1-exp(y);    % 定義真題中的隱函數

disp('隱函數的一階導數dydx為:')

dFdx = diff(F,x,1);    % 求隱函數的一階導數

[r,s] = subexpr(dFdx,'s');

dydx = solve(r,'s')

disp('___________________________________________')

disp('隱函數的二階導數dy2dx為:')

dF2dx = diff(dydx,x,1);% 求隱函數的一階導數

dy2dx = subs(dF2dx,sym('diff(y(x), x)'),dydx)

syms y

disp('___________________________________________')

disp('x=0時,隱函數二階導數值dy2dx_0為:')

x0 = 0;y0 = solve(x0^2 - y + 1 - exp(y),0);

dy2dx_0 = subs(dy2dx,x,0);

dy2dx_0 = subs(dy2dx_0,sym('y(0)'),y0)


4

第四,儲存和執行上述程式碼,在命令列視窗得到如下結果:

隱函數的一階導數dydx為:

dydx = (2*x)/(exp(y(x)) + 1)

___________________________________________

隱函數的二階導數dy2dx為:

dy2dx = 2/(exp(y(x)) + 1) - (4*x^2*exp(y(x)))/(exp(y(x)) + 1)^3

___________________________________________

x=0時,隱函數二階導數值dy2dx_0為:

dy2dx_0 = 1


5

第五,新建指令碼,輸入如下程式碼,繪製題目中隱函數的影象。

close all; clear all; clc; format compact

syms y

x = -10:0.1:10;

Y = zeros(1,length(x));

i = 1;

for X=sym(x)

        Y(i) = double(solve(X^2-y+1-exp(y),0));

        i = i+1;

end   

plot(x,Y,'r-','LineWidth',3)

legend('隱函數:x^2-y+1=e^y','Location','North')

set(gca,'FontSize',13,'TickDir','out')

xlabel('x');ylabel('y');axis equal


6

第六,儲存和執行上述程式碼,得到真題中隱函數的影象如下圖。



IT145.com E-mail:sddin#qq.com