SciPy, āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻžāĻ¨

SciPy, āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻžāĻ¨

SciPy (āĻ‰āĻšā§āĻšāĻžāĻ°āĻŋāĻ¤ āĻ¸āĻžāĻ‡ āĻĒāĻžāĻ‡) āĻšāĻ˛ āĻ¨āĻŽā§āĻĒāĻŋ āĻĒāĻžāĻ‡āĻĨāĻ¨ āĻāĻ•ā§āĻ¸āĻŸā§‡āĻ¨āĻļāĻ¨ā§‡āĻ° āĻ‰āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻ—āĻžāĻŖāĻŋāĻ¤āĻŋāĻ• āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻœāĨ¤ SciPy-āĻāĻ° āĻ¸āĻžāĻĨā§‡, āĻ†āĻĒāĻ¨āĻžāĻ° āĻ‡āĻ¨ā§āĻŸāĻžāĻ°ā§‡āĻ•ā§āĻŸāĻŋāĻ­ āĻĒāĻžāĻ‡āĻĨāĻ¨ āĻ¸ā§‡āĻļāĻ¨āĻŸāĻŋ MATLAB, IDL, Octave, R-Lab āĻāĻŦāĻ‚ SciLab-āĻāĻ° āĻŽāĻ¤ā§‹ āĻāĻ•āĻ‡ āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻĄā§‡āĻŸāĻž āĻ¸āĻžāĻ¯āĻŧā§‡āĻ¨ā§āĻ¸ āĻāĻŦāĻ‚ āĻœāĻŸāĻŋāĻ˛ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻĒā§āĻ°ā§‹āĻŸā§‹āĻŸāĻžāĻ‡āĻĒāĻŋāĻ‚ āĻĒāĻ°āĻŋāĻŦā§‡āĻļā§‡ āĻĒāĻ°āĻŋāĻŖāĻ¤ āĻšāĻ¯āĻŧāĨ¤ āĻ†āĻœ āĻ†āĻŽāĻŋ āĻ¸āĻ‚āĻ•ā§āĻˇā§‡āĻĒā§‡ scipy.optimize āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻœā§‡ āĻ•āĻŋāĻ›ā§ āĻ¸ā§āĻĒāĻ°āĻŋāĻšāĻŋāĻ¤ āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻžāĻ¨ āĻ…ā§āĻ¯āĻžāĻ˛āĻ—āĻ°āĻŋāĻĻāĻŽ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧā§‡ āĻ•āĻĨāĻž āĻŦāĻ˛āĻ¤ā§‡ āĻšāĻžāĻ‡āĨ¤ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§‡ āĻ†āĻ°āĻ“ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻāĻŦāĻ‚ āĻ†āĻĒ-āĻŸā§-āĻĄā§‡āĻŸ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻ¸āĻ°ā§āĻŦāĻĻāĻž help() āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻŦāĻž Shift+Tab āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻĒāĻžāĻ“āĻ¯āĻŧāĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤

āĻ­ā§‚āĻŽāĻŋāĻ•āĻž

āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ• āĻ‰āĻ¤ā§āĻ¸ āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻāĻŦāĻ‚ āĻĒāĻĄāĻŧāĻž āĻĨā§‡āĻ•ā§‡ āĻ¨āĻŋāĻœā§‡āĻ•ā§‡ āĻāĻŦāĻ‚ āĻĒāĻžāĻ āĻ•āĻĻā§‡āĻ° āĻŦāĻžāĻāĻšāĻžāĻ¨ā§‹āĻ° āĻœāĻ¨ā§āĻ¯, āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻŦāĻ°ā§āĻŖāĻ¨āĻžāĻ° āĻ˛āĻŋāĻ™ā§āĻ•āĻ—ā§āĻ˛āĻŋ āĻŽā§‚āĻ˛āĻ¤ āĻ‰āĻ‡āĻ•āĻŋāĻĒāĻŋāĻĄāĻŋāĻ¯āĻŧāĻžāĻ¯āĻŧ āĻĨāĻžāĻ•āĻŦā§‡āĨ¤ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ¯āĻŧāĻŽ āĻšāĻŋāĻ¸āĻžāĻŦā§‡, āĻāĻ‡ āĻ¤āĻĨā§āĻ¯ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻļāĻ°ā§āĻ¤āĻžāĻŦāĻ˛ā§€ āĻāĻŦāĻ‚ āĻ¤āĻžāĻĻā§‡āĻ° āĻ†āĻŦā§‡āĻĻāĻ¨ā§‡āĻ° āĻļāĻ°ā§āĻ¤āĻžāĻŦāĻ˛ā§€ āĻŦā§‹āĻāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¯āĻĨā§‡āĻˇā§āĻŸāĨ¤ āĻ—āĻžāĻŖāĻŋāĻ¤āĻŋāĻ• āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻ¸āĻžāĻ°āĻŽāĻ°ā§āĻŽ āĻŦā§‹āĻāĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻ†āĻ°āĻ“ āĻĒā§āĻ°āĻžāĻŽāĻžāĻŖāĻŋāĻ• āĻĒā§āĻ°āĻ•āĻžāĻļāĻ¨āĻžāĻ° āĻ˛āĻŋāĻ™ā§āĻ•āĻ—ā§āĻ˛āĻŋ āĻ…āĻ¨ā§āĻ¸āĻ°āĻŖ āĻ•āĻ°ā§āĻ¨, āĻ¯āĻž āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§‡āĻ° āĻļā§‡āĻˇā§‡ āĻŦāĻž āĻ†āĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻŋāĻ¯āĻŧ āĻ¸āĻžāĻ°ā§āĻš āĻ‡āĻžā§āĻœāĻŋāĻ¨ā§‡ āĻĒāĻžāĻ“āĻ¯āĻŧāĻž āĻ¯āĻžāĻŦā§‡āĨ¤

āĻ¸ā§āĻ¤āĻ°āĻžāĻ‚, scipy.optimize āĻŽāĻĄāĻŋāĻ‰āĻ˛ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻ…āĻ¨ā§āĻ¤āĻ°ā§āĻ­ā§āĻ•ā§āĻ¤ āĻ•āĻ°ā§‡:

  1. āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻ…ā§āĻ¯āĻžāĻ˛āĻ—āĻ°āĻŋāĻĻāĻŽ (āĻ¨ā§‡āĻ˛ā§āĻĄāĻžāĻ°-āĻŽāĻŋāĻĄ āĻ¸āĻŋāĻŽāĻĒā§āĻ˛ā§‡āĻ•ā§āĻ¸, āĻŦāĻŋāĻāĻĢāĻœāĻŋāĻāĻ¸, āĻ¨āĻŋāĻ‰āĻŸāĻ¨ āĻ•āĻ¨āĻœā§āĻ—ā§‡āĻŸ āĻ—ā§āĻ°ā§‡āĻĄāĻŋāĻ¯āĻŧā§‡āĻ¨ā§āĻŸāĻ¸, āĻ•ā§‹āĻŦāĻžāĻ‡āĻ˛āĻž и āĻāĻ¸āĻāĻ˛āĻāĻ¸āĻ•āĻŋāĻ‰āĻĒāĻŋ)
  2. āĻ—ā§āĻ˛ā§‹āĻŦāĻžāĻ˛ āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻžāĻ¨ (āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ: āĻŦā§‡āĻ¸āĻŋāĻ¨āĻšāĻĒāĻŋāĻ‚, āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āĻ¯_āĻŦāĻŋāĻŦāĻ°ā§āĻ¤āĻ¨)
  3. āĻ¨ā§āĻ¯ā§‚āĻ¨āĻ¤āĻŽ āĻ…āĻŦāĻļāĻŋāĻˇā§āĻŸāĻžāĻ‚āĻļ MNC (least_squares) āĻāĻŦāĻ‚ āĻ…āĻ°ā§ˆāĻ–āĻŋāĻ• āĻ¨ā§āĻ¯ā§‚āĻ¨āĻ¤āĻŽ āĻŦāĻ°ā§āĻ—āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻŦāĻ•ā§āĻ°āĻ°ā§‡āĻ–āĻž āĻĢāĻŋāĻŸāĻŋāĻ‚ āĻ…ā§āĻ¯āĻžāĻ˛āĻ—āĻ°āĻŋāĻĻāĻŽ (āĻŦāĻ•ā§āĻ°_āĻĢāĻŋāĻŸ)
  4. āĻāĻ•āĻŸāĻŋ āĻ­ā§‡āĻ°āĻŋāĻ¯āĻŧā§‡āĻŦāĻ˛ā§‡āĻ° āĻ¸ā§āĻ•ā§‡āĻ˛āĻžāĻ° āĻĢāĻžāĻ‚āĻļāĻ¨ āĻŽāĻŋāĻ¨āĻŋāĻŽāĻžāĻ‡āĻœ āĻ•āĻ°āĻž (minim_scalar) āĻāĻŦāĻ‚ āĻ°ā§āĻŸ (root_scalar) āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻ•āĻ°āĻž
  5. āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻ…ā§āĻ¯āĻžāĻ˛āĻ—āĻ°āĻŋāĻĻāĻŽ (āĻšāĻžāĻ‡āĻŦā§āĻ°āĻŋāĻĄ āĻĒāĻžāĻ“āĻ¯āĻŧā§‡āĻ˛, āĻ˛ā§‡āĻ­ā§‡āĻ¨āĻŦāĻžāĻ°ā§āĻ—-āĻŽāĻžāĻ°ā§āĻ•ā§‹āĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻŦāĻž āĻŦāĻĄāĻŧ āĻ†āĻ•āĻžāĻ°ā§‡āĻ° āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ¯ā§‡āĻŽāĻ¨ āĻ¨āĻŋāĻ‰āĻŸāĻ¨-āĻ•ā§āĻ°āĻŋāĻ˛āĻ­).

