рдХрдИ рдЪрд░ рдореЗрдВ рдмрд╣реБрдкрдж рдФрд░ рд╣рд╛рд╕реНрдХреЗрд▓ рдкрд░ рдмреБрдЪрдмрд░реНрдЧрд░ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВрдиреЗ рд╣рд╛рд╕реНрдХреЗрд▓ рднрд╛рд╖рд╛ рдореЗрдВ рдЧреЙрд░реНрдирд░ рдмреЗрд╕ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдФрд░ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдгреЛрдВ рдХреЛ рдЙрдкрдпреЛрдЧреА рдкрд╛рдПрдЧрд╛ред рдореИрдВ рд╕рд┐рджреНрдзрд╛рдВрдд рдореЗрдВ рдирд╣реАрдВ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдкрд╛рдардХ рдХреЛ рдПрдХ рдмрд╣реБрдкрдж рдХреА рдЕрдВрдЧреВрдареА, рдПрдХ рдЕрдВрдЧреВрдареА рдХреЗ рдЖрджрд░реНрд╢ рдФрд░ рдПрдХ рдЖрджрд░реНрд╢ рдХреЗ рдЖрдзрд╛рд░ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВ рдЖрдкрдХреЛ рдЖрдИрд╕реАрдПрдордПрдордУ рдХреА рдЗрд╕ рдкреБрд╕реНрддрдХ рдХреЛ рдкрдврд╝рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ, рдЗрд╕рдореЗрдВ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд▓реЗрдЦ рдХрд╛ рдореБрдЦреНрдп рд╡рд┐рд╖рдп рдХрдИ рдЪрд░реЛрдВ рдХреЗ рдмрд╣реБрдкрдж рдЫрд▓реНрд▓реЛрдВ рдХреЗ рдЖрджрд░реНрд╢реЛрдВ рдХрд╛ рдЧреЙрд░реНрдирд░ рдмреЗрд╕ рд╣реИред рдмрд╣реБрдкрдж рд╕рдореАрдХрд░рдгреЛрдВ рдХреА рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рддреЗ рд╕рдордп рдпрд╣ рдЕрд╡рдзрд╛рд░рдгрд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИред рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ, рдореИрдВ рдЙрджрд╛рд╣рд░рдг рдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдЗрди рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЗрд╕ рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд░рд┐рдгрд╛рдо рдХрдИ рдЪрд░ рдореЗрдВ рд╕рдореАрдХрд░рдгреЛрдВ рдХреЗ рдмрд╣реБрдкрдж рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдЖрдк рдЙрдЪреНрдЪ рдмреАрдЬрдЧрдгрд┐рдд рдпрд╛ рд╣рд╛рд╕реНрдХреЗрд▓ рдХреЗ рд╕рд╛рде рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдореИрдВ рдЖрдкрдХреЛ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдкрдврд╝рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЗрди рд╕рдорд╛рди рд╕рдорд╛рдзрд╛рди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЫрд╛рддреНрд░ рдХреЗ рд▓рд┐рдП рд╕реБрд▓рдн рд╕реНрддрд░ рдкрд░ рд╕рдордЭрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдкреВрд░реЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рд╕рд╣реА рдард╣рд░рд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдЖрдк рдЙрдЪреНрдЪ рдмреАрдЬрдЧрдгрд┐рдд рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рднреА рдЪреАрдЬреЛрдВ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╕рдореАрдХрд░рдгреЛрдВ рдХреЗ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рд╕реАрдЦ рд╕рдХрддреЗ рд╣реИрдВред

рдпрджрд┐ рдЖрдк рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛, рдмрд┐рд▓реНрд▓реА рдХреЗ рдиреАрдЪреЗред

рдореИрдВ рдЪрд┐рддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдорд╛рдлреА рдорд╛рдБрдЧрддрд╛ рд╣реВрдБ - рдпрд╣ рд▓реЗрдЯреЗрдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреИрд╕реЗ рд╕рдордЭ style="width:...;height=...;" рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП style="width:...;height=...;" рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдпрджрд┐ рдЖрдк рдореБрдЭреЗ рдПрдХ рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рдмрддрд╛рддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдХрд░реВрдБрдЧрд╛ред

1 рдмреАрдЬрдЧрдгрд┐рдд рд╕реЗ рд╕рдмрд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдЕрд╡рдзрд╛рд░рдгрд╛рдПрдВ


рдЬрд┐рди рддрддреНрд╡реЛрдВ рдХреЗ рд╕реЗрдЯ рдкрд░ рдЖрдк рджреЛ рдСрдкрд░реЗрд╢рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - "рдЬреЛрдбрд╝" рдФрд░ "рдЧреБрдгрди", рдирд┐рдпрдореЛрдВ рдХреЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реЗрдЯ (рд╕реНрд╡рдпрдВрд╕рд┐рджреНрдз) рдХреЗ рдЕрдиреБрд░реВрдк, рдмреАрдЬрдЧрдгрд┐рдд рдореЗрдВ рдЫрд▓реНрд▓реЗ рдХрд╣рд▓рд╛рддреЗ рд╣реИрдВред рдХрдИ рдЪрд░реЛрдВ рдореЗрдВ рдмрд╣реБрдкрдж рдЬрд┐рдирдХреЗ рдЧреБрдгрд╛рдВрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрдЦреНрдпрд╛рдПрдВ рд╣реИрдВ, рдЬрд┐рдирдХреЗ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реВрдкрд┐рдд рдПрдХ рд╡рд▓рдп рд╣реЛрддрд╛ рд╣реИ , рдмрд╣реБрдкрдж рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдФрд░ рдЧреБрдгрд╛ рдХреЗ рд╕рд╛рдзрд╛рд░рдг рд╕реНрдХреВрд▓ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ред рдПрдХ рдЕрдВрдЧреВрдареА рдХрд╛ рдПрдХ рдЖрджрд░реНрд╢ рдЗрд╕рдХрд╛ рдПрдХ рд╕рдмрд╕реЗрдЯ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рджреЛ рддрддреНрд╡реЛрдВ рдХрд╛ рдЕрдВрддрд░ рдирд┐рд╣рд┐рдд рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдХрд┐рд╕реА рднреА рддрддреНрд╡ рдХрд╛ рдЙрддреНрдкрд╛рдж рдФрд░ рдЕрдВрдЧреВрдареА рдХрд╛ рдПрдХ рдордирдорд╛рдирд╛ рддрддреНрд╡ рдЗрд╕ рд╕рдмрд╕реЗрдЯ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИред рдПрдХ рдЖрджрд░реНрд╢ рдХрд╛ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдкреВрд░реНрдгрд╛рдВрдХ рдХреА рдЕрдВрдЧреВрдареА рдореЗрдВ рдПрдХ рдЖрджрд░реНрд╢ рдХреЗ рд░реВрдк рдореЗрдВ рдХрдИ рдкрд╛рдВрдЪ рдирдВрдмрд░реЛрдВ рдХрд╛ рд╕реЗрдЯ рд╣реИред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдЖрджрд░реНрд╢ рд╣реИред рдЕрдЧрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛, рддреЛ рдЖрдЧреЗ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрддреАред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╣рдо рдмрд╣реБрдкрдж рд░рд┐рдВрдЧ рдореЗрдВ рдХреЗрд╡рд▓ рдЖрджрд░реНрд╢реЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред рдмрд╣реБрдкрддреНрдиреА рдХреЗ рдХреБрдЫ рдкрд░рд┐рдорд┐рдд рд╕реЗрдЯ рдЖрджрд░реНрд╢ рдХрд╛ рдЖрдзрд╛рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрджрд┐ рдЖрджрд░реНрд╢ рд╕реЗ рдХрд┐рд╕реА рдмрд╣реБрдкрдж рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд╣рд╛рдБ - рдХреБрдЫ рдмрд╣реБрдкрджред рдЗрд╕ рддрдереНрдп рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ: ред рд╣рд┐рд▓реНрдмрд░реНрдЯ рдХрд╛ рдЖрдзрд╛рд░ рдкреНрд░рдореЗрдп рдПрдХ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИ - рдХрд┐рд╕реА рднреА рдЖрджрд░реНрд╢ (рдПрдХ рдмрд╣реБрдкрдж рдореЗрдВ) рдХрд╛ рдПрдХ рд╕реАрдорд┐рдд рдЖрдзрд╛рд░ рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдмрд╕ рдЖрджрд░реНрд╢реЛрдВ рдХреЗ рдкрд░рд┐рдорд┐рдд рдард┐рдХрд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдЕрдм рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлреЙрд░реНрдо рдХреЗ рд╕рдореАрдХрд░рдгреЛрдВ рдХреА рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ:



