рдХрдВрд╕реЛрд▓ рдореЗрдВ рдирд┐рд░реНрдорд╛рдг рдХрд╛рд░реНрдпред рднрд╛рдЧ 2 (рдЕрдиреБрд╕реВрдЪреА)

рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛

рдЫрд╡рд┐

рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдореИрдВ рдлрд╝рдВрдХреНрд╢рди рдорд╛рдиреЛрдВ рдХреА рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдиреЗ рдкрд░ рдмрд╕ рдЧрдпрд╛ рдерд╛ред рд╕рдордп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕рдм, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╢реБрд░реВ рд╣реБрдЖред

рддреЛ, рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИред рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдЕрдХреНрд╖ 90 рдбрд┐рдЧреНрд░реА рджрдХреНрд╖рд┐рдгрд╛рд╡рд░реНрдд рдШреБрдорд╛рдПрдБред рдХрд┐рд╕реА рднреА рд╢реАрдЯ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдмрд┐рдВрджреБ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдмрд┐рдирд╛ рдирд┐рд░реНрдорд╛рдг рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

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

рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреА рдзреБрд░реА рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдПрдХреНрд╕ рдЕрдХреНрд╖ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН, рд╣рдо рдЗрд╕ рдмрд╛рдд рдХреА рддрд▓рд╛рд╢ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрд┐рд╕ рд╕реНрдерд╛рди рдкрд░ рдмрд┐рдВрджреБ (x, 0) рд╣реЛрдЧрд╛ред рдареАрдХ рд╣реИ, рддреЛ рд╣рдо рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдлрд╝рдВрдХреНрд╢рди y1 рдХреЗ x-by-рд▓рд╛рдЗрди рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВрдЧреЗред

рдЪрд▓реЛ рдЪрд▓рддреЗ рд╣реИрдВ

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдирд┐рдореНрди рд╕реВрддреНрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

рдЕрдиреБрдкрд╛рдд=(рдЕрдзрд┐рдХрддрдо(y1)тИТрдорд┐рдирдЯ(y1))/(80)



рд╣рдо рдЦреБрдж рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 80 рдкрджреЛрдВ рдХреЛ рд╕реМрдВрдкреЗрдВрдЧреЗ, рд╢реЗрд╖ рджреЛ рд╕реНрдерд╛рди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдЬрд╛рд╡рдЯреА рд╣реЛрдВрдЧреЗред рдЗрд╕ рд╕реВрддреНрд░ рд╕реЗ рд╣рдореЗрдВ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдЪрд╛рд░реНрдЯ рдореЗрдВ рдХреМрди рд╕реА рд╢реНрд░реЗрдгреА рдХрд┐рд╕ рдорд╛рди рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред рддрдм рд╣рдо рдЙрд╕ рдкрд░ рд╡рд░реНрддрдорд╛рди рдмрд┐рдВрджреБ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рд░реЗрдЦрд╛рдВрдХрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЪрд▓реЛ рдХреЛрдб рдкрд░ рд╣реА рдЪрд▓рддреЗ рд╣реИрдВ

dial_length = 12 label = "  y1 = x**3 - 2*x**2 + 4*x - 8" print("{1:>{0}}".format(len(label) + dial_length, label), '\n') print("{aux[1]:>{aux[0]}}\n {aux[2]:>{aux[0]}}>\n".format(aux = [dial_length + 82, 'y' , 82*'-'])); 

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

 print("{1:>{0}}".format(len(label) + dial_length, label), '\n') 

рдЗрдХрд╛рдИ рдкреНрд░рд╛рд░реВрдк рдлрд╝рдВрдХреНрд╢рди рдХреЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рддрддреНрд╡ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рдЕрд░реНрдерд╛рдд, рдпрд╣ рд▓реЗрдмрд▓ рдЪрд░ рдХреЗ рд▓рд┐рдП "рд▓рд┐рдВрдХ" (рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ рдирд╣реАрдВ) рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реНрдХреНрд░реАрди рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЕрдВрдХрди рдареАрдХ рдЙрд╕реА рддрд░рд╣ рд╣реЛрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдЪрд╛рджрд░реЛрдВ рдореЗрдВ - рдЦрд░реЛрдВрдЪ рд╕реЗред