āĻāĻ‡ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§‡ āĻ†āĻŽāĻ°āĻž āĻāĻ‡ āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ¤āĻžāĻ˛āĻŋāĻ•āĻž āĻĨā§‡āĻ•ā§‡ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻ†āĻ‡āĻŸā§‡āĻŽ āĻŦāĻŋāĻŦā§‡āĻšāĻ¨āĻž āĻ•āĻ°āĻŦāĨ¤

āĻŦā§‡āĻļ āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ āĻ­ā§‡āĻ°āĻŋāĻ¯āĻŧā§‡āĻŦāĻ˛ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻ•ā§‡āĻ˛āĻžāĻ° āĻĢāĻžāĻ‚āĻļāĻ¨ā§‡āĻ° āĻļāĻ°ā§āĻ¤āĻšā§€āĻ¨ āĻ¨ā§āĻ¯ā§‚āĻ¨āĻ¤āĻŽāĻ•āĻ°āĻŖ

scipy.optimize āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻœ āĻĨā§‡āĻ•ā§‡ āĻ¨ā§āĻ¯ā§‚āĻ¨āĻ¤āĻŽ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻŦā§‡āĻļ āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ āĻ­ā§‡āĻ°āĻŋāĻ¯āĻŧā§‡āĻŦāĻ˛ā§‡āĻ° āĻ¸ā§āĻ•ā§‡āĻ˛āĻžāĻ° āĻĢāĻžāĻ‚āĻļāĻ¨ā§‡āĻ° āĻļāĻ°ā§āĻ¤āĻ¸āĻžāĻĒā§‡āĻ•ā§āĻˇ āĻāĻŦāĻ‚ āĻļāĻ°ā§āĻ¤āĻšā§€āĻ¨ āĻ¨ā§āĻ¯ā§‚āĻ¨āĻ¤āĻŽāĻ•āĻ°āĻŖ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻĢā§‡āĻ¸ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°ā§‡āĨ¤ āĻāĻŸāĻŋ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡ āĻ¤āĻž āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻ¨ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻŦā§‡āĻļ āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ āĻ­ā§‡āĻ°āĻŋāĻ¯āĻŧā§‡āĻŦāĻ˛ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ‰āĻĒāĻ¯ā§āĻ•ā§āĻ¤ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨, āĻ¯āĻž āĻ†āĻŽāĻ°āĻž āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻ‰āĻĒāĻžāĻ¯āĻŧā§‡ āĻ›ā§‹āĻŸ āĻ•āĻ°āĻŦāĨ¤

āĻāĻ‡ āĻ‰āĻĻā§āĻĻā§‡āĻļā§āĻ¯ā§‡, N āĻ­ā§‡āĻ°āĻŋāĻ¯āĻŧā§‡āĻŦāĻ˛ā§‡āĻ° āĻ°ā§‹āĻœā§‡āĻ¨āĻŦā§āĻ°āĻ• āĻĢāĻžāĻ‚āĻļāĻ¨āĻŸāĻŋ āĻ¨āĻŋāĻ–ā§āĻāĻ¤, āĻ¯āĻžāĻ° āĻĢāĻ°ā§āĻŽ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡:

SciPy, āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻžāĻ¨

āĻ°ā§‹āĻœā§‡āĻ¨āĻŦā§āĻ°āĻ• āĻĢāĻžāĻ‚āĻļāĻ¨ āĻāĻŦāĻ‚ āĻāĻ° āĻœā§āĻ¯āĻžāĻ•āĻŦāĻŋ āĻāĻŦāĻ‚ āĻšā§‡āĻ¸āĻŋāĻ¯āĻŧāĻžāĻ¨ āĻŽā§āĻ¯āĻžāĻŸā§āĻ°āĻŋāĻ¸āĻŋāĻ¸ (āĻ¯āĻĨāĻžāĻ•ā§āĻ°āĻŽā§‡ āĻĒā§āĻ°āĻĨāĻŽ āĻāĻŦāĻ‚ āĻĻā§āĻŦāĻŋāĻ¤ā§€āĻ¯āĻŧ āĻĄā§‡āĻ°āĻŋāĻ­ā§‡āĻŸāĻŋāĻ­āĻ¸) āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡ scipy.optimize āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻœā§‡ āĻ¸āĻ‚āĻœā§āĻžāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻ•āĻ°āĻž āĻ¸āĻ¤ā§āĻ¤ā§āĻŦā§‡āĻ“, āĻ†āĻŽāĻ°āĻž āĻ¨āĻŋāĻœā§‡āĻ°āĻžāĻ‡ āĻāĻŸāĻŋ āĻ¸āĻ‚āĻœā§āĻžāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻ•āĻ°āĻŦāĨ¤

import numpy as np

def rosen(x):
    """The Rosenbrock function"""
    return np.sum(100.0*(x[1:]-x[:-1]**2.0)**2.0 + (1-x[:-1])**2.0, axis=0)

āĻ¸ā§āĻŦāĻšā§āĻ›āĻ¤āĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻĻā§āĻŸāĻŋ āĻ­ā§‡āĻ°āĻŋāĻ¯āĻŧā§‡āĻŦāĻ˛ā§‡āĻ° āĻ°ā§‹āĻœā§‡āĻ¨āĻŦā§āĻ°āĻ• āĻĢāĻžāĻ‚āĻļāĻ¨ā§‡āĻ° āĻŽāĻžāĻ¨ 3D-āĻ āĻ†āĻāĻ•ā§āĻ¨āĨ¤

āĻ…āĻ™ā§āĻ•āĻ¨ āĻ•ā§‹āĻĄ

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter

# НаŅŅ‚Ņ€Đ°Đ¸Đ˛Đ°ĐĩĐŧ 3D ĐŗŅ€Đ°Ņ„иĐē
fig = plt.figure(figsize=[15, 10])
ax = fig.gca(projection='3d')

# ЗадаĐĩĐŧ ŅƒĐŗĐžĐģ ОйСОŅ€Đ°
ax.view_init(45, 30)

# ХОСдаĐĩĐŧ Đ´Đ°ĐŊĐŊŅ‹Đĩ Đ´ĐģŅ ĐŗŅ€Đ°Ņ„иĐēĐ°
X = np.arange(-2, 2, 0.1)
Y = np.arange(-1, 3, 0.1)
X, Y = np.meshgrid(X, Y)
Z = rosen(np.array([X,Y]))

# РиŅŅƒĐĩĐŧ ĐŋОвĐĩŅ€Ņ…ĐŊĐžŅŅ‚ŅŒ
surf = ax.plot_surface(X, Y, Z, cmap=cm.coolwarm)
plt.show()

SciPy, āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻžāĻ¨

āĻ¸āĻ°ā§āĻŦāĻ¨āĻŋāĻŽā§āĻ¨ 0 āĻ āĻ¯ā§‡ āĻ…āĻ—ā§āĻ°āĻŋāĻŽ āĻœā§‡āĻ¨ā§‡ SciPy, āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻžāĻ¨, āĻ†āĻ¸ā§āĻ¨ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ scipy.optimize āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ°ā§‹āĻœā§‡āĻ¨āĻŦā§āĻ°āĻ• āĻĢāĻžāĻ‚āĻļāĻ¨ā§‡āĻ° āĻ¨ā§āĻ¯ā§‚āĻ¨āĻ¤āĻŽ āĻŽāĻžāĻ¨ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ āĻ¤āĻžāĻ° āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻĻā§‡āĻ–āĻŋāĨ¤