рд╣рдо рдЗрд╕ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдЖрджрд░реНрд╢ рдХреЛ рдЖрджрд░реНрд╢ рдХрд╣рддреЗ рд╣реИрдВ ред рдпрд╣ рдмреАрдЬрдЧрдгрд┐рдд рд╕реЗ рдЬреНрдЮрд╛рдд рд╣реИ рдХрд┐ рдХреЛрдИ рднреА рдмрд╣реБрдкрдж рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рдЭреВрда рдмреЛрд▓ рд░рд╣рд╛ рд╣реИ рдореВрд▓ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдХрд┐рд╕реА рднреА рд╕рдорд╛рдзрд╛рди рдкрд░ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рдЖрдЧреЗ, рдЕрдЧрд░ - рдЖрджрд░реНрд╢ рдХрд╛ рдПрдХ рдФрд░ рдЖрдзрд╛рд░ рддрдм рдкреНрд░рдгрд╛рд▓реА



рдореВрд▓ рдПрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╣реА рд╕рдорд╛рдзрд╛рди рд╣реИред рдЗрд╕ рд╕рдм рд╕реЗ рдпрд╣ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ рдХрд┐ рдпрджрд┐ рд╣рдо рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдЖрджрд░реНрд╢ рдХреЛ рдЦреЛрдЬрдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдореВрд▓ рд╕реЗ рд╕рд░рд▓ рд╣реИ, рддреЛ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд╕реНрд╡рдпрдВ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рд╕рд░рд▓ рд╣реИред

рдЬрд╛рджреБрдИ рд░реВрдк рд╕реЗ, рдРрд╕рд╛ рдЖрдзрд╛рд░ рдореМрдЬреВрдж рд╣реИ - рдЗрд╕реЗ рдЖрджрд░реНрд╢ рдХрд╛ рдЧреНрд░реЛрдмреНрдиреЗрд░ рдЖрдзрд╛рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдпрд╣ рдРрд╕рд╛ рдЖрдзрд╛рд░ рд╣реИ рдХрд┐ рдЖрджрд░реНрд╢ рд╕реЗ рдХрд┐рд╕реА рднреА рдмрд╣реБрдкрдж рдХреЗ рд▓рд┐рдП рд╢реЗрд╖ (рд▓рдЧрднрдЧ рдмрд╛рдж рдореЗрдВ) рдХреЗ рд╕рд╛рде рд╡рд┐рднрд╛рдЬрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдПрдХ рд╢реВрдиреНрдп рд╢реЗрд╖ рд╣реИред рдпрджрд┐ рд╣рдо рдЗрд╕рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХрд╛ рдПрдХ рдмрд╣реБрдкрдж, рдХрдо рд╕реЗ рдХрдо рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдХреЗрд╡рд▓ рдПрдХ рдЪрд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░реЗрдЧрд╛, рдЬреЛ рд╣рдореЗрдВ рдЕрдиреБрдХреНрд░рдорд┐рдХ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рджреНрд╡рд╛рд░рд╛ рд╕рдВрдкреВрд░реНрдг рдкреНрд░рдгрд╛рд▓реА рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред

рдЖрдЦрд┐рд░реА рдЪреАрдЬ рдЬреЛ рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдП рдмрд╣реБрдкрдж рдФрд░ рдХрд╕реМрдЯреА Buchberger рдпреБрдЧрд▓ред рд╣рдо рдореЛрдиреЛрдорд┐рдпрд▓ рдСрд░реНрдбрд░ рдХрд░рдиреЗ рдХреЗ рдХреБрдЫ "рдЕрдЪреНрдЫреЗ" рддрд░реАрдХреЗ рдЪреБрдирддреЗ рд╣реИрдВ (рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП, рдкреБрд╕реНрддрдХ рджреЗрдЦреЗрдВ) рдФрд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реВрдкрд┐рдд рдХрд░реЗрдВ рдмрд╣реБрдкрддреНрдиреА рдХреЗ рд╡рд░рд┐рд╖реНрда рд╢рдмреНрдж (рдЗрд╕ рдЖрджреЗрд╢ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖) рдФрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ - рдореЛрдиреЛрдорд┐рдпрд▓ рдХреЗ рд╕рдмрд╕реЗ рдЫреЛрдЯреЗ рд╕рд╛рдорд╛рдиреНрдп рдХрдИ рдФрд░ ред рддреЛ -рдкреЙрд▓рд┐рдиреЛрдорд┐рдпрд▓ рд╕реЗ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рд░реНрдорд╛рдг рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ:



рд╕рд┐рджреНрдз (рдХрд╕реМрдЯреА) -рдкреЗрдпрд░) рдХрд┐ рдПрдХ рдЖрджрд░реНрд╢ рдХрд╛ рдЖрдзрд╛рд░ рдЙрд╕рдХрд╛ рдЧреЙрдмреНрдиреЗрд░ рдЖрдзрд╛рд░ рд╣реИ рдпрджрд┐ рдФрд░ рдХреЗрд╡рд▓ рдпрджрд┐ - рдЗрд╕рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рднреА рдЬреЛрдбрд╝реА рд╕реЗ рдПрдХ рдмрд╣реБрдкрдж рдПрдХ рд╢реЗрд╖ 0 рджреЗрддрд╛ рд╣реИ рдЬрдм рдПрдХ рдЖрдзрд╛рд░ рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдиреАрдЪреЗ рд╕рдордЭрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛)ред рдпрд╣ рддреБрд░рдВрдд рдЗрд╕ рддрд░рд╣ рдХреЗ рдЖрдзрд╛рд░ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИ:
  1. рдЖрдзрд╛рд░ рдмрд╣реБрдкрдж рдХреА рдкреНрд░рддреНрдпреЗрдХ рдЬреЛрдбрд╝реА рдХреЗ рд▓рд┐рдП, рдЙрдирдХреА рд░рдЪрдирд╛ рдХрд░реЗрдВ -рдкреЙрд▓рд┐рдореЛрдирд┐рдпрд▓ рдФрд░ рдЗрд╕реЗ рд╢реЗрд╖ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВред
  2. рдпрджрд┐ рд╕рднреА рдЕрд╡рд╢реЗрд╖ рд╢реВрдиреНрдп рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИрдВ, рддреЛ рдЧреЙрдмрдиреЗрд░ рдЖрдзрд╛рд░ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рдЕрдиреНрдпрдерд╛, рд╕рднреА рдиреЙрдирдЬрд╝реЗрд░реЛ рдЕрд╡рд╢рд┐рд╖реНрдЯреЛрдВ рдХреЛ рдЖрдзрд╛рд░ рд╕реЗ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЪрд░рдг 1 рдкрд░ рд▓реМрдЯреЗрдВред