рд╡рд░реНрдгреЛрдВ рдХреА рдПрдХ рдЬреЛрдбрд╝реА :> рдХрд╛ рдЙрдкрдпреЛрдЧ рджрд╛рдИрдВ рдУрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдкрд╛рда рдХреЛ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдареАрдХ рд╣реИ, {0} рдХреЗ рдмрд╛рдж > рд╡рд░реНрдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рддрд╛рдХрд┐ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рдкрдВрдХреНрддрд┐ рдкрджреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬрд╛ рд╕рдХреЗред

рдпрд╣реА рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рд▓рд╛рдЗрди рд▓реЗрдмрд▓ рд▓реЗрди (рд▓реЗрдмрд▓) + рдбрд╛рдпрд▓_рд▓реЙрдиреНрдЧ рдкреЛрдЬреАрд╢рди рдХреЗ рд▓рд┐рдП рдЖрд░рдХреНрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд▓реЗрдмрд▓ рд╕реНрд╡рдпрдВ рдХреЗрд╡рд▓ рд▓реЗрди (рд▓реЗрдмрд▓) рд▓реЗрддрд╛ рд╣реИ, рдФрд░ рд╣рдо рдЗрди рдкрджреЛрдВ рдХреЗ рд╕реЗрдЯ рдХреЗ рдЕрдВрджрд░ рджрд╛рдИрдВ рдУрд░ рдкрд╛рда рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░рддреЗ рд╣реИрдВред

 print("{1:>{0}}".format(len(label) + dial_length, label), '\n') print(dial_length*' ' + label, '\n') 

рдпреЗ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╕рдордХрдХреНрд╖ рд╣реИрдВ


рд╣рд╛рдВ, рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рд▓рд┐рдП, рд╢рд╛рдпрдж рджреВрд╕рд░реЗ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рдЖрд╡реЗрджрди рдХрд░рдиреЗ рд╕реЗ рдЪреЛрдЯ рдирд╣реАрдВ рдкрд╣реБрдВрдЪреЗрдЧреА)

 print("{aux[1]:>{aux[0]}}\n {aux[2]:>{aux[0]}}>\n".format(aux = [dial_length + 82, 'y' , 82*'-'])); 

рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ r_value рдкреНрд░рдХрд╛рд░ (C ++ рдореЗрдВ) рдХреЗ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ crammed рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, рдХрд┐рд╕реА рддрд░реНрдХ рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рд╕реАрдзреЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╣рдо рдЙрди рдЪрд░ рдХреЛ рдареАрдХ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рд╕рд╛рде рд╕реНрдерд┐рд░ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд, рд╡реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╡рд░реНрддрдорд╛рди рдореВрд▓реНрдп рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

рдЕрдЬрдЧрд░ рдореЗрдВ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЛ рдбрд┐рдЬрд╛рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╢рд░реНрдд рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдРрд╕реЗ рдЕрдХреНрд╖рд░реЛрдВ рдХреЛ рдкреВрдВрдЬреА рдЕрдХреНрд╖рд░реЛрдВ рдореЗрдВ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдерд╛рдЧрдд рд╣реИ рдФрд░ рдмрд╕ рдЙрдиреНрд╣реЗрдВ рдирд╣реАрдВ рдмрджрд▓рддреЗ рд╣реИрдВред

 MAX_Y1_VALUE_DIFFERENCE = (max_y1_value - min_y1_value) + \ (max_y1_value == min_y1_value) RATIO = MAX_Y1_VALUE_DIFFERENCE / 80 AXIS_X_POS = abs(int((- min_y1_value) / RATIO)) if (AXIS_X_POS > 80): AXIS_X_POS = 81 

рдЪреВрдВрдХрд┐ рд╕реНрдкрд╖реНрдЯ рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП RATIO 0 рдХреЗ рдмрд░рд╛рдмрд░ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, MAX_Y1_VALUE_DIFFERENCE рдПрдХ рд╕рдХрд╛рд░рд╛рддреНрдордХ рд╕рдВрдЦреНрдпрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рджреВрд╕рд░рд╛ рдХрд╛рд░реНрдпрдХрд╛рд▓ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреЗ рджрд╛рдИрдВ рдУрд░ рд╣реИред

рдПрдХреНрд╕-рдЕрдХреНрд╖ рдХреА рд╕реНрдерд┐рддрд┐ рд╣рдо рд╕реВрддреНрд░ рджреНрд╡рд╛рд░рд╛ рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ

80тИЧ(y1(x)тИТрдорд┐рдирдЯ(y1))/(рдЕрдзрд┐рдХрддрдо(y1)тИТрдорд┐рдирдЯ(y1))