āĻ¨ā§‡āĻ˛ā§āĻĄāĻžāĻ°-āĻŽāĻŋāĻĄ āĻ¸āĻŋāĻŽāĻĒā§āĻ˛ā§‡āĻ•ā§āĻ¸ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ

0-āĻŽāĻžāĻ¤ā§āĻ°āĻŋāĻ• āĻ¸ā§āĻĨāĻžāĻ¨ā§‡ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ• āĻŦāĻŋāĻ¨ā§āĻĻā§ x5 āĻĨāĻžāĻ•ā§āĻ•āĨ¤ āĻ…ā§āĻ¯āĻžāĻ˛āĻ—āĻ°āĻŋāĻĻāĻŽ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻāĻ° āĻ¸āĻŦāĻšā§‡āĻ¯āĻŧā§‡ āĻ•āĻžāĻ›ā§‡āĻ° āĻ°ā§‹āĻœā§‡āĻ¨āĻŦā§āĻ°āĻ• āĻĢāĻžāĻ‚āĻļāĻ¨ā§‡āĻ° āĻ¨ā§āĻ¯ā§‚āĻ¨āĻ¤āĻŽ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸāĻŸāĻŋ āĻ–ā§āĻāĻœā§‡ āĻŦā§‡āĻ° āĻ•āĻ°āĻž āĻ¯āĻžāĻ• āĻ¨ā§‡āĻ˛ā§āĻĄāĻžāĻ°-āĻŽāĻŋāĻĄ āĻ¸āĻŋāĻŽāĻĒā§āĻ˛ā§‡āĻ•ā§āĻ¸ (āĻ…ā§āĻ¯āĻžāĻ˛āĻ—āĻ°āĻŋāĻĻāĻŽ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻŸāĻžāĻ°ā§‡āĻ° āĻŽāĻžāĻ¨ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ):

from scipy.optimize import minimize
x0 = np.array([1.3, 0.7, 0.8, 1.9, 1.2])
res = minimize(rosen, x0, method='nelder-mead',
    options={'xtol': 1e-8, 'disp': True})
print(res.x)

Optimization terminated successfully.
         Current function value: 0.000000
         Iterations: 339
         Function evaluations: 571
[1. 1. 1. 1. 1.]

āĻ¸āĻŋāĻŽāĻĒā§āĻ˛ā§‡āĻ•ā§āĻ¸ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻšāĻ˛ āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻ¸ā§āĻĒāĻˇā§āĻŸāĻ­āĻžāĻŦā§‡ āĻ¸āĻ‚āĻœā§āĻžāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻāĻŦāĻ‚ āĻŽā§‹āĻŸāĻžāĻŽā§āĻŸāĻŋ āĻŽāĻ¸ā§ƒāĻŖ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻ•āĻŽāĻžāĻ¨ā§‹āĻ° āĻ¸āĻŦāĻšā§‡āĻ¯āĻŧā§‡ āĻ¸āĻšāĻœ āĻ‰āĻĒāĻžāĻ¯āĻŧāĨ¤ āĻāĻŸāĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻĢāĻžāĻ‚āĻļāĻ¨ā§‡āĻ° āĻĄā§‡āĻ°āĻŋāĻ­ā§‡āĻŸāĻŋāĻ­ āĻ—āĻŖāĻ¨āĻž āĻ•āĻ°āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻ¨ā§‡āĻ‡; āĻāĻŸāĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻ° āĻŽāĻžāĻ¨āĻ—ā§āĻ˛āĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¯āĻĨā§‡āĻˇā§āĻŸāĨ¤ āĻ¨ā§‡āĻ˛ā§āĻĄāĻžāĻ°-āĻŽāĻŋāĻĄ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻŸāĻŋ āĻ¸āĻšāĻœ āĻŽāĻŋāĻ¨āĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻ¨ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ­āĻžāĻ˛ āĻĒāĻ›āĻ¨ā§āĻĻāĨ¤ āĻ¯āĻžāĻ‡āĻšā§‹āĻ•, āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻāĻŸāĻŋ āĻ—ā§āĻ°ā§‡āĻĄāĻŋāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻ…āĻ¨ā§āĻŽāĻžāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ¨āĻž, āĻāĻŸāĻŋ āĻ¨ā§āĻ¯ā§‚āĻ¨āĻ¤āĻŽ āĻ–ā§āĻāĻœā§‡ āĻĒā§‡āĻ¤ā§‡ āĻ†āĻ°āĻ“ āĻŦā§‡āĻļāĻŋ āĻ¸āĻŽāĻ¯āĻŧ āĻ¨āĻŋāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤

āĻĒāĻžāĻ“āĻ¯āĻŧā§‡āĻ˛ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ

āĻ†āĻ°ā§‡āĻ•āĻŸāĻŋ āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻžāĻ¨ āĻ…ā§āĻ¯āĻžāĻ˛āĻ—āĻ°āĻŋāĻĻāĻŽ āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻĢāĻžāĻ‚āĻļāĻ¨ā§‡āĻ° āĻŽāĻžāĻ¨ āĻ—āĻŖāĻ¨āĻž āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻĒāĻžāĻ“āĻ¯āĻŧā§‡āĻ˛ā§‡āĻ° āĻĒāĻĻā§āĻ§āĻ¤āĻŋ. āĻāĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻŽāĻŋāĻ¨āĻŋāĻŽ āĻĢāĻžāĻ‚āĻļāĻ¨ā§‡ āĻŽā§‡āĻĨāĻĄ = 'āĻĒāĻžāĻ“āĻ¯āĻŧā§‡āĻ˛' āĻ¸ā§‡āĻŸ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤

x0 = np.array([1.3, 0.7, 0.8, 1.9, 1.2])
res = minimize(rosen, x0, method='powell',
    options={'xtol': 1e-8, 'disp': True})
print(res.x)

Optimization terminated successfully.
         Current function value: 0.000000
         Iterations: 19
         Function evaluations: 1622
[1. 1. 1. 1. 1.]

Broyden-Fletcher-Goldfarb-Shanno (BFGS) āĻ…ā§āĻ¯āĻžāĻ˛āĻ—āĻ°āĻŋāĻĻāĻŽ

āĻāĻ•āĻŸāĻŋ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻĻā§āĻ°ā§āĻ¤ āĻ…āĻ­āĻŋāĻ¸āĻžāĻ°ā§€ āĻĒā§āĻ°āĻžāĻĒā§āĻ¤ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻŦāĻŋāĻāĻĢāĻœāĻŋāĻāĻ¸ āĻ‰āĻĻā§āĻĻā§‡āĻļā§āĻ¯ āĻĢāĻžāĻ‚āĻļāĻ¨ā§‡āĻ° āĻ—ā§āĻ°ā§‡āĻĄāĻŋāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡āĨ¤ āĻ—ā§āĻ°ā§‡āĻĄāĻŋāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻāĻ•āĻŸāĻŋ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ āĻŦāĻž āĻĒā§āĻ°āĻĨāĻŽ āĻ…āĻ°ā§āĻĄāĻžāĻ° āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āĻ¯ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ—āĻŖāĻ¨āĻž āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ āĻ¯āĻžāĻ‡ āĻšā§‹āĻ• āĻ¨āĻž āĻ•ā§‡āĻ¨, BFGS āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ¤ā§‡ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻ¸āĻŋāĻŽāĻĒā§āĻ˛ā§‡āĻ•ā§āĻ¸ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻšā§‡āĻ¯āĻŧā§‡ āĻ•āĻŽ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻ•āĻ˛ā§‡āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻšāĻ¯āĻŧāĨ¤

āĻ†āĻ¸ā§āĻ¨ āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖāĻžāĻ¤ā§āĻŽāĻ• āĻ†āĻ•āĻžāĻ°ā§‡ āĻ°ā§‹āĻœā§‡āĻ¨āĻŦā§āĻ°āĻ• āĻĢāĻžāĻ‚āĻļāĻ¨ā§‡āĻ° āĻĄā§‡āĻ°āĻŋāĻ­ā§‡āĻŸāĻŋāĻ­ āĻ–ā§āĻāĻœā§‡ āĻŦā§‡āĻ° āĻ•āĻ°āĻŋ:

SciPy, āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻžāĻ¨

SciPy, āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻžāĻ¨

āĻāĻ‡ āĻ…āĻ­āĻŋāĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋāĻŸāĻŋ āĻĒā§āĻ°āĻĨāĻŽ āĻāĻŦāĻ‚ āĻļā§‡āĻˇ āĻŦā§āĻ¯āĻ¤ā§€āĻ¤ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ­ā§‡āĻ°āĻŋāĻ¯āĻŧā§‡āĻŦāĻ˛ā§‡āĻ° āĻĄā§‡āĻ°āĻŋāĻ­ā§‡āĻŸāĻŋāĻ­ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻŦā§ˆāĻ§, āĻ¯āĻž āĻāĻ‡āĻ­āĻžāĻŦā§‡ āĻ¸āĻ‚āĻœā§āĻžāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡:

SciPy, āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻžāĻ¨

SciPy, āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻžāĻ¨

āĻ†āĻ¸ā§āĻ¨ āĻĒāĻžāĻ‡āĻĨāĻ¨ āĻĢāĻžāĻ‚āĻļāĻ¨āĻŸāĻŋ āĻĻā§‡āĻ–āĻŋ āĻ¯āĻž āĻāĻ‡ āĻ—ā§āĻ°ā§‡āĻĄāĻŋāĻ¯āĻŧā§‡āĻ¨ā§āĻŸāĻŸāĻŋ āĻ—āĻŖāĻ¨āĻž āĻ•āĻ°ā§‡:

def rosen_der (x):
    xm = x [1: -1]
    xm_m1 = x [: - 2]
    xm_p1 = x [2:]
    der = np.zeros_like (x)
    der [1: -1] = 200 * (xm-xm_m1 ** 2) - 400 * (xm_p1 - xm ** 2) * xm - 2 * (1-xm)
    der [0] = -400 * x [0] * (x [1] -x [0] ** 2) - 2 * (1-x [0])
    der [-1] = 200 * (x [-1] -x [-2] ** 2)
    return der

āĻ—ā§āĻ°ā§‡āĻĄāĻŋāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻ•ā§āĻ¯āĻžāĻ˛āĻ•ā§āĻ˛ā§‡āĻļāĻ¨ āĻĢāĻžāĻ‚āĻļāĻ¨āĻŸāĻŋ āĻŽāĻŋāĻ¨āĻŋāĻŽ āĻĢāĻžāĻ‚āĻļāĻ¨ā§‡āĻ° jac āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻŸāĻžāĻ°ā§‡āĻ° āĻŽāĻžāĻ¨ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡, āĻ¯ā§‡āĻŽāĻ¨āĻŸāĻŋ āĻ¨ā§€āĻšā§‡ āĻĻā§‡āĻ–āĻžāĻ¨ā§‹ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤

res = minimize(rosen, x0, method='BFGS', jac=rosen_der, options={'disp': True})
print(res.x)

Optimization terminated successfully.
         Current function value: 0.000000
         Iterations: 25
         Function evaluations: 30
         Gradient evaluations: 30
[1.00000004 1.0000001  1.00000021 1.00000044 1.00000092]

āĻ•āĻ¨āĻœā§āĻ—ā§‡āĻŸ āĻ—ā§āĻ°ā§‡āĻĄāĻŋāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻ…ā§āĻ¯āĻžāĻ˛āĻ—āĻ°āĻŋāĻĻāĻŽ (āĻ¨āĻŋāĻ‰āĻŸāĻ¨)

āĻ…ā§āĻ¯āĻžāĻ˛āĻ—āĻ°āĻŋāĻĻāĻŽ āĻ¨āĻŋāĻ‰āĻŸāĻ¨ā§‡āĻ° āĻ•āĻ¨āĻœā§āĻ—ā§‡āĻŸ āĻ—ā§āĻ°ā§‡āĻĄāĻŋāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻŋāĻ¤ āĻ¨āĻŋāĻ‰āĻŸāĻ¨ā§‡āĻ° āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĨ¤
āĻ¨āĻŋāĻ‰āĻŸāĻ¨ā§‡āĻ° āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻŸāĻŋ āĻĻā§āĻŦāĻŋāĻ¤ā§€āĻ¯āĻŧ āĻĄāĻŋāĻ—ā§āĻ°āĻŋāĻ° āĻŦāĻšā§āĻĒāĻĻā§€ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¸ā§āĻĨāĻžāĻ¨ā§€āĻ¯āĻŧ āĻāĻ˛āĻžāĻ•āĻžāĻ¯āĻŧ āĻāĻ•āĻŸāĻŋ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻ†āĻ¨ā§āĻŽāĻžāĻ¨āĻŋāĻ• āĻ•āĻ°āĻžāĻ° āĻ‰āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡:

SciPy, āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻžāĻ¨

āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ SciPy, āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻžāĻ¨ āĻĻā§āĻŦāĻŋāĻ¤ā§€āĻ¯āĻŧ āĻĄā§‡āĻ°āĻŋāĻ­ā§‡āĻŸāĻŋāĻ­ā§‡āĻ° āĻŽā§āĻ¯āĻžāĻŸā§āĻ°āĻŋāĻ•ā§āĻ¸ (āĻšā§‡āĻ¸āĻŋāĻ¯āĻŧāĻžāĻ¨ āĻŽā§āĻ¯āĻžāĻŸā§āĻ°āĻŋāĻ•ā§āĻ¸, āĻšā§‡āĻ¸āĻŋāĻ¯āĻŧāĻžāĻ¨)āĨ¤
āĻ¯āĻĻāĻŋ āĻšā§‡āĻ¸āĻŋāĻ¯āĻŧāĻžāĻ¨ āĻ§āĻ¨āĻžāĻ¤ā§āĻŽāĻ• āĻ¸ā§āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻāĻ‡ āĻĢāĻžāĻ‚āĻļāĻ¨ā§‡āĻ° āĻ¸ā§āĻĨāĻžāĻ¨ā§€āĻ¯āĻŧ āĻ¨ā§āĻ¯ā§‚āĻ¨āĻ¤āĻŽ āĻĒāĻžāĻ“āĻ¯āĻŧāĻž āĻ¯āĻžāĻŦā§‡ āĻĻā§āĻŦāĻŋāĻ˜āĻžāĻ¤ āĻĢāĻ°ā§āĻŽā§‡āĻ° āĻļā§‚āĻ¨ā§āĻ¯ āĻ—ā§āĻ°ā§‡āĻĄāĻŋāĻ¯āĻŧā§‡āĻ¨ā§āĻŸāĻ•ā§‡ āĻļā§‚āĻ¨ā§āĻ¯ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻŽāĻžāĻ¨ āĻ•āĻ°ā§‡āĨ¤ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻ…āĻ­āĻŋāĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋ āĻšāĻŦā§‡:

SciPy, āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻžāĻ¨

āĻŦāĻŋāĻĒāĻ°ā§€āĻ¤ āĻšā§‡āĻ¸āĻŋāĻ¯āĻŧāĻžāĻ¨ āĻ•āĻ¨āĻœā§āĻ—ā§‡āĻŸ āĻ—ā§āĻ°ā§‡āĻĄāĻŋāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ—āĻŖāĻ¨āĻž āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻ°ā§‹āĻœā§‡āĻ¨āĻŦā§āĻ°āĻ• āĻĢāĻžāĻ‚āĻļāĻ¨āĻŸāĻŋ āĻ›ā§‹āĻŸ āĻ•āĻ°āĻ¤ā§‡ āĻāĻ‡ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻ¨ā§€āĻšā§‡ āĻĻā§‡āĻ“āĻ¯āĻŧāĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻ¨āĻŋāĻ‰āĻŸāĻ¨-āĻ¸āĻŋāĻœāĻŋ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡, āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ…āĻŦāĻļā§āĻ¯āĻ‡ āĻāĻ•āĻŸāĻŋ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ āĻ¯āĻž āĻšā§‡āĻ¸āĻŋāĻ¯āĻŧāĻžāĻ¨ āĻ—āĻŖāĻ¨āĻž āĻ•āĻ°ā§‡āĨ¤
āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖāĻžāĻ¤ā§āĻŽāĻ• āĻ†āĻ•āĻžāĻ°ā§‡ āĻ°ā§‹āĻœā§‡āĻ¨āĻŦā§āĻ°āĻ• āĻĢāĻžāĻ‚āĻļāĻ¨ā§‡āĻ° āĻšā§‡āĻ¸āĻŋāĻ¯āĻŧāĻžāĻ¨ āĻ¸āĻŽāĻžāĻ¨:

SciPy, āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻžāĻ¨

SciPy, āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻžāĻ¨

āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ SciPy, āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻžāĻ¨ и SciPy, āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻžāĻ¨, āĻŽā§āĻ¯āĻžāĻŸā§āĻ°āĻŋāĻ•ā§āĻ¸ āĻ¸āĻ‚āĻœā§āĻžāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻ•āĻ°ā§āĻ¨ SciPy, āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻžāĻ¨.

āĻŽā§āĻ¯āĻžāĻŸā§āĻ°āĻŋāĻ•ā§āĻ¸ā§‡āĻ° āĻ…āĻŦāĻļāĻŋāĻˇā§āĻŸ āĻ…-āĻļā§‚āĻ¨ā§āĻ¯ āĻ‰āĻĒāĻžāĻĻāĻžāĻ¨āĻ—ā§āĻ˛āĻŋ āĻ¸āĻŽāĻžāĻ¨:

SciPy, āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻžāĻ¨

SciPy, āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻžāĻ¨

SciPy, āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻžāĻ¨

SciPy, āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻžāĻ¨

āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻāĻ•āĻŸāĻŋ āĻĒāĻžā§āĻš-āĻŽāĻžāĻ¤ā§āĻ°āĻŋāĻ• āĻ¸ā§āĻĨāĻžāĻ¨ N = 5-āĻ, āĻ°ā§‹āĻœā§‡āĻ¨āĻŦā§āĻ°āĻ• āĻĢāĻžāĻ‚āĻļāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻšā§‡āĻ¸āĻŋāĻ¯āĻŧāĻžāĻ¨ āĻŽā§āĻ¯āĻžāĻŸā§āĻ°āĻŋāĻ•ā§āĻ¸ āĻāĻ•āĻŸāĻŋ āĻŦā§āĻ¯āĻžāĻ¨ā§āĻĄā§‡āĻ° āĻ†āĻ•āĻžāĻ° āĻ§āĻžāĻ°āĻŖ āĻ•āĻ°ā§‡:

SciPy, āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻžāĻ¨

āĻ¯ā§‡ āĻ•ā§‹āĻĄāĻŸāĻŋ āĻ•āĻ¨āĻœā§āĻ—ā§‡āĻŸ āĻ—ā§āĻ°ā§‡āĻĄāĻŋāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ (āĻ¨āĻŋāĻ‰āĻŸāĻ¨) āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ°ā§‹āĻœā§‡āĻ¨āĻŦā§āĻ°āĻ• āĻĢāĻžāĻ‚āĻļāĻ¨āĻŸāĻŋ āĻ›ā§‹āĻŸ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ•ā§‹āĻĄ āĻ¸āĻš āĻāĻ‡ āĻšā§‡āĻ¸āĻŋāĻ¯āĻŧāĻžāĻ¨ āĻ—āĻŖāĻ¨āĻž āĻ•āĻ°ā§‡:

def rosen_hess(x):
    x = np.asarray(x)
    H = np.diag(-400*x[:-1],1) - np.diag(400*x[:-1],-1)
    diagonal = np.zeros_like(x)
    diagonal[0] = 1200*x[0]**2-400*x[1]+2
    diagonal[-1] = 200
    diagonal[1:-1] = 202 + 1200*x[1:-1]**2 - 400*x[2:]
    H = H + np.diag(diagonal)
    return H

res = minimize(rosen, x0, method='Newton-CG', 
               jac=rosen_der, hess=rosen_hess,
               options={'xtol': 1e-8, 'disp': True})
print(res.x)

Optimization terminated successfully.
         Current function value: 0.000000
         Iterations: 24
         Function evaluations: 33
         Gradient evaluations: 56
         Hessian evaluations: 24
[1.         1.         1.         0.99999999 0.99999999]

āĻšā§‡āĻ¸āĻŋāĻ¯āĻŧāĻžāĻ¨ āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻŦāĻŋāĻšāĻžāĻ°ā§€ āĻ­ā§‡āĻ•ā§āĻŸāĻ°ā§‡āĻ° āĻĒāĻŖā§āĻ¯ āĻĢāĻžāĻ‚āĻļāĻ¨ā§‡āĻ° āĻ¸āĻ‚āĻœā§āĻžāĻž āĻ¸āĻš āĻāĻ•āĻŸāĻŋ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ

āĻŦāĻžāĻ¸ā§āĻ¤āĻŦ-āĻŦāĻŋāĻļā§āĻŦā§‡āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ¯āĻŧ, āĻ¸āĻŽāĻ—ā§āĻ° āĻšā§‡āĻ¸āĻŋāĻ¯āĻŧāĻžāĻ¨ āĻŽā§āĻ¯āĻžāĻŸā§āĻ°āĻŋāĻ•ā§āĻ¸ āĻ•āĻŽā§āĻĒāĻŋāĻ‰āĻŸāĻŋāĻ‚ āĻāĻŦāĻ‚ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ‰āĻ˛ā§āĻ˛ā§‡āĻ–āĻ¯ā§‹āĻ—ā§āĻ¯ āĻ¸āĻŽāĻ¯āĻŧ āĻāĻŦāĻ‚ āĻŽā§‡āĻŽāĻ°āĻŋ āĻ¸āĻ‚āĻ¸ā§āĻĨāĻžāĻ¨ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ āĻāĻ‡ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, āĻšā§‡āĻ¸āĻŋāĻ¯āĻŧāĻžāĻ¨ āĻŽā§āĻ¯āĻžāĻŸā§āĻ°āĻŋāĻ•ā§āĻ¸ āĻ¨āĻŋāĻœā§‡āĻ‡ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ°āĻžāĻ° āĻ•ā§‹āĻ¨ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻ¨ā§‡āĻ‡, āĻ•āĻžāĻ°āĻŖ āĻ¨ā§āĻ¯ā§‚āĻ¨āĻ¤āĻŽāĻ•āĻ°āĻŖ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻ•ā§‡āĻŦāĻ˛āĻŽāĻžāĻ¤ā§āĻ° āĻšā§‡āĻ¸āĻŋāĻ¯āĻŧāĻžāĻ¨ā§‡āĻ° āĻ—ā§āĻŖāĻĢāĻ˛ā§‡āĻ° āĻ¸āĻŽāĻžāĻ¨ āĻāĻ•āĻŸāĻŋ āĻ­ā§‡āĻ•ā§āĻŸāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻ¯āĻžāĻ° āĻ¸āĻžāĻĨā§‡ āĻ…āĻ¨ā§āĻ¯ āĻ†āĻ°āĻŦāĻŋāĻŸā§āĻ°āĻžāĻ°āĻŋ āĻ­ā§‡āĻ•ā§āĻŸāĻ°āĨ¤ āĻ¸ā§āĻ¤āĻ°āĻžāĻ‚, āĻāĻ•āĻŸāĻŋ āĻ—āĻŖāĻ¨āĻžāĻ—āĻ¤ āĻĻā§ƒāĻˇā§āĻŸāĻŋāĻ•ā§‹āĻŖ āĻĨā§‡āĻ•ā§‡, āĻ…āĻŦāĻŋāĻ˛āĻŽā§āĻŦā§‡ āĻāĻ•āĻŸāĻŋ āĻĢāĻžāĻ‚āĻļāĻ¨āĻ•ā§‡ āĻ¸āĻ‚āĻœā§āĻžāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻ•āĻ°āĻž āĻ…āĻ¨ā§‡āĻ• āĻŦā§‡āĻļāĻŋ āĻĒāĻ›āĻ¨ā§āĻĻāĻ¨ā§€āĻ¯āĻŧ āĻ¯ā§‡āĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻŦāĻŋāĻšāĻžāĻ°ā§‡ āĻ­ā§‡āĻ•ā§āĻŸāĻ°ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻšā§‡āĻ¸āĻŋāĻ¯āĻŧāĻžāĻ¨ā§‡āĻ° āĻ—ā§āĻŖāĻĢāĻ˛ā§‡āĻ° āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°ā§‡āĨ¤