рдпрд╣ рдмреБрдЪрдмрд░реНрдЧрд░ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╣реИ - рдЗрд╕ рд▓реЗрдЦ рдХрд╛ рдореБрдЦреНрдп рд╡рд┐рд╖рдпред рдпрд╣ рд╕рдм рдЧрдгрд┐рдд рдХреЗ рд╕рд╛рде рд╣реИ, рдЖрдк рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдкрдХреЛ рдХреБрдЫ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдпрд╛ рдПрдХ рдХрд┐рддрд╛рдм рдХреЛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЖрдЧреЗ рдХреЗ рдХрдерди рдореЗрдВ рдЙрдЪреНрдЪ рдмреАрдЬрдЧрдгрд┐рдд рдХреЗ рдЬреНрдЮрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

2 рд╣рд╛рд╕реНрдХреЗрд▓ рдореЗрдВ рдХрдИ рдЪрд░ рд╕реЗ рдмрд╣реБрдкрдж рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡


рд╣рдо рдореЛрдиреЛрдорд┐рдпрд▓ рд╕реЗ рдмрд╣реБрдкрдж рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рдореЛрдиреЛрдорд┐рдпрд▓ рдХреЗрд╡рд▓ рджреЛ рдЪреАрдЬреЛрдВ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ - рдПрдХ рдЧреБрдгрд╛рдВрдХ рдФрд░ рдЪрд░ рдХреА рдбрд┐рдЧреНрд░реА рдХрд╛ рдПрдХ рд╕реЗрдЯред рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЪрд░ рд╣реИрдВ ред рдФрд░ рдЗрд╕реА рддрд░рд╣ред рдлрд┐рд░ рдореЛрдиреЛрдорд┐рдпрд▓ 1 рдФрд░ рдбрд┐рдЧреНрд░реА рдХрд╛ рдЧреБрдгрд╛рдВрдХ рд╣реИ [2,3,1] , рдФрд░ [2,3,1] - рдЧреБрдгрд╛рдВрдХ 2 рдФрд░ рдбрд┐рдЧреНрд░реА [0,0,3] ред рд╢реВрдиреНрдп рдбрд┐рдЧреНрд░реА рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ! рд╡реЗ рдЕрдиреНрдп рд╕рднреА рддрд░реАрдХреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдХрд┐ рд╕рднреА рдореЛрдиреЛрдорд┐рдпрд▓ (рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░) рдХреА рдбрд┐рдЧреНрд░реА рдХреА рд╕реВрдЪрд┐рдпреЛрдВ рдХреА рд▓рдВрдмрд╛рдИ рд╕рдорд╛рди рд╣реЛред рдпрд╣ рд╣рдорд╛рд░реЗ рдХрд╛рдо рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓ рдХрд░реЗрдЧрд╛ред

рд╣рдореЗрдВ "рдореЛрдиреЛрдорд┐рдпрд▓" рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╡рд░реНрдгрди рдмреАрдЬрдЧрдгрд┐рддреАрдп рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЧреБрдгрд╛рдВрдХ (рдкреНрд░рдХрд╛рд░ " c ") рдФрд░ рдбрд┐рдЧреНрд░реА рдХреА рд╕реВрдЪреА (рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд░ " a ") рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░рддреЗ рд╣реИрдВ:
 data Monom ca = M c [a] deriving (Eq) 

рд╣рдореЗрдВ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдореЛрдиреЛрдорд┐рдпрд▓ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЗрд╕рд▓рд┐рдП рдпрд╣ Ord рдХреНрд▓рд╛рд╕ рдХреЗ рдПрдХ рдЕрд╡рддрд╛рд░ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рдореИрдВ рд╕рд╛рдорд╛рдиреНрдп рд▓реЗрдХреНрд╕рд┐рдХреЛрдЧреНрд░рд╛рдлрд┐рдХ рдЖрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдбрд┐рдЧреНрд░реА рджреНрд╡рд╛рд░рд╛ рдХрд░реВрдБрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдореЛрдиреЛрдорд┐рдпрд▓ рдХреЗ "рдЕрдЪреНрдЫреЗ" рдСрд░реНрдбрд░ рдХреЗ рдирд┐рдпрдореЛрдВ рдХрд╛ рдЕрдиреБрдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реИред рд╣рдо рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП Show рдХреНрд▓рд╛рд╕ рдХрд╛ рдЕрд╡рддрд╛рд░ рднреА рд▓рд┐рдЦреЗрдВрдЧреЗред
 instance (Eq c, Ord a) => Ord (Monom ca) where compare (M _ asl) (M _ asr) = compare asl asr instance (Show a, Show c, Num a, Num c, Eq a, Eq c) => Show (Monom ca) where show (M c as) = (if c == 1 then "" else show c) ++ (intercalate "*" $ map showOne $ (filter (\(p,_) -> p /= 0) $ zip as [1..])) where showOne (p,i) = "x" ++ (show i) ++ (if p == 1 then "" else "^" ++ (show p)) 

show рдлрд╝рдВрдХреНрд╢рди рд╕реНрдорд╛рд░реНрдЯ рд╣реЛрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ: рдпрд╣ рдЧреБрдгрд╛рдВрдХ рдирд╣реАрдВ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдпрджрд┐ рдпрд╣ 1 рд╣реИ, рдФрд░ рдпрд╣ рдбрд┐рдЧреНрд░реА рд╢реВрдиреНрдп рдХреЗ рдЪрд░ рдирд╣реАрдВ рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рдФрд░ рди рд╣реА рдпрд╣ рдЪрд░ рдХреА рдкрд╣рд▓реА рдбрд┐рдЧреНрд░реА рджрд┐рдЦрд╛рддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣:

 *Main> M 2 [0,1] 2x2 *Main> M 1 [2,2] x1^2*x2^2 