рдпрд╣ рд╕реВрддреНрд░ рдХрд╣рд╛рдБ рд╕реЗ рдЖрддрд╛ рд╣реИ? рд╣рдо рдХреЗрд╡рд▓ рдлрд╝рдВрдХреНрд╢рди (y1 (x)) рдХреЗ рд╡рд░реНрддрдорд╛рди рдореВрд▓реНрдп рдФрд░ рдзреБрд░реА рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ рдЗрд╕рдХреЗ рдЕрдВрдд (рдЕрдзрд┐рдХрддрдо (y1)) рддрдХ рдзреБрд░реА (рдорд┐рдирдЯ (y1)) рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ рдЦрдВрдбреЛрдВ (рдЦреЗрд▓ рдХреЗ рдЕрдХреНрд╖ рдкрд░) рдХреЗ рдЕрдиреБрдкрд╛рдд рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВред рдЦреИрд░, рд╣рдо рдЕрдХреНрд╖реЛрдВ рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ рд▓реЗрдХрд░ рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдореВрд▓реНрдп (рдЗрд╕рд▓рд┐рдП, рдЖрдк рдХреЗрд╡рд▓ рдкреВрд░реНрдгрд╛рдВрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ) рдХреА рджреВрд░реА рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдЕрдиреБрдкрд╛рдд рдХреЛ 80 рд╕реЗ рдЧреБрдгрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдЧреНрд░рд╛рдл рдкрд░ рдЕрдиреБрдкрд╛рдд-рд╕реВрддреНрд░ рдХреЛ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░реЗрдЧрд╛ред

рдЪреВрдБрдХрд┐ рд╣рдо y1 (x) = 0 рдкрд░ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЖрд╡рд╢реНрдпрдХ рдорд╛рди рдФрд░ рдзреНрд╡рдирд┐ рдХреЛ рд╕реВрддреНрд░ рдореЗрдВ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВред

рдЕрдм рдЖрдк рдореБрджреНрд░рдг рдореВрд▓реНрдпреЛрдВ рдкрд░ рд╕реАрдзреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ

 while (is_sequence_decreasing and from_x >= to_x) or \ (not is_sequence_decreasing and from_x <= to_x): y1_cur_value = y1(from_x) cur_y1_value_and_min_difference = (y1_cur_value - min_y1_value) + \ (y1_cur_value == min_y1_value) * \ ((max_y1_value == min_y1_value)) pos_of_y = int(cur_y1_value_and_min_difference * 80 / \ MAX_Y1_VALUE_DIFFERENCE) 

рдЪрдХреНрд░ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░рд┐рдЪрд┐рдд рд╣реИред рд╣рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдореВрд▓реНрдп рдХреЛ рджреВрд╕рд░реА рдмрд╛рд░ рдЧрд┐рдирдирд╛ рд╣реЛрдЧрд╛, рддрд╛рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╢реАрдЯ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЪреАрдЬрд╝ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рди рдХрд┐рдпрд╛ рдЬрд╛рдПред

рдЦреЗрд▓ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЧрдгрдирд╛ рдЙрдкрд░реЛрдХреНрдд рд╕реВрддреНрд░ рджреНрд╡рд╛рд░рд╛ рдХреА рдЬрд╛рддреА рд╣реИред

рд╣рдореЗрдВ рд╕реВрддреНрд░ рд╕реЗ рдКрдкрд░реА рдЕрдВрддрд░ рдХреЛ рдареАрдХ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЬрдм рд╕реВрддреНрд░ рдореЗрдВ рд╣рдореЗрдВ рд╢реВрдиреНрдп рджреНрд╡рд╛рд░рд╛ рдлрд╛рд░реНрдо рдХреА рдЕрдирд┐рд╢реНрдЪрд┐рддрддрд╛ рдорд┐рд▓рддреА рд╣реИред рдпрджрд┐ рдРрд╕реА рдЕрдирд┐рд╢реНрдЪрд┐рддрддрд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реЛрдЧрд╛ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдореВрд▓реНрдп y1 (x) = рдЕрдзрд┐рдХрддрдо (y1) рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЦреЗрд▓ рдХрд╛ рд╡рд░реНрддрдорд╛рди рдореВрд▓реНрдп y рдЕрдХреНрд╖ рдХреЗ рдЕрдВрдд рдХреЗ рд╕рд╛рде рдореЗрд▓ рдЦрд╛рдПрдЧрд╛ред

  print("{1:^{0}.6g}".format(dial_length, from_x), end='') if (negative_value_exists): if y1_cur_value <= 0 - RATIO / 2: req_aux = AXIS_X_POS - pos_of_y if (req_aux != 0): print(pos_of_y * ' ' + '*' + (req_aux - 1) * ' ' + '|') else: print((AXIS_X_POS - 1) * ' ' + '*' + '|') elif y1_cur_value >= 0 + RATIO / 2: req_aux = pos_of_y - AXIS_X_POS if (req_aux != 0): print(AXIS_X_POS * ' ' + '|' + (req_aux - 1) * ' ' + '*') else: print((AXIS_X_POS) * ' ' + '|*') else: print(AXIS_X_POS * ' ' + '*') else: print('|' + pos_of_y* ' ' + '*') AXIS_X_POS = 0 from_x += pace_x print((dial_length + AXIS_X_POS) * ' ' + '|\n', (dial_length + AXIS_X_POS - 3) * ' ' + 'x V') 

