6 函式的零點5。2 一元函式的零點5。2 任意一元函式零點的精確解【 * 例 5。2-1 】通過求 的零點,綜合敘述相關指令的用法。...
5.6 函式的零點
5.6.2 一元函式的零點
5.6.2.2 任意一元函式零點的精確解
【 * 例 5.6.2 .2-1 】通過求
(1)構造乙個內聯函式物件
被解函式
y=inline('sin(t)^2*exp(-a*t)-b*abs(t)','t','a','b'); %<1>
(2)作圖法觀察函式零點分布
a=0.1;b=0.5;t=-10:0.01:10; % 對自變數取樣,取樣步
y_char=vectorize(y); % 為避免迴圈,把 y 改寫成適合陣列運算形式。 <4>
y=feval(y_char,t,a,b); % 在取樣點上計算函式值。
clf,plot(t,y,'r');hold on,plot(t,zeros(size(t)),'k'); % 畫座標橫軸
xlabel('t');ylabel('y(t)'),hold off
圖 5.6.2 .2-1 函式零點分布觀察圖
(3)利用 zoom 和 ginput 指令獲得零點的初始近似值(在 matlab 指令窗中進行)
zoom on % 在 matlab 指令窗中執行,獲區域性放大圖
[tt,yy]=ginput(5);zoom off % 在 matlab 指令窗中執行,用滑鼠獲 5 個零點猜測值。
圖 5.6.2 .2-2 區域性放大和利用滑鼠取值圖
tt % 顯示所得零點初始猜測值(該指令可在 notebook 中執行)。
tt =
-2.0032
-0.5415
-0.0072
0.5876
1.6561
(4)求靠近 tt(4) 的精確零點
[t4,y4,exitflag]=fzero(y,tt(4),,a,b) %<11>
zero found in the interval: [0.57094, 0.60418].
t4 =
0 。 5993
y4 =
0exitflag =
1(5)求在 tt(3)附近的精確零點
從理論分析可知,
[t3,y3,exitflag]=fzero(y,tt(3),,a,b)
zero found in the interval: [0.58266, -0.59706].
t3 =
-0.5198
y3 =
0exitflag =1
圖 5.6.3 -0 兩函式的三維相交圖
(2)在某區域觀察兩函式 0 等位線的交點情況
clear;
x=-2:0.5:2;y=x;[x,y]=meshgrid(x,y); % 產生 x-y 平面上網點座標
f1=sin(x-y);f2=cos(x+y);
v=[-0.2, 0, 0.2]; % 指定三個等位值,是為了更可靠地判斷 0 等位線的存在。
contour(x,y,f1,v) % 畫 f1 的三條等位線。
hold on,contour(x,y,f2,v),hold off % 畫 f2 的三條等位線。
圖 5.6.3 -1 兩個二元函式 0 等位線的交點圖
(3)從圖形獲取零點的初始近似值
在圖 5.6.3 -1 中,用 ginput 獲取兩個函式 0 等位線(即三線組中間那條線)交點的座標。
[x0,y0]=ginput(2); % 在圖上取兩個點的座標
disp([x0,y0])
-0.7926 -0.7843
0.7926 0.7843
(4)利用 fsolve 求精確解。以求( 0.7926,7843 )附近的解為例。
本例直接用字串表達被解函式。注意:在此,自變數必須寫成 x(1), x(2) 。假如寫成 xy(1), xy(2) ,指令執行將出錯。
fun='[sin(x(1)-x(2)),cos(x(1)+x(2))]'; %<12>
xy=fsolve(fun,[x0(2),y0(2)]) %<13>
xy =
0.7854 0.7854
(5)檢驗
fxy1=sin(xy(1)-xy(2));fxy2=cos(xy(1)+xy(2));disp([fxy1,fxy2])
1.0e-006 *
-0.0994 0.2019
〖說明〗指令 <12><13> 可用以下任何一組指令取代。
(a)內聯函式形式指令
fun=inline('[sin(x(1)-x(2)), cos(x(1)+x(2))]', 'x'); % 項 'x' 必須有。
xy=fsolve(fun,[x0(2), y0(2)]);
(b) m 函式檔案形式及指令
先用如下 fun.m 表示被解函式(並在搜尋路徑上)
[fun.m]
function ff=fun(x)
ff(1)=sin(x(1)-x(2));
ff(2)=cos(x(1)+x(2));
然後執行指令 xy=fsolve('fun',[x0(2),y0(2)]) 。
第四步檢驗中的結果表明:所找零點處的函式值小於
options=optimset('fsolve');
options.tolfun
ans =
1.0000e-006
MATLAB求函式零點與極值
1.roots函式 針對多項式求零點 詳見matlab多項式及多項式擬合 2.fzero函式 返回一元函式在某個區間內的的零點.x0 fzero x x.2 3 x 4,1,5 只能求區間裡面的乙個零點,並且要求在給定區間端點函式值異號,所以使用之前應該先作圖,得出單個零點分布的區間,然後使用該函式...
函式零點的求解方法
有了函式後,我們怎麼用呢?方程的分類 單個方程按其係數的性質分為線性方程和非線性方程。一元非線性方程求解 fzero roots fsolve 多元非線性方程求解 fsolve fzero fsolve 比較 解 fzero 函式,初值,options 解 fsolve 函式,初值,options ...
消失的零點
注 本人於2018 01 07 11 22 19部落格 上午9點多醒來收到一封kettle資料同步失敗的郵件,於是起來準備看下原因,報錯 為 cannot parse 1990 04 15 illegal instant due to time zone offset transition asia...