рдореИрдВ show рд╕рдордп show рд▓рд┐рдП рд╕рдорд╛рди рдХрд╛рд░реНрдп рд▓рд┐рдЦреВрдВрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ - рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрд┐рд╕реА рдХреЛ рдбрд░рд╛рддрд╛ рд╣реИред zip as [1..] рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП zip as [1..] рдкреНрд░рддреНрдпреЗрдХ рдбрд┐рдЧреНрд░реА рдХреЛ рдЙрд╕рдХреЗ рдЪрд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдЧреЛрдВрдж рдХрд░рддреЗ рд╣реИрдВ, рдлрд┐рд░ filter (
(p _) -> p /= 0)
рд╕рд╛рде filter (
(p _) -> p /= 0)
filter (
(p _) -> p /= 0)
filter (
(p _) -> p /= 0)
рд╢реВрдиреНрдп рдбрд┐рдЧреНрд░реА рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ filter (
(p _) -> p /= 0)
рд╣реИрдВ, рдкреНрд░рддреНрдпреЗрдХ рдЪрд░ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЛ showOne рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдмрджрд▓ showOne рдФрд░ рдЕрдВрдд рдореЗрдВ рд╕рдм рдХреБрдЫ рдПрдХ рд╕рд╛рде рдЧреЛрдВрдж рдХрд░ рджреЗрддреЗ рд╣реИрдВ, рдЧреБрдгрди рдЪрд┐рд╣реНрди рдХреЗ рд╕рд╛рде Data.List рдХрд░рддреЗ рд╣реБрдП, Data.List рд╕реЗ Data.List рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рдЕрдм рд╣рдо рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрд╣реБрдкрдж рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП, рдПрдХ рдирд┐рдпрдорд┐рдд рд╕реВрдЪреА рдкрд░ рдПрдХ рдирдпрд╛ newtype рд░реИрдкрд░ рдЙрдкрдпреБрдХреНрдд рд╣реИ:
 newtype Polynom ca = P [Monom ca] deriving (Eq) instance (Show a, Show c, Num a, Num c, Eq a, Eq c) => Show (Polynom ca) where show (P ms) = intercalate " + " $ map show ms 

рдЗрд╕ рдмрд╛рд░, show рдлрд╝рдВрдХреНрд╢рди рд╕рд░рд▓ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рднреА рдЧрдВрджреЗ рдХрд╛рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореЛрдиреЛрдорд┐рдпрд▓ рдХреЗ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдЫрд┐рдкреЗ рд╣реБрдП рд╣реИрдВред рдпрд╣ рдЗрд╕ рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
 *Main> P [M 1 [3,1], M 1 [2,2], M 1 [1,1]] x1^3*x2 + x1^2*x2^2 + x1*x2 

рд╣рдо рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓рд┐рдП рд╕рд╣рдордд рд╣реИрдВ рдХрд┐ рдЗрд╕ рд╕реВрдЪреА рдореЗрдВ рдореЛрдиреЛрдорд┐рдпрд▓ рд╣рдореЗрд╢рд╛ рдЕрд╡рд░реЛрд╣реА рдХреНрд░рдо рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ ( Ord рдХреЗ рдЕрд╡рддрд╛рд░ рдХреА рд╣рдорд╛рд░реА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдЕрд░реНрде рдореЗрдВ)ред рдЗрд╕рд╕реЗ рдХреБрдЫ рдЪреАрдЬреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рдмрд╣реБрдкрдж рдкрд░ 3 рдСрдкрд░реЗрд╢рди


рд╕рдмрд╕реЗ рд╕рд░рд▓ рдСрдкрд░реЗрд╢рди рдПрд▓рдЯреА рд╣реИрдВ, рд╢реВрдиреНрдп рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдирддрд╛ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдФрд░ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдЧреБрдгрд╛ред рдореЛрдиреЛрдорд┐рдпрд▓ рдХреЗ рдСрд░реНрдбрд░ рдкрд░ рд╣рдорд╛рд░реЗ рд╕рдордЭреМрддреЗ рд╕реЗ рдпрд╣ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ рдХрд┐ рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рдореЛрдиреЛрдорд┐рдпрд▓ рд╣рдореЗрд╢рд╛ рд╕реВрдЪреА рдореЗрдВ рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рдЖрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ head рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдореЛрдиреЛрдорд┐рдпрд▓ рдХреЛ рд╢реВрдиреНрдп рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрджрд┐ рдЗрд╕рдХрд╛ рдЧреБрдгрд╛рдВрдХ рд╢реВрдиреНрдп рд╣реИ, рдФрд░ рдПрдХ рдмрд╣реБрдкрдж рдпрджрд┐ рдЗрд╕рдореЗрдВ рдореЛрдиреЛрдорд┐рдпрд▓ рдирд╣реАрдВ рд╣реИред рдареАрдХ рд╣реИ, рдПрдХ рд╕реНрдерд┐рд░рд╛рдВрдХ рд╕реЗ рдЧреБрдгрд╛ рдХрд░рдирд╛ рдЧреБрдгрд╛рдВрдХ рдХреЛ рдмрджрд▓рддрд╛ рд╣реИ:
 lt :: Polynom ca -> Monom ca lt (P as) = head as zero :: (Num c, Eq c) => Monom ca -> Bool zero (M c _) = c == 0 zeroP :: Polynom ca -> Bool zeroP (P as) = null as scale :: (Num c) => c -> Monom ca -> Monom ca scale c' (M c as) = M (c*c') as 

рджреЛ рдореЛрдиреЛрдорд┐рдпрд▓ рдХреЛ рд╕рдорд╛рди рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ рдпрджрд┐ рд╡реЗ рдХреЗрд╡рд▓ рдЧреБрдгрд╛рдВрдХ рджреНрд╡рд╛рд░рд╛ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВред рдЙрдирдХреЗ рд▓рд┐рдП, рд░рд╛рд╢рд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ - рдЖрдкрдХреЛ рдмрд╕ рдЧреБрдгрд╛рдВрдХ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдбрд┐рдЧреНрд░реА рдХреЛ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рдЫреЛрдбрд╝ рджреЗрдВред
 similar :: (Eq a) => Monom ca -> Monom ca -> Bool similar (M _ asl) (M _ asr) = asl == asr addSimilar :: (Num c) => Monom ca -> Monom ca -> Monom ca addSimilar (M cl as) (M cr _) = M (cl+cr) as 

рджреЛ рдореЛрдиреЛрдорд┐рдпрд▓ рдХреЛ рдЧреБрдгрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдмрд╕ рдкреНрд░рддреНрдпреЗрдХ рдЪрд░ рдХреА рдбрд┐рдЧреНрд░реА рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдЗрд╕ рдСрдкрд░реЗрд╢рди рдХреЛ рдорд╣рд╛рди zipWith рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдб рдЦреБрдж рдХреЗ рд▓рд┐рдП рдмреЛрд▓рддрд╛ рд╣реИ:
 mulMono :: (Num a, Num c) => Monom ca -> Monom ca -> Monom ca mulMono (M cl asl) (M cr asr) = M (cl*cr) (zipWith (+) asl asr) 