āĻšā§‡āĻ¸ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻŦāĻŋāĻŦā§‡āĻšāĻ¨āĻž āĻ•āĻ°ā§āĻ¨, āĻ¯āĻž āĻĒā§āĻ°āĻĨāĻŽ āĻ†āĻ°ā§āĻ—ā§āĻŽā§‡āĻ¨ā§āĻŸ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻŽāĻŋāĻ¨āĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻ¨ āĻ­ā§‡āĻ•ā§āĻŸāĻ° āĻāĻŦāĻ‚ āĻĻā§āĻŦāĻŋāĻ¤ā§€āĻ¯āĻŧ āĻ†āĻ°ā§āĻ—ā§āĻŽā§‡āĻ¨ā§āĻŸ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻŦāĻŋāĻšāĻžāĻ°ā§€ āĻ­ā§‡āĻ•ā§āĻŸāĻ° āĻ¨ā§‡āĻ¯āĻŧ (āĻĢāĻžāĻ‚āĻļāĻ¨ā§‡āĻ° āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ†āĻ°ā§āĻ—ā§āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ›ā§‹āĻŸ āĻ•āĻ°āĻž āĻšāĻŦā§‡)āĨ¤ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻŦāĻŋāĻšāĻžāĻ°ā§‡ āĻ­ā§‡āĻ•ā§āĻŸāĻ° āĻĻāĻŋāĻ¯āĻŧā§‡ āĻ°ā§‹āĻœā§‡āĻ¨āĻŦā§āĻ°āĻ• āĻĢāĻžāĻ‚āĻļāĻ¨ā§‡āĻ° āĻšā§‡āĻ¸āĻŋāĻ¯āĻŧāĻžāĻ¨ā§‡āĻ° āĻ—ā§āĻŖāĻĢāĻ˛ āĻ—āĻŖāĻ¨āĻž āĻ•āĻ°āĻž āĻ–ā§āĻŦ āĻ•āĻ āĻŋāĻ¨ āĻ¨āĻ¯āĻŧāĨ¤ āĻ¯āĻĻāĻŋ p āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻŦāĻŋāĻšāĻžāĻ°ā§‡ āĻ­ā§‡āĻ•ā§āĻŸāĻ°, āĻ¤āĻžāĻ°āĻĒāĻ° āĻĒāĻŖā§āĻ¯ SciPy, āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻžāĻ¨ āĻĻā§‡āĻ–āĻ¤ā§‡:

SciPy, āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻžāĻ¨

āĻ¯ā§‡ āĻĢāĻžāĻ‚āĻļāĻ¨āĻŸāĻŋ āĻšā§‡āĻ¸āĻŋāĻ¯āĻŧāĻžāĻ¨ā§‡āĻ° āĻ—ā§āĻŖāĻĢāĻ˛ āĻ—āĻŖāĻ¨āĻž āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻŦāĻŋāĻšāĻžāĻ°ā§€ āĻ­ā§‡āĻ•ā§āĻŸāĻ°āĻ•ā§‡ āĻŽāĻŋāĻ¨āĻŋāĻŽāĻžāĻ‡āĻœ āĻĢāĻžāĻ‚āĻļāĻ¨ā§‡ āĻšā§‡āĻ¸āĻ¸ā§āĻĒ āĻ†āĻ°ā§āĻ—ā§āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻ° āĻŽāĻžāĻ¨ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻĒāĻžāĻ¸ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ:

def rosen_hess_p(x, p):
    x = np.asarray(x)
    Hp = np.zeros_like(x)
    Hp[0] = (1200*x[0]**2 - 400*x[1] + 2)*p[0] - 400*x[0]*p[1]
    Hp[1:-1] = -400*x[:-2]*p[:-2]+(202+1200*x[1:-1]**2-400*x[2:])*p[1:-1] 
    -400*x[1:-1]*p[2:]
    Hp[-1] = -400*x[-2]*p[-2] + 200*p[-1]
    return Hp

res = minimize(rosen, x0, method='Newton-CG',
               jac=rosen_der, hessp=rosen_hess_p,
               options={'xtol': 1e-8, 'disp': True})

Optimization terminated successfully.
         Current function value: 0.000000
         Iterations: 24
         Function evaluations: 33
         Gradient evaluations: 56
         Hessian evaluations: 66

āĻ•āĻ¨āĻœā§āĻ—ā§‡āĻŸ āĻ—ā§āĻ°ā§‡āĻĄāĻŋāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻŸā§āĻ°āĻžāĻ¸ā§āĻŸ āĻ…āĻžā§āĻšāĻ˛ āĻ…ā§āĻ¯āĻžāĻ˛āĻ—āĻ°āĻŋāĻĻāĻŽ (āĻ¨āĻŋāĻ‰āĻŸāĻ¨)

āĻšā§‡āĻ¸āĻŋāĻ¯āĻŧāĻžāĻ¨ āĻŽā§āĻ¯āĻžāĻŸā§āĻ°āĻŋāĻ•ā§āĻ¸ā§‡āĻ° āĻĻā§āĻ°ā§āĻŦāĻ˛ āĻ•āĻ¨ā§āĻĄāĻŋāĻļāĻ¨āĻŋāĻ‚ āĻāĻŦāĻ‚ āĻ­ā§āĻ˛ āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ā§‡āĻ° āĻĻāĻŋāĻ•āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļ āĻ¨āĻŋāĻ‰āĻŸāĻ¨ā§‡āĻ° āĻ•āĻ¨āĻœā§āĻ—ā§‡āĻŸ āĻ—ā§āĻ°ā§‡āĻĄāĻŋāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻ…ā§āĻ¯āĻžāĻ˛āĻ—āĻ°āĻŋāĻĻāĻŽāĻ•ā§‡ āĻ…āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ° āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ āĻāĻ‡ āĻ§āĻ°āĻ¨ā§‡āĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, āĻ…āĻ—ā§āĻ°āĻžāĻ§āĻŋāĻ•āĻžāĻ° āĻĻā§‡āĻ“āĻ¯āĻŧāĻž āĻšāĻ¯āĻŧ āĻŦāĻŋāĻļā§āĻŦāĻžāĻ¸ āĻ…āĻžā§āĻšāĻ˛ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ (āĻŸā§āĻ°āĻžāĻ¸ā§āĻŸ-āĻ…āĻžā§āĻšāĻ˛) āĻ¸āĻ‚āĻ¯ā§‹āĻœāĻŋāĻ¤ āĻ¨āĻŋāĻ‰āĻŸāĻ¨ āĻ—ā§āĻ°ā§‡āĻĄāĻŋāĻ¯āĻŧā§‡āĻ¨ā§āĻŸāĨ¤

āĻšā§‡āĻ¸āĻŋāĻ¯āĻŧāĻžāĻ¨ āĻŽā§āĻ¯āĻžāĻŸā§āĻ°āĻŋāĻ•ā§āĻ¸ā§‡āĻ° āĻ¸āĻ‚āĻœā§āĻžāĻž āĻ¸āĻš āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ:

res = minimize(rosen, x0, method='trust-ncg',
               jac=rosen_der, hess=rosen_hess,
               options={'gtol': 1e-8, 'disp': True})
print(res.x)

Optimization terminated successfully.
         Current function value: 0.000000
         Iterations: 20
         Function evaluations: 21
         Gradient evaluations: 20
         Hessian evaluations: 19
[1. 1. 1. 1. 1.]

āĻšā§‡āĻ¸āĻŋāĻ¯āĻŧāĻžāĻ¨ āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻŦāĻŋāĻšāĻžāĻ°ā§€ āĻ­ā§‡āĻ•ā§āĻŸāĻ°ā§‡āĻ° āĻĒāĻŖā§āĻ¯ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻ¸āĻš āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ:

res = minimize(rosen, x0, method='trust-ncg', 
                jac=rosen_der, hessp=rosen_hess_p, 
                options={'gtol': 1e-8, 'disp': True})
print(res.x)

Optimization terminated successfully.
         Current function value: 0.000000
         Iterations: 20
         Function evaluations: 21
         Gradient evaluations: 20
         Hessian evaluations: 0
[1. 1. 1. 1. 1.]

āĻ•ā§āĻ°āĻŋāĻ˛ā§‹āĻ­ āĻŸāĻžāĻ‡āĻĒ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ

āĻŸā§āĻ°āĻžāĻ¸ā§āĻŸ-āĻāĻ¨āĻ¸āĻŋāĻœāĻŋ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻŽāĻ¤ā§‹, āĻ•ā§āĻ°āĻŋāĻ˛ā§‹āĻ­-āĻŸāĻžāĻ‡āĻĒ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ—ā§āĻ˛āĻŋ āĻŦāĻĄāĻŧ āĻ†āĻ•āĻžāĻ°ā§‡āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ‰āĻĒāĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻžāĻ°āĻŖ āĻ¤āĻžāĻ°āĻž āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻŽā§āĻ¯āĻžāĻŸā§āĻ°āĻŋāĻ•ā§āĻ¸-āĻ­ā§‡āĻ•ā§āĻŸāĻ° āĻĒāĻŖā§āĻ¯ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡āĨ¤ āĻ¤āĻžāĻĻā§‡āĻ° āĻ¸āĻžāĻ°āĻŽāĻ°ā§āĻŽ āĻšāĻ˛ āĻāĻ•āĻŸāĻŋ āĻ†āĻ¤ā§āĻŽāĻŦāĻŋāĻļā§āĻŦāĻžāĻ¸ā§‡āĻ° āĻ…āĻžā§āĻšāĻ˛ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻ•āĻ°āĻž āĻ¯āĻž āĻāĻ•āĻŸāĻŋ āĻ•āĻžāĻŸāĻž āĻ•ā§āĻ°āĻŋāĻ˛ā§‹āĻ­ āĻ¸āĻžāĻŦāĻ¸ā§āĻĒā§‡āĻ¸ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¸ā§€āĻŽāĻžāĻŦāĻĻā§āĻ§āĨ¤ āĻ…āĻ¨āĻŋāĻļā§āĻšāĻŋāĻ¤ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ—ā§āĻ˛āĻŋāĻ° āĻœāĻ¨ā§āĻ¯, āĻāĻ‡ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ­āĻžāĻ˛, āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻāĻŸāĻŋ āĻŦāĻŋāĻļā§āĻŦāĻžāĻ¸-āĻāĻ¨āĻ¸āĻŋāĻœāĻŋ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻ¤ā§āĻ˛āĻ¨āĻžāĻ¯āĻŧ, āĻĒā§āĻ°āĻ¤āĻŋ āĻ¸āĻžāĻŦ-āĻĒā§āĻ°āĻŦāĻ˛ā§‡āĻŽ āĻĒā§āĻ°āĻ¤āĻŋ āĻŽā§āĻ¯āĻžāĻŸā§āĻ°āĻŋāĻ•ā§āĻ¸-āĻ­ā§‡āĻ•ā§āĻŸāĻ° āĻĒāĻŖā§āĻ¯ā§‡āĻ° āĻ›ā§‹āĻŸ āĻ¸āĻ‚āĻ–ā§āĻ¯āĻžāĻ° āĻ•āĻžāĻ°āĻŖā§‡ āĻ¨āĻ¨āĻ˛āĻžāĻ‡āĻ¨āĻžāĻ° āĻĒā§āĻ¨āĻ°āĻžāĻŦā§ƒāĻ¤ā§āĻ¤āĻŋāĻ° āĻāĻ•āĻŸāĻŋ āĻ›ā§‹āĻŸ āĻ¸āĻ‚āĻ–ā§āĻ¯āĻ• āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡āĨ¤ āĻ‰āĻĒāĻ°āĻ¨ā§āĻ¤ā§, āĻŸā§āĻ°āĻžāĻ¸ā§āĻŸ-āĻāĻ¨āĻ¸āĻŋāĻœāĻŋ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻšā§‡āĻ¯āĻŧā§‡ āĻĻā§āĻŦāĻŋāĻ˜āĻžāĻ¤ āĻ‰āĻĒ-āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ° āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻ†āĻ°āĻ“ āĻ¸āĻ āĻŋāĻ•āĻ­āĻžāĻŦā§‡ āĻĒāĻžāĻ“āĻ¯āĻŧāĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤
āĻšā§‡āĻ¸āĻŋāĻ¯āĻŧāĻžāĻ¨ āĻŽā§āĻ¯āĻžāĻŸā§āĻ°āĻŋāĻ•ā§āĻ¸ā§‡āĻ° āĻ¸āĻ‚āĻœā§āĻžāĻž āĻ¸āĻš āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ:

res = minimize(rosen, x0, method='trust-krylov',
               jac=rosen_der, hess=rosen_hess,
               options={'gtol': 1e-8, 'disp': True})

Optimization terminated successfully.
         Current function value: 0.000000
         Iterations: 19
         Function evaluations: 20
         Gradient evaluations: 20
         Hessian evaluations: 18

print(res.x)

    [1. 1. 1. 1. 1.]

āĻšā§‡āĻ¸āĻŋāĻ¯āĻŧāĻžāĻ¨ āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻŦāĻŋāĻšāĻžāĻ°ā§€ āĻ­ā§‡āĻ•ā§āĻŸāĻ°ā§‡āĻ° āĻĒāĻŖā§āĻ¯ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻ¸āĻš āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ:

res = minimize(rosen, x0, method='trust-krylov',
               jac=rosen_der, hessp=rosen_hess_p,
               options={'gtol': 1e-8, 'disp': True})

Optimization terminated successfully.
         Current function value: 0.000000
         Iterations: 19
         Function evaluations: 20
         Gradient evaluations: 20
         Hessian evaluations: 0

print(res.x)

    [1. 1. 1. 1. 1.]

āĻ†āĻ¤ā§āĻŽāĻŦāĻŋāĻļā§āĻŦāĻžāĻ¸ āĻ…āĻžā§āĻšāĻ˛ā§‡ āĻ†āĻ¨ā§āĻŽāĻžāĻ¨āĻŋāĻ• āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ…ā§āĻ¯āĻžāĻ˛āĻ—āĻ°āĻŋāĻĻāĻŽ

āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ (āĻ¨āĻŋāĻ‰āĻŸāĻ¨-āĻ¸āĻŋāĻœāĻŋ, āĻŸā§āĻ°āĻžāĻ¸ā§āĻŸ-āĻāĻ¨āĻ¸āĻŋāĻœāĻŋ āĻāĻŦāĻ‚ āĻŸā§āĻ°āĻžāĻ¸ā§āĻŸ-āĻ•ā§āĻ°āĻŋāĻ˛āĻ­) āĻŦāĻĄāĻŧ āĻ†āĻ•āĻžāĻ°ā§‡āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ‰āĻĒāĻ¯ā§āĻ•ā§āĻ¤ (āĻšāĻžāĻœāĻžāĻ° āĻšāĻžāĻœāĻžāĻ° āĻ­ā§‡āĻ°āĻŋāĻ¯āĻŧā§‡āĻŦāĻ˛ āĻ¸āĻš)āĨ¤ āĻāĻŸāĻŋ āĻāĻ‡ āĻ•āĻžāĻ°āĻŖā§‡ āĻ¯ā§‡ āĻ…āĻ¨ā§āĻ¤āĻ°ā§āĻ¨āĻŋāĻšāĻŋāĻ¤ āĻ•āĻ¨āĻœā§āĻ—ā§‡āĻŸ āĻ—ā§āĻ°ā§‡āĻĄāĻŋāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻ…ā§āĻ¯āĻžāĻ˛āĻ—āĻ°āĻŋāĻĻāĻŽ āĻŦāĻŋāĻĒāĻ°ā§€āĻ¤ āĻšā§‡āĻ¸āĻŋāĻ¯āĻŧāĻžāĻ¨ āĻŽā§āĻ¯āĻžāĻŸā§āĻ°āĻŋāĻ•ā§āĻ¸ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ†āĻ¨ā§āĻŽāĻžāĻ¨āĻŋāĻ• āĻ¸āĻ‚āĻ•āĻ˛ā§āĻĒ āĻŦā§‹āĻāĻžāĻ¯āĻŧāĨ¤ āĻšā§‡āĻ¸āĻŋāĻ¯āĻŧāĻžāĻ¨ā§‡āĻ° āĻ¸ā§āĻ¸ā§āĻĒāĻˇā§āĻŸ āĻĒā§āĻ°āĻ¸āĻžāĻ°āĻŖ āĻ›āĻžāĻĄāĻŧāĻžāĻ‡ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨āĻŸāĻŋ āĻĒā§āĻ¨āĻ°āĻžāĻŦā§ƒāĻ¤ā§āĻ¤āĻŋāĻŽā§‚āĻ˛āĻ•āĻ­āĻžāĻŦā§‡ āĻĒāĻžāĻ“āĻ¯āĻŧāĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤ āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻ•āĻŸāĻŋ āĻšā§‡āĻ¸āĻŋāĻ¯āĻŧāĻžāĻ¨ āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻŦāĻŋāĻšāĻžāĻ°ā§€ āĻ­ā§‡āĻ•ā§āĻŸāĻ°ā§‡āĻ° āĻĒāĻŖā§āĻ¯ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻ¸āĻ‚āĻœā§āĻžāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡, āĻāĻ‡ āĻ…ā§āĻ¯āĻžāĻ˛āĻ—āĻ°āĻŋāĻĻāĻŽāĻŸāĻŋ āĻŦāĻŋāĻļā§‡āĻˇ āĻ•āĻ°ā§‡ āĻ¸ā§āĻĒāĻžāĻ°āĻ¸ (āĻŦā§āĻ¯āĻžāĻ¨ā§āĻĄ āĻ¤āĻŋāĻ°ā§āĻ¯āĻ•) āĻŽā§āĻ¯āĻžāĻŸā§āĻ°āĻŋāĻ•ā§āĻ¸ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ­āĻžāĻ˛āĨ¤ āĻāĻŸāĻŋ āĻ•āĻŽ āĻŽā§‡āĻŽāĻ°āĻŋ āĻ–āĻ°āĻš āĻāĻŦāĻ‚ āĻ‰āĻ˛ā§āĻ˛ā§‡āĻ–āĻ¯ā§‹āĻ—ā§āĻ¯ āĻ¸āĻŽāĻ¯āĻŧ āĻ¸āĻžāĻļā§āĻ°āĻ¯āĻŧ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°ā§‡āĨ¤