рдХреЛрдб рдХрд╛ рдпрд╣ рд╣рд┐рд╕реНрд╕рд╛ рд╕реАрдзреЗ рдЧреНрд░рд╛рдл рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред

 print("{1:^{0}.6g}".format(dial_length, from_x), end='') 

рдпрд╣рд╛рдБ, рдкреНрд░рд╛рд░реВрдк рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдерд╛ рдФрд░ рдХреЛрдб рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдпрд╛ред ^ рд╣рдореЗрдВ рдЪрдпрдирд┐рдд рдХреНрд╖реЗрддреНрд░ рдХреЗ рдХреЗрдВрджреНрд░ рдореЗрдВ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, 12 рд╕реНрдерд┐рддрд┐)ред рдЬреА рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реИ - рдпрджрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рдПрдХ рднрд┐рдиреНрдирд╛рддреНрдордХ рднрд╛рдЧ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕реЗ рдореБрджреНрд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рд╕рдВрдЦреНрдпрд╛ int рдХреЗ рд░реВрдк рдореЗрдВ), рдЕрдиреНрдпрдерд╛ - 6% рд╕реНрдерд╛рди

рдЪреВрдБрдХрд┐ рд╣рдорд╛рд░рд╛ рдЧреНрд░рд╛рдл y рдЕрдХреНрд╖ рдХреЗ рд╕рд╛рде 80 рд╡рд░реНрдгреЛрдВ рдХреЗ рд╕реНрдерд╛рди рддрдХ рд╕реАрдорд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдЧреНрд░рд╛рдл рдкрд░ рдмрд┐рдВрджреБ рдкрд░ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдорд╛рди x рдЕрдХреНрд╖ рдХреЗ рд╕рд╛рде рди рдХреЗрд╡рд▓ y1 (x) = 0 рдореЗрдВ, рдмрд▓реНрдХрд┐ рдкрдбрд╝реЛрд╕ рдореЗрдВ рднреА рд╣реЛрдЧрд╛ [0] RATIO / 2, 0 + RATIO / реи]ред

рдХреБрд▓ рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рддрд╛рд░рд╛рдВрдХрди рдХреЗ рд╕реНрдерд╛рди (рдпрд╛рдиреА, рдмрд┐рдВрджреБ) рдФрд░ рдКрд░реНрдзреНрд╡рд╛рдзрд░ рдЫрдбрд╝реА (рдпрд╛рдиреА, рдПрдХреНрд╕ рдЕрдХреНрд╖) рдХреЗ рддреАрди рдорд╛рдорд▓реЗ рд╣реИрдВ: '* | (y1 (x) <= 0 - RATIO / 2), '*' (0 - RATIO / 2 <y1 (x) <0 + RATIO / 2), '| *' (y1 (x)> = + RATIO | / 2), рд╣рдо рдЗрди рддреАрди рдорд╛рдорд▓реЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред

  1. y1 (x) <= 0 - RATIO / 2
    рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдмрд┐рдВрджреБ x рдЕрдХреНрд╖ рдкрд░ рд╕реНрдерд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдореЗрдВ рдЕрдХреНрд╖ рд╕реЗ рджреВрд░реА рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рдЧреЛрд▓ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг, рдРрд╕рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЪрд░ AXIS_X_POS рдФрд░ pos_of_y рдХреЗ рдорд╛рди рдореЗрд▓ рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдо рддреАрд╕рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣реЛрдВрдЧреЗред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдмрд┐рдВрджреБ рдПрдХреНрд╕ рдЕрдХреНрд╖ рдХреЗ рд╕рд╛рде рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрдерд┐рддрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЬреЛ рд╕рдорд╛рдирддрд╛ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ 1 рд╕реЗ рдХрдо рд╣реЛ рдЬрд╛рдПрдЧреАред
  2. y (x)> = 0 + RATIO / 2
    рдорд╛рдорд▓рд╛ рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдХреЗ рд╕рдорд╛рди рд╣реИ, рдХреЗрд╡рд▓ рдмрд┐рдВрджреБ рдПрдХреНрд╕ рдЕрдХреНрд╖ рдХреЗ рджреВрд╕рд░реА рддрд░рдл рд╕реНрдерд┐рдд рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдХреНрд░рд┐рдпрд╛рдПрдВ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВред
  3. рдмрд╛рдХреА
    рд╕рдмрд╕реЗ рд╕рд░рд▓ рдорд╛рдорд▓рд╛ - рдмрд╕ рдЕрдХреНрд╖ рдХреЗ рд╕реНрдерд╛рди рдкрд░ рдПрдХ рддрд╛рд░рд╛рдВрдХрди рдЪрд┐рд╣реНрди рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ

рдпрджрд┐ рд╣рдо рдирдХрд╛рд░рд╛рддреНрдордХ рдорд╛рди рд░рдЦрддреЗ рд╣реИрдВ (y1 (x) <0)ред рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдмрд╕ рдЯрд╛рдЗрдк рдХрд░реЗрдВ '|' рдФрд░ рдмрд┐рдВрджреБ рдХреА рд╕реНрдерд┐рддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред

рдЦреИрд░, рд╣рдо рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдПрдХреНрд╕-рдПрдХреНрд╕рд┐рд╕ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред

рддреЛ, рдЬреЛ рдХреЛрдб рд╕рдорд╛рдкреНрдд рд╣реБрдЖ:

 dial_length = 12 label = "  y1 = x**3 - 2*x**2 + 4*x - 8" print("{1:^{0}.6f}".format(dial_length, x_copy)) print("{1:>{0}}".format(len(label) + dial_length, label), '\n') print("{aux[1]:>{aux[0]}}\n {aux[2]:>{aux[0]}}>\n".format(aux = [dial_length + 81, 'y' , 82*'-']), end=''); MAX_Y1_VALUE_DIFFERENCE = (max_y1_value - min_y1_value) + \ (max_y1_value == min_y1_value) RATIO = MAX_Y1_VALUE_DIFFERENCE / 80 AXIS_X_POS = abs(int((- min_y1_value) / RATIO)) if (AXIS_X_POS > 80): AXIS_X_POS = 81 while (is_sequence_decreasing and from_x >= to_x) or \ (not is_sequence_decreasing and from_x <= to_x): y1_cur_value = y1(from_x) cur_y1_value_and_min_difference = (y1_cur_value - min_y1_value) + \ (y1_cur_value == min_y1_value) * \ ((max_y1_value == min_y1_value)) pos_of_y = int(cur_y1_value_and_min_difference * 80 / \ MAX_Y1_VALUE_DIFFERENCE) print("{1:^{0}.6g}".format(dial_length, from_x), end='') if (negative_value_exists): if y1_cur_value <= 0 - RATIO / 2: req_aux = AXIS_X_POS - pos_of_y if (req_aux != 0): print(pos_of_y * ' ' + '*' + (req_aux - 1) * ' ' + '|') else: print((AXIS_X_POS - 1) * ' ' + '*' + '|') elif y1_cur_value >= 0 + RATIO / 2: req_aux = pos_of_y - AXIS_X_POS if (req_aux != 0): print(AXIS_X_POS * ' ' + '|' + (req_aux - 1) * ' ' + '*') else: print((AXIS_X_POS) * ' ' + '|*') else: print(AXIS_X_POS * ' ' + '*') else: print('|' + pos_of_y* ' ' + '*') AXIS_X_POS = 0 from_x += pace_x print((dial_length + AXIS_X_POS) * ' ' + '|\n', (dial_length + AXIS_X_POS - 3) * ' ' + 'x V') 

рдХрдИ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдкрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдЪрд▓рд╛рдПрдВ

рдЫрд╡рд┐
рдЫрд╡рд┐
рдЫрд╡рд┐
рдЫрд╡рд┐

рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ)

рдЫрд╡рд┐

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


All Articles