рдмрд╣реБрдд рдЕрдзрд┐рдХ рд░реЛрдЪрдХ рдмрд╣реБрдкрдж рдХрд╛ рдЬреЛрдбрд╝ рд╣реИред рд╣рдо рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд░реВрдк рд╕реЗ рд╣рд▓ рдХрд░реЗрдВрдЧреЗред рддреБрдЪреНрдЫ рдорд╛рдорд▓реЗ - рджреЛ рд╢реВрдиреНрдп рдмрд╣реБрдкрдж (рдЦрд╛рд▓реА рд╕реВрдЪреА) рдХрд╛ рдпреЛрдЧ рд╢реВрдиреНрдп рдмрд╣реБрдкрдж рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред рдХрд┐рд╕реА рднреА рдмрд╣реБрдкрдж рдФрд░ рд╢реВрдиреНрдп рдХрд╛ рдпреЛрдЧ рдЗрд╕рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрддрд╛ рд╣реИред рдЕрдм рд╣рдо рджреЛрдиреЛрдВ рдмрд╣реБрдкрджреЛрдВ рдХреЛ рдиреЙрдирдЬреЗрд░реЛ рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рд╡рд░рд┐рд╖реНрда рд╢рдмреНрдж рдФрд░ рдмрд╛рдХреА рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - "рдкреВрдВрдЫ"ред рджреЛ рдорд╛рдорд▓реЗ рд╣реИрдВ:
  1. рд╡рд░рд┐рд╖реНрда рд╕рджрд╕реНрдп рд╕рдорд╛рди рд╣реИрдВред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЙрдиреНрд╣реЗрдВ рдЬреЛрдбрд╝ рджреЗрдВ рдФрд░ рдкреВрдВрдЫ рдХреЗ рдпреЛрдЧ рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рдЬреЛрдбрд╝реЗрдВ (рдпрджрд┐ рдпрд╣ рдиреЙрдирдЬрд╝реЗрд░реЛ рд╣реИ)ред
  2. рд╡рд░рд┐рд╖реНрда рд╕рджрд╕реНрдп рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИрдВред рдлрд┐рд░ рдмрдбрд╝рд╛ рд╡рд╛рд▓рд╛ рдЪреБрдиреЗрдВред рд╣рдорд╛рд░реА рдЖрджреЗрд╢ рджреЗрдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдпрд╣ рдЧрд╛рд░рдВрдЯреА рджреЗрддреА рд╣реИ рдХрд┐ рджреЛрдиреЛрдВ рдмрд╣реБрдкрджреЛрдВ рдХреА рдкреВрдВрдЫ рдореЗрдВ рдПрдХ рд╕рдорд╛рди рдореЛрдиреЛрдорд┐рдпрд▓ рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЪрдпрдирд┐рдд рдмрд╣реБрдкрдж рдХреА рдкреВрдВрдЫ рдХреЛ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдореЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдЗрд╕ рд╕рдмрд╕реЗ рдмрдбрд╝реЗ рдореЛрдиреЛрдорд┐рдпрд▓ рдХреЛ рдЗрд╕рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдЗрд╕ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдо рдлрд┐рд░ рд╕реЗ рдПрдХ рдЖрджреЗрд╢рд┐рдд рдмрд╣реБрдкрдж рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╕реНрд╡рдпрдВ рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╣реИрдВред
 addPoly :: (Eq a, Eq c, Num c, Ord a) => Polynom ca -> Polynom ca -> Polynom ca addPoly (P l) (P r) = P $ go lr where go [] [] = [] go as [] = as go [] bs = bs go (a:as) (b:bs) = if similar ab then if (zero $ addSimilar ab) then go as bs else (addSimilar ab):(go as bs) else if a > b then a:(go as (b:bs)) else b:(go (a:as) bs) 

рдмрд╣реБрдкрдж рдХрд╛ рдЧреБрдгрди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рд╛рдХреГрддрд┐рдХ рддрд░реАрдХреЗ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдмрд╣реБрдкрдж рджреНрд╡рд╛рд░рд╛ рдПрдХ mulMono рдХреЛ рдЧреБрдгрд╛ рдХрд░рдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ - рдмрд╕ рдЗрд╕реЗ map рдФрд░ mulMono рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рддреНрдпреЗрдХ mulMono рджреНрд╡рд╛рд░рд╛ рдЧреБрдгрд╛ map ред рдФрд░ рдлрд┐рд░ рд╣рдо рджреЛ рдмрд╣реБрдкрдж рдХреЗ рдЙрддреНрдкрд╛рдж рдореЗрдВ рд╡рд┐рддрд░рдг ("рд╡рд┐рддрд░рдг рдХрд╛рдиреВрди", рдХреЛрд╖реНрдардХ рдХреЗ рдкреНрд░рдХрдЯреАрдХрд░рдг) рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╣рдо рдкрд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдкрд╣рд▓реЗ рдмрд╣реБрдкрдж рдХреЗ рд╕рднреА рдореЛрдиреЛрдорд┐рдпрд▓ рдХреЛ рджреВрд╕рд░реЗ рд╕реЗ рдЧреБрдгрд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред рд╣рдо рдПрдХ рд╣реА map рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧреБрдгрд╛ рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ foldl' рдФрд░ addPoly ред рдЗрди рджреЛрдиреЛрдВ рдСрдкрд░реЗрд╢рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ рдХрдо рд╣реИ - рдЯрд╛рдЗрдк рд╡рд┐рд╡рд░рдгреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдо!
 mulPM :: (Ord a, Eq c, Num a, Num c) => Polynom ca -> Monom ca -> Polynom ca mulPM (P as) m = P $ map (mulMono m) as mulM :: (Eq c, Num c, Num a, Ord a) => Polynom ca -> Polynom ca -> Polynom ca mulM l@(P ml) r@(P mr) = foldl' addPoly (P []) $ map (mulPM r) ml 

рдпрд╣ рд╕рдм рд╣реИ, рд╣рдордиреЗ рдмрд╣реБрдкрджреЛрдВ рдкрд░ рдмреБрдирд┐рдпрд╛рджреА рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдо рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ!

рдЖрдзрд╛рд░ рдкрд░ рд╢реЗрд╖ рдХреЗ рд╕рд╛рде 4 рд╡рд┐рднрд╛рдЬрди (рдХрдореА)