āĻŽāĻžāĻāĻžāĻ°āĻŋ āĻ†āĻ•āĻžāĻ°ā§‡āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻšā§‡āĻ¸āĻŋāĻ¯āĻŧāĻžāĻ¨ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻāĻŦāĻ‚ āĻĢā§āĻ¯āĻžāĻ•ā§āĻŸāĻ°āĻŋāĻ‚āĻ¯āĻŧā§‡āĻ° āĻ–āĻ°āĻš āĻ—ā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻ¨āĻ¯āĻŧāĨ¤ āĻāĻ° āĻŽāĻžāĻ¨ā§‡ āĻšāĻ˛ āĻ¯ā§‡ āĻŸā§āĻ°āĻžāĻ¸ā§āĻŸ āĻ…āĻžā§āĻšāĻ˛ā§‡āĻ° āĻ‰āĻĒ-āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ—ā§āĻ˛āĻŋ āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻ āĻŋāĻ•āĻ­āĻžāĻŦā§‡ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻ•āĻ°ā§‡ āĻ•āĻŽ āĻĒā§āĻ¨āĻ°āĻžāĻŦā§ƒāĻ¤ā§āĻ¤āĻŋāĻ¤ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻĒāĻžāĻ“āĻ¯āĻŧāĻž āĻ¸āĻŽā§āĻ­āĻŦāĨ¤ āĻāĻŸāĻŋ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻ•āĻŋāĻ›ā§ āĻ…āĻ°ā§ˆāĻ–āĻŋāĻ• āĻ¸āĻŽā§€āĻ•āĻ°āĻŖ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻĻā§āĻŦāĻŋāĻ˜āĻžāĻ¤ āĻ‰āĻĒāĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĒā§āĻ¨āĻ°āĻžāĻŦā§ƒāĻ¤ā§āĻ¤āĻŋāĻŽā§‚āĻ˛āĻ•āĻ­āĻžāĻŦā§‡ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻāĻ‡ āĻœāĻžāĻ¤ā§€āĻ¯āĻŧ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻšā§‡āĻ¸āĻŋāĻ¯āĻŧāĻžāĻ¨ āĻŽā§āĻ¯āĻžāĻŸā§āĻ°āĻŋāĻ•ā§āĻ¸ā§‡āĻ° 3 āĻŦāĻž 4āĻŸāĻŋ āĻšā§‹āĻ˛ā§‡āĻ¸ā§āĻ•āĻŋ āĻĒāĻšāĻ¨ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨āĨ¤ āĻĢāĻ˛āĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻŸāĻŋ āĻ•āĻŽ āĻĒā§āĻ¨āĻ°āĻžāĻŦā§ƒāĻ¤ā§āĻ¤āĻŋāĻ¤ā§‡ āĻāĻ•āĻ¤ā§āĻ°āĻŋāĻ¤ āĻšāĻ¯āĻŧ āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻ†āĻ¤ā§āĻŽāĻŦāĻŋāĻļā§āĻŦāĻžāĻ¸ āĻ…āĻžā§āĻšāĻ˛ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻ¤ā§āĻ˛āĻ¨āĻžāĻ¯āĻŧ āĻ•āĻŽ āĻ‰āĻĻā§āĻĻā§‡āĻļā§āĻ¯āĻŽā§‚āĻ˛āĻ• āĻĢāĻžāĻ‚āĻļāĻ¨ āĻ—āĻŖāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻšāĻ¯āĻŧāĨ¤ āĻāĻ‡ āĻ…ā§āĻ¯āĻžāĻ˛āĻ—āĻ°āĻŋāĻĻāĻŽ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻšā§‡āĻ¸āĻŋāĻ¯āĻŧāĻžāĻ¨ āĻŽā§āĻ¯āĻžāĻŸā§āĻ°āĻŋāĻ•ā§āĻ¸ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻšā§‡āĻ¸āĻŋāĻ¯āĻŧāĻžāĻ¨ā§‡āĻ° āĻĒāĻŖā§āĻ¯ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻŦāĻŋāĻšāĻžāĻ°ā§€ āĻ­ā§‡āĻ•ā§āĻŸāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ•āĻ°ā§‡ āĻ¨āĻžāĨ¤

āĻ°ā§‹āĻœā§‡āĻ¨āĻŦā§āĻ°āĻ• āĻĢāĻžāĻ‚āĻļāĻ¨ āĻŽāĻŋāĻ¨āĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻ¨ āĻ¸āĻš āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ:

res = minimize(rosen, x0, method='trust-exact',
               jac=rosen_der, hess=rosen_hess,
               options={'gtol': 1e-8, 'disp': True})
res.x

Optimization terminated successfully.
         Current function value: 0.000000
         Iterations: 13
         Function evaluations: 14
         Gradient evaluations: 13
         Hessian evaluations: 14

array([1., 1., 1., 1., 1.])

āĻ†āĻŽāĻ°āĻž āĻ¸āĻŽā§āĻ­āĻŦāĻ¤ āĻ¸ā§‡āĻ–āĻžāĻ¨ā§‡ āĻĨāĻžāĻŽāĻŦ. āĻĒāĻ°ā§‡āĻ° āĻĒā§āĻ°āĻŦāĻ¨ā§āĻ§ā§‡ āĻ†āĻŽāĻŋ āĻļāĻ°ā§āĻ¤āĻ¸āĻžāĻĒā§‡āĻ•ā§āĻˇ āĻŽāĻŋāĻ¨āĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻ¨, āĻ†āĻ¨ā§āĻŽāĻžāĻ¨āĻŋāĻ• āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ā§‡ āĻ¨ā§āĻ¯ā§‚āĻ¨āĻ¤āĻŽāĻ•āĻ°āĻŖā§‡āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ—, āĻāĻ•āĻŸāĻŋ āĻ­ā§‡āĻ°āĻŋāĻ¯āĻŧā§‡āĻŦāĻ˛ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻŽāĻŋāĻ¨āĻŋāĻŽāĻžāĻ‡āĻœ āĻ•āĻ°āĻž, āĻ†āĻ°āĻŦāĻŋāĻŸā§āĻ°āĻžāĻ°āĻŋ āĻŽāĻŋāĻ¨āĻŋāĻŽāĻžāĻ‡āĻœāĻžāĻ° āĻāĻŦāĻ‚ scipy.optimize āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ¸āĻŽā§€āĻ•āĻ°āĻŖā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡āĻ° āĻļāĻŋāĻ•āĻĄāĻŧ āĻ–ā§āĻāĻœā§‡ āĻŦā§‡āĻ° āĻ•āĻ°āĻžāĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧā§‡ āĻ¸āĻŦāĻšā§‡āĻ¯āĻŧā§‡ āĻ†āĻ•āĻ°ā§āĻˇāĻŖā§€āĻ¯āĻŧ āĻŦāĻŋāĻˇāĻ¯āĻŧāĻ—ā§āĻ˛āĻŋ āĻŦāĻ˛āĻžāĻ° āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°āĻŦāĨ¤ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻœ

āĻ‰āĻ¤ā§āĻ¸: https://docs.scipy.org/doc/scipy/reference/

āĻ‰āĻ¤ā§āĻ¸: www.habr.com

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