8-3 ��ƪ��D��

fzero «ü¥O¥i¥Î©ó³æÅÜ¼Æ¨ç¼Æªº¨D®Ú¡A¨ä¨Ï¥Î»yªk¦p¤U¡G

x = fzero(fun, x0)

¨ä¤¤ fun ¬O±ý¨D®Úªº¨ç¼Æ¡]¥H¦r¦êªí¥Ü¡^¡Ax0 «h¬O¤@­Ó°_©lÂI©Î°_©l°Ï¶¡¡C±z¥i¥H¥Ñ x0 «ü©w¤@­Ó°_©lÂI©Î°_©l°Ï¶¡¨Ó¶i¦æ¨D®Ú¡Afzero «ü¥O·|®Ú¾Ú x0 ªº¤£¦P¦Ó°õ¦æ¤U¦C°Ê§@¡G

¨Ò¦p¡A­Y­n§ä¥X humps ¦b x = 1.5 ªþªñªº®Ú¡A¨ÃÅçºâ¤§¡A¥i¿é¤J¦p¤U¡G

Example 1: 08-¤@¯ë¼Æ¾Ç¨ç¼Æªº³B²z»P¤ÀªR/fzero01.mx = fzero(@humps, 1.5); % ¨D¾aªñ 1.5 ªþªñªº®Ú y = humps(x); % ±a¤J¨D­È fprintf('humps(%f) = %f\n', x , y);humps(1.299550) = 0.000000

¦b¤W¦C¤¤¡Afzero ­º¥ý§ä¨ì 1.5 ªþªñÅܸ¹ªº¨âÂI¡A§Y 1.26 ¤Î 1.6697¡AµM«á¦A¾Ú¥H§ä¥X humps ªº¹sÂI¡C

­Y¤wª¾ humps ¦b x = -1 ¤Î 1 ¤§¶¡¬°²§¸¹¡A§Y humps(1)*humps(-1) < 0¡A «h§Ú­Ì¥i¥H¥O x0 = [-1, 1] ¬°°_©l°Ï¨Ó§ä¥X humps ªº¹sÂI¡A¦p¤U¡G

Example 2: 08-¤@¯ë¼Æ¾Ç¨ç¼Æªº³B²z»P¤ÀªR/fzero02.mx = fzero(@humps, [-1, 1]); % ¨D¸¨©ó°Ï¶¡ [-1, 1] ªº®Ú y = humps(x); % ±a¤J¨D­È fprintf('humps(%f) = %f\n', x , y);humps(-0.131618) = 0.000000

¦¹®É fzero §ä¨ìªº¬O¥t¤@­Ó¹sÂI¡C­Y­nµe¥X¥H¤W³o¨â­Ó¹sÂI¡A¥i¿é¤J¦p¤U¡G

Example 3: 08-¤@¯ë¼Æ¾Ç¨ç¼Æªº³B²z»P¤ÀªR/fzero03.mfplot(@humps, [-1, 2]); grid on z1 = fzero(@humps, 1.5); z2 = fzero(@humps, [-1, 1]); line(z1, humps(z1), 'marker', 'o', 'color', 'r'); % µe¥X²Ä¤@­Ó¹sÂIªº¦ì¸m line(z2, humps(z2), 'marker', 'o', 'color', 'r'); % µe¥X²Ä¤G­Ó¹sÂIªº¦ì¸m

­Y±ýÅã¥Ü¨D¸Ñ¹Lµ{ªº¤¤¶¡µ²ªG¡A¥i¨Ï¥Î optimset «ü¥O¨Ó³]©wÅã¥Ü¿ï¶µ¡A¦A±N optimset ¶Ç¦^ªºµ²ºcÅܼưe¤Jfzero¡A¨Ò¦p¡G

Example 4: 08-¤@¯ë¼Æ¾Ç¨ç¼Æªº³B²z»P¤ÀªR/fzero04.mopt = optimset('disp', 'iter'); % Åã¥Ü¨C­Ó iteration ªºµ²ªG a = fzero(@humps, [-1, 1], opt) Func-count x f(x) Procedure 2 -1 -5.13779 initial 3 -0.513876 -4.02235 interpolation 4 -0.513876 -4.02235 bisection 5 -0.473635 -3.83767 interpolation 6 -0.115287 0.414441 bisection 7 -0.115287 0.414441 interpolation 8 -0.132562 -0.0226907 interpolation 9 -0.131666 -0.0011492 interpolation 10 -0.131618 1.88371e-07 interpolation 11 -0.131618 -2.7935e-11 interpolation 12 -0.131618 8.88178e-16 interpolation 13 -0.131618 8.88178e-16 interpolation Zero found in the interval [-1, 1] a = -0.1316

¦b¨D¹sÂI¹Lµ{¤¤¡A·|¥Î¨ì¤G¤Àªk¡]Bisection¡^©Î¤º´¡ªk¡]Interpolation¡^¡A³o¨Ç¤èªkÅã¥Ü¦b¤Wªí Procedure ªº²Ä¥|­ÓÄæ¦ì¤¤¡C­Yµ¹©w¤@­Ó°_©lÂI¡A«h fzero ¦b³Ìªìªº­Ó¨BÆJ¤¤·|¥ý§ä¥X¤@­Ó¾A·íªº°Ï¶¡¨Ó·j´M¹sÂI¡C

Hint
  • optimset ³q±`¥Î©ó³]©w³Ì¨Î¤Æªº¿ï¶µ¡A±N¦b¤U¸`¤¤¸Ô²Ó¤¶²Ð¡C


MATLABµ{¦¡³]­p¡G¶i¶¥½g