рд╣рдо рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдореЛрдиреЛрдорд┐рдпрд▓ рдореЛрдиреЛрдорд┐рдпрд▓ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рднрд╛рдЬрд┐рдд рдЕрдЧрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдореЛрдиреЛрдорд┐рдпрд▓ рдореМрдЬреВрдж рд╣реИ рдХрд┐ ред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ рддрднреА рд╕рдЪ рд╣реИ рдЬрдм рдкреНрд░рддреНрдпреЗрдХ рдЪрд░ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ рд╕реЗ рдХрдо рдирд╣реАрдВ ред рдЗрд╕рд▓рд┐рдП, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░рд┐рдЪрд┐рдд zipWith рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдЕрджреНрднреБрдд and рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рднрд╛рдЬреНрдпрддрд╛ рдЬрд╛рдВрдЪ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рд╕рддреНрдпрд╛рдкрди рдХреЗ рд╕рд╛рде, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд┐рднрд╛рдЬрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ:
 dividable :: (Ord a) => Monom ca -> Monom ca -> Bool dividable (M _ al) (M _ ar) = and $ zipWith (>=) al ar divideM :: (Fractional c, Num a) => Monom ca -> Monom ca -> Monom ca divideM (M cl al) (M cr ar) = M (cl/cr) (zipWith (-) al ar) 

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЕрдм рдЧреБрдгрд╛рдВрдХ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╡рд┐рднрд╛рдЬрди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП - Fractional рд╡рд░реНрдЧред рдпрд╣ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдПрдХ рд╢реЗрд╖ рдХреЗ рд╕рд╛рде рдПрдХ рдмрд╣реБрдкрдж рдХреЛ рдПрдХ рдЖрдзрд╛рд░ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдПрдХ рд╕реНрддрдВрдн рджреНрд╡рд╛рд░рд╛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╡рд┐рджреНрдпрд╛рд▓рдп рд╡рд┐рднрд╛рдЬрди рд╣реИред рдЖрдзрд╛рд░ рдХреЗ рдмрд╣реБрдкрдж рдХреЗ рдмреАрдЪ, рдкрд╣рд▓реЗ рдмрд╣реБрдкрдж рдХреЛ рдЗрд╕ рддрд░рд╣ рдЪреБрдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд▓рд╛рднрд╛рдВрд╢ рдХреЗ рд╡рд░рд┐рд╖реНрда рд╢рдмреНрдж рдХреЛ рдЙрд╕рдХреЗ рд╡рд░рд┐рд╖реНрда рд╢рдмреНрдж рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдлрд┐рд░ рдЗрд╕ рдмрд╣реБрдкрдж рдХреЛ рдЙрдирдХреЗ рд╡рд░рд┐рд╖реНрда рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рднрд╛рдЧрдлрд▓ рд╕реЗ рдЧреБрдгрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдШрдЯрд╛рд╡ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдПрдХ рдирдП рд▓рд╛рднрд╛рдВрд╢ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдзрд╛рд░ рдХреЗ рдХрд┐рд╕реА рднреА рд╡рд░рд┐рд╖реНрда рд╕рджрд╕реНрдп рджреНрд╡рд╛рд░рд╛ рд╡рд░рд┐рд╖реНрда рд╕рджрд╕реНрдп рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╡рд┐рднрд╛рдЬрди рдкреВрд░рд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЕрдВрддрд┐рдо рд▓рд╛рднрд╛рдВрд╢ рдХреЛ рд╢реЗрд╖ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╣рдорд╛рд░реА рдореБрдЦреНрдп рд╡рд┐рднрд╛рдЬрди рдкреНрд░рдХреНрд░рд┐рдпрд╛, рдЪрд▓реЛ рдЗрд╕реЗ reduceMany рдХрд╣рддреЗ рд╣реИрдВ, рджреЛ рд╕рд╣рд╛рдпрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА - reducable рдФрд░ reduce ред рдЙрдирдореЗрдВ рд╕реЗ рдкрд╣рд▓рд╛ рдЬрд╛рдБрдЪрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдмрд╣реБрдкрдж рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рд╡рд┐рднрд╛рдЬреНрдп рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ рд╡рд┐рднрд╛рдЬрди рдХрд░рддрд╛ рд╣реИред
 reducable :: (Ord a) => Polynom ca -> Polynom ca -> Bool reducable lr = dividable (lt l) (lt r) reduce :: (Eq c, Fractional c, Num a, Ord a) => Polynom ca -> Polynom ca -> Polynom ca reduce lr = addPoly lr' where r' = mulPM r (scale (-1) q) q = divideM (lt l) (lt r) 

рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдШрдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рд╣реИ, рдмрд╕ рджреВрд╕рд░реЗ рдмрд╣реБрдкрдж рдХреЛ -1 рд╕реЗ рдЧреБрдгрд╛ рдХрд░реЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЬреЛрдбрд╝реЗрдВ - рдпрд╣ рд╕рд░рд▓ рд╣реИ! рдФрд░ рдпрд╣рд╛рдБ рдкреВрд░реЗ рд╡рд┐рднрд╛рдЬрди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╣реИ:
 reduceMany :: (Eq c, Fractional c, Num a, Ord a) => Polynom ca -> [Polynom ca] -> Polynom ca reduceMany h fs = if reduced then reduceMany h' fs else h' where (h', reduced) = reduceStep h fs False reduceStep h (f:fs) r | zeroP h = (h, r) | otherwise = if reducable hf then (reduce hf, True) else reduceStep h fs r reduceStep h [] r = (h, r) 

рдХрдо reduceMany рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдЖрдзрд╛рд░ рдореЗрдВ рдПрдХ рдмрд╣реБрдкрдж рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рд╡рд┐рднрд╛рдЬрди рд╣реБрдЖ, рддреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЬрд╛рд░реА рд░рд╣рддреА рд╣реИ, рдЕрдиреНрдпрдерд╛ рдпрд╣ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддреА рд╣реИред рдЖрдВрддрд░рд┐рдХ рдлрд╝рдВрдХреНрд╢рди reduceStep рдХрд░рдирд╛ reduceStep рд╕рд┐рд░реНрдл рдкрд╣рд▓реЗ рдмрд╣реБрдкрдж рдХреЗ рд▓рд┐рдП рджрд┐рдЦрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реЛрддрд╛ рд╣реИ, рд╢реЗрд╖ рдФрд░ рдПрдХ рдзреНрд╡рдЬ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╡рд┐рднрд╛рдЬрди рд╣реБрдЖ рд╣реИред

5 рдмреБрдЪрдмрд░реНрдЧрд░ рдПрд▓реНрдЧреЛрд░рд┐рдердо


рддреЛ рд╣рдо рдЗрд╕ рд▓реЗрдЦ рдХреЗ рдореБрдЦреНрдп рднрд╛рдЧ рдкрд░ рдЖрддреЗ рд╣реИрдВ - рдмреБрдЪрдмрд░реНрдЧрд░ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрднреА рддрдХ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдЪреАрдЬрд╝ рдирд╣реАрдВ рд╣реИ -polynomialред рдЗрд╕рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдХрдо рд╕реЗ рдХрдо рдмрд╣реБрд╡рд┐рдз рдореЛрдиреЛрдорд┐рдпрд▓ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╣рд╛рдпрдХ рдХрд╛рд░реНрдп рд╣реИ:
 lcmM :: (Num c, Ord a) => Monom ca -> Monom ca -> Monom ca lcmM (M cl al) (M cr ar) = M (cl*cr) (zipWith max al ar) makeSPoly :: (Eq c, Fractional c, Num a, Ord a) => Polynom ca -> Polynom ca -> Polynom ca makeSPoly lr = addPoly l' r' where l' = mulPM l ra r' = mulPM r la lcm = lcmM (lt l) (lt r) ra = divideM lcm (lt l) la = scale (-1) $ divideM lcm (lt r) 

рдпрд╣рд╛рдВ, рджреЛрдиреЛрдВ рдмрд╣реБрдкрджреЛрдВ рдХреЛ рдХреЗрд╡рд▓ рдЗрд╕реА рдореЛрдиреЛрдорд┐рдпрд▓ рджреНрд╡рд╛рд░рд╛ рдЧреБрдгрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рджреВрд╕рд░рд╛ рднреА рд╢реВрдиреНрдп рд╕реЗ рдПрдХ рд╣реЛрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рд╢реЗрд╖ рдХреЗ рд╕рд╛рде рд╡рд┐рднрд╛рдЬрди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред
рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВред рдореИрдВ рдпрд╣ рднреА рдвреЛрдВрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдореЗрд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЗрд╖реНрдЯрддрдо рдпрд╛ рд╕рд░рд▓ рд╣реИред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╣ рдкрд╕рдВрдж рд╣реИ рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рд╕рдм рд▓реЗрддрд╛ рд╣реИред

рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдЧрддрд┐рд╢реАрд▓ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдЖрдзрд╛рд░ рдХреЛ рджреЛ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВ - рд╡рд╣ рдЬрд┐рд╕рдореЗрдВ рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдЬрд╛рдБрдЪ рдХрд░ рд▓реА рд╣реИ (рдФрд░ рдЬреЛрдбрд╝ рджреА рдЧрдИ рд╣реИ) - рд╕рднреА рдЬреЛрдбрд╝реЗ рд╕реЗ рдмрд╣реБрдкрдж - " checked " - рдФрд░ рдпрд╣ рдХреЗрд╡рд▓ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ - " add "ред рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдПрдХ рдХрджрдо рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
  1. рдкрд╣рд▓реЗ рдмрд╣реБрдкрдж рдХреЛ рджреВрд╕рд░реЗ рднрд╛рдЧ рд╕реЗ рд▓реЗрдВ
  2. рд▓рдЧрд╛рддрд╛рд░ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВ рдЗрд╕рдХреЗ рдкрд╣рд▓реЗ рднрд╛рдЧ рдХреЗ рд╕рднреА рдмрд╣реБрдкрдж рдФрд░ рджреВрд╕рд░реЗ рднрд╛рдЧ рдХреЗ рдЕрдВрдд рдореЗрдВ рд╕рднреА рдЧреИрд░-рдЕрдХреНрд╖реАрдп рдЕрд╡рд╢реЗрд╖реЛрдВ рдХреЛ рдЬреЛрдбрд╝ рджреЗрдВ
  3. рдЗрд╕ рдмрд╣реБрдкрдж рдХреЛ рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ рд▓реЗ рдЬрд╛рдПрдБ

рдЬреИрд╕реЗ рд╣реА рджреВрд╕рд░рд╛ рднрд╛рдЧ рдЦрд╛рд▓реА рд╣реЛрдЧрд╛, рдкрд╣рд▓реЗ рдореЗрдВ рдЧреЙрдмрдиреЗрд░ рдЖрдзрд╛рд░ рд╣реЛрдЧрд╛ред рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХрд╛ рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛ -рдкреЙрд▓рд┐рдореЛрдирд┐рдЕрд▓реНрд╕ рдЙрди рдЬреЛрдбрд╝рд┐рдпреЛрдВ рд╕реЗ рдЬрд┐рдирдореЗрдВ рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЧрд┐рдирд╛ рдФрд░ рдЬрд╛рдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░реНрдп checkOne ред рдпрд╣ рдПрдХ рдмрд╣реБрдкрдж (рджреВрд╕рд░реЗ рднрд╛рдЧ рд╕реЗ), рд╕рд╛рде рд╣реА рджреЛрдиреЛрдВ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рд▓реЗрддрд╛ рд╣реИ, рдФрд░ рдмрд╣реБрдкрдж рдХреА рдПрдХ рд╕реВрдЪреА рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдзрд╛рд░ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдо рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ рд╕рд╛рдзрд╛рд░рдг рдкреБрдирд░рд╛рд╡рд░реНрддрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рд╢реВрдиреНрдп рдЕрд╡рд╢реЗрд╖реЛрдВ рдХреЛ рдЬреЛрдбрд╝реЗ рдмрд┐рдирд╛:
 checkOne :: (Eq c, Fractional c, Num a, Ord a) => Polynom ca -> [Polynom ca] -> [Polynom ca] -> [Polynom ca] checkOne f checked@(c:cs) add = if zeroP s then checkOne f cs add else s:(checkOne f cs (add ++ [s])) where s = reduceMany (makeSPoly fc) (checked++add) checkOne _ [] _ = [] 

рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдПрдХ foldl рджреНрд╡рд╛рд░рд╛ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рдПрдХ рдЕрднреНрдпрд╛рд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдЫреЛрдбрд╝ рджреВрдВрдЧрд╛ред рдпрд╣ рдХреЗрд╡рд▓ рдЗрд╕ рдЖрдзрд╛рд░ рдкрд░ Gr├╢bner рдЖрдзрд╛рд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╕реНрдЯреЗрдк рд╡рд░реНрдмрдЯреАрдо рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЗрд╕рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЛ рджреЛрд╣рд░рд╛рддрд╛ рд╣реИ, рдЕрдкрдиреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВ:
 build checked add@(a:as) = build (checked ++ [a]) (as ++ (checkOne a checked add)) build checked [] = checked 

рдмрд╣реБрдкрдж рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд╕рднреА рдЧреИрд░-рдЕрд╡рд╢реЗрд╖ рдЕрд╡рд╢реЗрд╖ рджреВрд╕рд░реЗ рдореЗрдВ рдЖрддреЗ рд╣реИрдВред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рднрд╛рдЧреЛрдВ рдХреЗ рдмреАрдЪ рдмрд╣реБрдкрдж рдХреЗ рдЖрдВрджреЛрд▓рдиреЛрдВ рдХреЗ рдХрд╛рд░рдг рдХреЗрд╡рд▓ рдкрд╣рд▓реЗ рдХреЗ рд╕рд╛рде рджреВрд╕рд░реЗ рднрд╛рдЧ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдмрд╣реБрдкрдж рдХрд╛ рдмрд╣реБрд╡рдЪрдиред рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдмрд╛рдХреА рд╣реИ рдХрд┐ рдЗрд╕ рд╕реЗ рдЧреНрд░реЛрдмрдиреЗрд░ рдЖрдзрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ рдЕрдкрдиреЗ рдмрд╣реБрдкрдж рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рджреВрд╕рд░реЗ рдореЗрдВ рдмрд╛рдХреА рд╣реИ рдФрд░ build рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ makeGroebner рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
 makeGroebner :: (Eq c, Fractional c, Num a, Ord a) => [Polynom ca] -> [Polynom ca] makeGroebner (b:bs) = build [b] bs where build checked add@(a:as) = build (checked ++ [a]) (as ++ (checkOne a checked add)) build checked [] = checked 

6 рдЙрдкрдпреЛрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг


рдЗрди рддрд░реАрдХреЛрдВ рдХреЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдП рдмрд┐рдирд╛ рдпреЗ рд╕рднреА рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рдирд┐рд░реНрдорд╛рдг рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмреЗрдХрд╛рд░ рд▓рдЧрддреЗ рд╣реИрдВред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рддреАрди рд╕рд░реНрдХрд▓ рдХреЗ рдЪреМрд░рд╛рд╣реЗ рдмрд┐рдВрджреБ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ - рдПрдХ рдирдХреНрд╢реЗ рдкрд░ рд╕реНрдерд┐рддрд┐ рдХрд╛ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдорд╛рдорд▓рд╛ред рд╣рдо рд╕рдореАрдХрд░рдгреЛрдВ рдХреА рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд░реВрдк рдореЗрдВ рд╣рд▓рдХреЛрдВ рдХреЗ рд╕рдореАрдХрд░рдг рд▓рд┐рдЦрддреЗ рд╣реИрдВ:

ред

рдХреЛрд╖реНрдардХ рдЦреЛрд▓рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд┐рд▓рддреЗ рд╣реИрдВ:



рдЖрдЗрдП Gr├╢bner рдЖрдзрд╛рд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВ (рдореИрдВрдиреЗ рдЕрдзрд┐рдХ рд╕рдЯреАрдХрддрд╛ рдХреЗ рд▓рд┐рдП Rational рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛):
 *Main> let f1 = P [M 1 [2,0], M (-2) [1,0], M 1 [0,2], M (-26) [0,1], M 70 [0,0]] :: Polynom Rational Int *Main> let f2 = P [M 1 [2,0], M (-22) [1,0], M 1 [0,2], M (-16) [0,1], M 160 [0,0]] :: Polynom Rational Int *Main> let f3 = P [M 1 [2,0], M (-20) [1,0], M 1 [0,2], M (-2) [0,1], M 76 [0,0]] :: Polynom Rational Int *Main> putStr $ unlines $ map show $ makeGroebner [f1,f2,f3] x1^2 + (-2) % 1x1 + x2^2 + (-26) % 1x2 + 70 % 1 x1^2 + (-22) % 1x1 + x2^2 + (-16) % 1x2 + 160 % 1 x1^2 + (-20) % 1x1 + x2^2 + (-2) % 1x2 + 76 % 1 (-20) % 1x1 + 10 % 1x2 + 90 % 1 15 % 1x2 + (-75) % 1 

рдЪрдорддреНрдХрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ, рд╣рдореЗрдВ рджреЛ рд░реИрдЦрд┐рдХ рд╕рдореАрдХрд░рдг рдорд┐рд▓реЗ рдЬреЛ рдЬрд▓реНрджреА рд╕реЗ рдПрдХ рдЙрддреНрддрд░ рджреЗрддреЗ рд╣реИрдВ - рдмрд┐рдВрджреБ (7.5)ред рдЖрдк рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рддреАрдиреЛрдВ рд╕рд░реНрдХрд┐рд▓реЛрдВ рдкрд░ рд╣реИред рддреЛ, рд╣рдордиреЗ рддреАрди рдЬрдЯрд┐рд▓ рджреНрд╡рд┐рдШрд╛рдд рд╕рдореАрдХрд░рдгреЛрдВ рдХреА рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЛ рджреЛ рд╕рд░рд▓ рд░реИрдЦрд┐рдХ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХрдо рдХрд░ рджрд┐рдпрд╛ рд╣реИред Gr├╢bner рдХреБрд░реНрд╕рд┐рдпрд╛рдВ тАЛтАЛрдЗрд╕ рддрд░рд╣ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдЙрдкрдХрд░рдг рд╣реИрдВред

рдкреНрд░рддрд┐рдмрд┐рдВрдм рдФрд░ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗ рд▓рд┐рдП 7 рдкреНрд░рд╢реНрди


рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕ рдкрд░рд┐рдгрд╛рдо рдореЗрдВ рдЕрднреА рднреА рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред -рдкреЙрд▓рд┐рдиреЙрдорд┐рдЕрд▓реНрд╕ рдХреЛ рдХреЗрд╡рд▓ рдЙрди рдмрд╣реБрдкрдж рдХреЗ рдЬреЛрдбрд╝реЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рд╡рд░рд┐рд╖реНрда рд╕рджрд╕реНрдп рдореИрдереБрди рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ - рдЕрд░реНрдерд╛рдд, рдЙрдирдХреА рд╕рдмрд╕реЗ рдЫреЛрдЯреА рдмрд╣реБ рдХреЗрд╡рд▓ рдЙрдирдХрд╛ рдЙрддреНрдкрд╛рдж рдирд╣реАрдВ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╕реВрддреНрд░реЛрдВ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ "рдмрд╣реБрдкрдж рдПрдХ рд▓рд┐рдВрдХ рд╣реИ "ред рдЗрд╕ рдЕрдиреБрдХреВрд▓рди рдХреЛ рд╣рдорд╛рд░реЗ makeGroebner рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред

рдпрджрд┐ рдПрдХ рдмрд╣реБрдкрдж рдЬрд┐рд╕рдХрд╛ рд╡рд░рд┐рд╖реНрда рд╢рдмреНрдж рдЖрдзрд╛рд░ рд╕реЗ рдХреБрдЫ рдЕрдиреНрдп рдмрд╣реБрдкрдж рдХреЗ рд╡рд░рд┐рд╖реНрда рд╢рдмреНрдж рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдЕрдВрддрд┐рдо рдЖрдзрд╛рд░ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдмрд╛рд╣рд░ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рднреА рдмрд╣реБрдкрдж рдХреЗ рдмрд╣рд┐рд╖реНрдХрд░рдг рдХреЗ рдмрд╛рдж рдкреНрд░рд╛рдкреНрдд рдЖрдзрд╛рд░ рдХреЛ рдиреНрдпреВрдирддрдо рдЧреНрд░реЛрдиреЗрд░ рдЖрдзрд╛рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдк рдПрдХ рдмрд╣реБрдкрдж рдкрд░ рднреА рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХрд╛ рдордирдорд╛рдирд╛ рд╢рдмреНрдж рдХрд┐рд╕реА рдЕрдиреНрдп рдмрд╣реБрдкрдж рдХреЗ рд╡рд░рд┐рд╖реНрда рд╢рдмреНрдж рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕ рдмрд╣реБрдкрдж рдХреЛ рджреВрд╕рд░реЗ рдХреЗ рд╡рд┐рднрд╛рдЬрди рд╕реЗ рд╢реЗрд╖ рдХреЗ рд╕рд╛рде рдмрджрд▓реЗрдВред рдЬрд┐рд╕ рдкреНрд░рдХрд╛рд░ рд╕реЗ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдСрдкрд░реЗрд╢рди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдЙрд╕реЗ рдХрдо рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ ред рдПрдХ рдЕрднреНрдпрд╛рд╕ рдХреЗ рд░реВрдк рдореЗрдВ, рдиреНрдпреВрдирддрдордХрд░рдг рдФрд░ рдЖрдзрд╛рд░ рдХреА рдХрдореА рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВред

рдЕрдВрдд рдореЗрдВ, рдореИрдВ рдЙрди рд╕рднреА рдХреЛ рдзрдиреНрдпрд╡рд╛рдж рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдЕрдВрдд рддрдХ рдкрдврд╝рд╛ рд╣реИред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реА рдХрд╣рд╛рдиреА рдХреБрдЫ рдЧрдбрд╝рдмрдбрд╝ рдереА, рдФрд░ рдХреЛрдб рдЕрдкреВрд░реНрдг рдерд╛ (рдФрд░ рд╢рд╛рдпрдж рд╕рдордЭ рд╕реЗ рдмрд╛рд╣рд░), рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрднреА рднреА рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЧреЙрд░реНрдирд░ рдХреЗ рдард┐рдХрд╛рдиреЛрдВ рдореЗрдВ рдХрд┐рд╕реА рдХреА рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИред рдореБрдЭреЗ рдмрд╣реБрдд рдЦреБрд╢реА рд╣реЛрдЧреА рдЕрдЧрд░ рдХреЛрдИ рдореЗрд░реА рдЙрдкрд▓рдмреНрдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдЖрд╡реЗрджрди рдкрд╛ рд╕рдХрддрд╛ рд╣реИред

рд▓реЗрдЦ рд╕реЗ рд╕рднреА рдХреЛрдб gist рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИред

Source: https://habr.com/ru/post/In177237/


All Articles