7-5 ���������������

¦±½uÀÀ¦X¡]Curve Fitting¡^¬O¦b¸ê®Æ¤ÀªR¤W±`¥Îªº¤èªk¡A¨ä°ò¥»·§©À¤D¬O¥H¤@°Ñ¼Æ¤Æªº¦±½u¨Ó¹Gªñ¤@²Õµ¹©wªº¸ê®ÆÂI¡C­Y¦¹°Ñ¼Æ¤Æªº¦±½u¬O¤@­Ó¦h¶µ¦¡¡A«h¦¹ºØ¦±½uÀÀ¦X¤SºÙ¬°¦h¶µ¦¡ÀÀ¦X¡]Polynomial Fitting¡^¡CMATLAB ´£¨Ñ¤F polyfit «ü¥O¥H¶i¦æ¦h¶µ¦¡ÀÀ¦X¡A¨Ï¥Î«D±`®e©ö¡C

¨Ò¦p¡G¥H¤U¬°¬ü°ê¤H¤f¦b 1790¦Ü 1990¡]10 ¦~¤@´Á¡^ªº¸ê®Æ¡G

Example 1: 07-¦h¶µ¦¡ªº³B²z»P¤ÀªR/plotCensus.mload census.mat plot(cdate, pop, 'o'); xlabel('¦~¥÷'); ylabel('¤H¤f¡]³æ¦ì¡G¦Ê¸U¡^');

­Y±ý¹w´ú¬ü°ê¦b¦è¤¸ 2002 ¦~ªºÁ`¤H¤f¡A¥i¥Î polyfit ¨Ó§ä¥X¤@±ø¦h¶µ¦¡¥H¹Gªñ¤wª¾ªº¸ê®ÆÂI¡C°²³]¦¹¦h¶µ¦¡ªº¦¸¼Æ¬° 3¡A«h¥i¿é¤J¦p¤U¡G

Example 2: 07-¦h¶µ¦¡ªº³B²z»P¤ÀªR/polyfit01.mwarning off % §R°£¦¹¦C±N¥iÅã¥Üĵ§i°T®§ load census.mat plot(cdate, pop, 'o'); p3 = polyfit(cdate, pop, 3); cdate2 = 1790:2002; pop2 = polyval(p3, cdate2); plot(cdate, pop, 'o', cdate2, pop2, '-'); xlabel('¦~¥÷'); ylabel('¤H¤f¡]³æ¦ì¡G¦Ê¸U¡^'); legend('¹ê»Ú¤H¤f', '¹w´ú¤H¤f'); popAt2002 = polyval(p3, 2002)popAt2002 = 282.5332

¥Ñ¦¹¦±½u¹w´ú¥iª¾¦b 2002 ¦~ªº¬ü°ê¤H¤f¬ù¬° 282.5 ¦Ê¸U¤H¡C

¥Ñ¤£¦Pªº¦¸¼Æ¨Ó¶i¦æ¦h¶µ¦¡ÀÀ¦X¡A¦b¡u¥~´¡¡v¡]Extrapolation¡^®É¡A±o¨ìªº®t²§¬Û·í¤j¡C§Ú­Ì¥i±N¨äµ²ªGµe¦b¦P¤@±i¹Ï¤W¡A¥H¤è«K¶i¦æ¤ñ¸û¡C¦p¤U¡G

Example 3: 07-¦h¶µ¦¡ªº³B²z»P¤ÀªR/polyfit02.mwarning off % §R°£¦¹¦C±N¥iÅã¥Üĵ§i°T®§ load census.mat cdate2 = min(cdate):(max(cdate)+30); curve = zeros(7, length(cdate2)); for i = 1:7 curve(i,:) = polyval(polyfit(cdate,pop,i), cdate2); end plot(cdate, pop,'o', cdate2, curve); legend('¹ê»Ú¸ê®Æ', 'order=1', 'order=2','order=3', 'order=4', 'order=5', 'order=6', 'order=7'); xlabel('¦~¥÷'); ylabel('¤H¤f¡]³æ¦ì¡G¦Ê¸U¡^');

½Ðª`·N¡A¦h¶µ¦¡ªº¦¸¼Æ¶V°ª¡A¶V¯à¹Gªñ©Òµ¹©wªº¸ê®Æ¡C¥H¤W­z 21 ÂI¸ê®Æ¬°¨Ò¡A­Y§Ú­Ì¥Î 20 ¦¸ªº¦h¶µ¦¡¨Ó¹Gªñ¡A«h¦¹¦h¶µ¦¡·|³q¹L¨C¤@­Ó¸ê®ÆÂI¡C¡]¬°¤°»ò¡H¡^¦ý³o¨Ã¤£ªí¥Ü¹w´úªº·Ç½T«×·|´£°ª¡C°ª¦¸¦h¶µ¦¡¹ïÂø°T¡]Noise¡^ªº±Ó·P«×¸û°ª¡A¦]¦¹®e©ö²£¥Í¤£·Ç½Tªº¥~´¡¹w´ú¡C¡]ŪªÌ­Y¦b MATLAB ¹Á¸Õ¦¹½d¨Ò¡A©Òµe¥Xªº¹Ï¬O±m¦âªº¡A¤ñ¸û®e©ö¬Ý¥X¨C±ø¦±½uªº®t²§¡C¡^

¦P®É¡A¦b¤W­z½d¨Ò¤¤¡A±`·|¥X²{ MATLAB ªºÄµ§i°T®§¡]½Ð±N¤W­z¨â½d¨Ò¤¤ªº warning off §R°£¡A§Y¥i¬Ý¨ìĵ§i°T®§¡^¡A³o¬Oªí¥Ü¥Ñ©ó¹ê»Ú¸ê®Æªº¤£¨¬©Î¥Ñ©ó¸ê®Æ¼Æ­È½d³òªº¹L¤j©Î¹L¤p¡A³y¦¨¦b¶i¦æ¦h¶µ¦¡ÀÀ¦X®É¡A¥i¯à·|±a¨Ó¼Æ­È¤Wªº»~®t¡C¦]¦¹¦b¶i¦æ¦h¶µ¦¡ÀÀ¦X®É¡A§Ú­Ì³Ì¦n¥ý±N¸ê®Æ¶i¦æ¥²­nªº¥­²¾¡B©ñ¤j©ÎÁY¤p½d³ò¡A¬ÛÃö¸ê°T½Ð¥Ñ¡uhelp polyfit¡v§Y¥i±o¨ì¬ÛÃöªº½u¤W¤ä´©¡C

Hint
¦bMATLAB ªº¥Ü½dµ{¦¡ census.m ¤¤¡A¦³°w¹ï¤W­z¬ü°ê¤H¤f¸ê®Æªº¦UºØ¦±½uÀÀ¦X¤èªk¡A±z­Y¦³¿³½ì¡A¤£§«¿é¤J¡ushowdemo census.m¡v¸Õ¸Õ¬Ý¡I

¨ä¥¦¦³Ãö¤º´¡»P¦±½uÀÀ¦Xªº¤èªk¡A½Ð°Ñ¨£¥»®Ñ¡u¦±½uÀÀ¦X»P°jÂk¤ÀªR¡v¤§¬ÛÃö³¹¸`¡C


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