рддреНрд░рд┐рдХреЛрдгрдорд┐рддрд┐ рдХреА рдЪрд╛рд▓

рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдЖрдк рд╕реНрдХреВрд▓ рд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдиреБрдкрд╛рдд рдЬрд╛рдирддреЗ рд╣реИрдВ:


 sin  cos betaтИТ sin Alpha рдЧреБрдирд╛ sin beta

рдЧреБрдирд╛


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



рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐


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


 for(int n=0; n < num; n++) { const float t = 2.0f*PI*(float)n/(float)num; const float s = sinf(t); const float c = cosf(t); // do something with s and c ... } 

рд╣рдо рдЪрдХреНрд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ (рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рдХреЛ рджреЗрдЦреЗрдВ), рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдпрд╣ рдХрд▓реНрдкрдирд╛ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ рдЪрд░рдг t рд╕рд╛рде рдЗрд╕ рдЪрдХреНрд░ рдХреЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ n , рдЕрдЧрд▓рд╛ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐, n+1 , sin() рдФрд░ cos() рд▓рд┐рдП t+f рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдЧрд╛ред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, sin(t) рдФрд░ cos(t) рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЧрд┐рдиреЗ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рд╣рдореЗрдВ sin(t+f) рдФрд░ cos(t+f) рдЧрд┐рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:


 const float f = 2.0f*PI/(float)num; const float t = 0.0f; for( int n=0; n < num; n++ ) { const float s = sinf(t); const float c = cosf(t); // do something with s and c ... t += f; } 

рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ t рдХреИрд╕реЗ рдорд┐рд▓реА рдФрд░ рдЗрд╕рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреА рд╕реАрдорд╛ рдХреНрдпрд╛ рд╣реИ (рдКрдкрд░ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ - [0;2 pi] )ред рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬреЛ рд╣рдореЗрдВ рдкрд░реЗрд╢рд╛рди рдХрд░рддреА рд╣реИ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рд▓реВрдк рд╣реИ рдЬреЛ рд▓рдЧрд╛рддрд╛рд░ sin() рдФрд░ cos() рдХреЛ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдХрд╣рддрд╛ рд╣реИ рдЬреЛ рдирд┐рд░рдВрддрд░ рдЪрд░рдгреЛрдВ рдореЗрдВ рдмрдврд╝рддрд╛ рд╣реИ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ,  frac2 pi textрд╕рдВрдЦреНрдпрд╛рд╕рдВрдЦреНрдпрд╛ )ред рдпрд╣ рдЖрд▓реЗрдЦ рдЗрд╕ рдХреЛрдб рдХреЛ рдЧрддрд┐ рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ рдХрд┐ sin() рдпрд╛ cos() рдлрд╝рдВрдХреНрд╢рди (рдЗрдирд░ рд▓реВрдк рдореЗрдВ) рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рддреЗрдЬ sincos() рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдПрдХ рд╣реА рдЧрдгрдирд╛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред


рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рд▓реЗрдЦ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реВрддреНрд░ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдпрджрд┐ рдЪ= рдЕрд▓реНрдлрд╛рдЪрдЕрд▓реНрдлрд╛ рдФрд░ t= рдмреАрдЯрд╛рдмреАрдЯрд╛ рд╣рдо рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ


 sin(t+f) = sin(f)*cos(t) + cos(f)*sin(t) cos(t+f) = cos(f)*cos(t) - sin(f)*sin(t) 

рдпрд╛ рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ


 new_s = sin(f)*old_c + cos(f)*old_s new_c = cos(f)*old_c - sin(f)*old_s 

рдЪреВрдБрдХрд┐ f рдПрдХ рд╕реНрдерд┐рд░ рд╣реИ, sin(f) рдФрд░ cos(f) рднреАред рдХреНрд░рдорд╢рдГ рдЙрдиреНрд╣реЗрдВ a рдФрд░ b рдХрд╣реЗрдВ:


 new_s = b*old_c + a*old_s new_c = a*old_c - b*old_s 

рдпрд╣ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╕реАрдзреЗ рд╣рдорд╛рд░реЗ рдХреЛрдб рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рдФрд░ рдлрд┐рд░ рд╣рдореЗрдВ рдПрдХ рд▓реВрдк рдорд┐рд▓рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдорд╣рдВрдЧреЗ (рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ) рддреНрд░рд┐рдХреЛрдгрдорд┐рддреАрдп рдлрд╝рдВрдХреНрд╢рди рдХрд╣рд▓рд╛рддреЗ рд╣реИрдВ!


 const float f = 2.0f*PI/(float)num; const float a = cosf(f); const float b = sinf(f); float s = 0.0f; float c = 1.0f; for( int n=0; n < num; n++ ) { // do something with s and c ... const float ns = b*c + a*s; const float nc = a*c - b*s; c = nc; s = ns; } 

рд╡реНрдпрд╛рдЦреНрдпрд╛


рдЕрдм рддрдХ, рд╣рдо рдЖрдБрдЦ рдмрдВрдж рдХрд░рдХреЗ рдЧрдгрд┐рдд рдХреЗ рд╕рд╛рде рдЦреЗрд▓ рд░рд╣реЗ рд╣реИрдВ, рдпрд╣ рдирд╣реАрдВ рд╕рдордЭ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдЖрдЗрдП рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЖрдВрддрд░рд┐рдХ рд▓реВрдк рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗрдВ:


sn+1=sna+cnbcn+1=cnaтИТsnb


рдЖрдк рдореЗрдВ рд╕реЗ рдХреБрдЫ рдиреЗ рджреЗрдЦрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╣ рджреЛ-рдЖрдпрд╛рдореА рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЛ рдШреБрдорд╛рдиреЗ рдХрд╛ рдПрдХ рд╕реВрддреНрд░ рд╣реИред рдпрджрд┐ рдЖрдк рдЕрднреА рднреА рдЗрд╕реЗ рдирд╣реАрдВ рд╕рдордЭрддреЗ рд╣реИрдВ, рддреЛ рд╢рд╛рдпрдж рдореИрдЯреНрд░рд┐рдХреНрд╕ рдлреЙрд░реНрдо рдЖрдкрдХреА рдорджрдж рдХрд░реЗрдЧрд╛ред


\ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ (\ рд╢реБрд░реВ {рдореИрдЯреНрд░рд┐рдХреНрд╕} s_ {n + 1} \\ c_ {n + 1} \ рдЕрдВрдд {рдореИрдЯреНрд░рд┐рдХреНрд╕} \ рд╕рд╣реА) = \ рдмрд╛рдПрдВ (\ рд╢реБрд░реВ {рдореИрдЯреНрд░рд┐рдХреНрд╕} рдПрдХ & b \\ -b & a \ рдЕрдВрдд {рдореИрдЯреНрд░рд┐рдХреНрд╕} \ рд░рд╛рдЗрдЯ) \ cdot \ left (\ start {рдореИрдЯреНрд░рд┐рдХреНрд╕} s_ {n} \\ c_ {n} \ end {рдореИрдЯреНрд░рд┐рдХреНрд╕} \ рд░рд╛рдЗрдЯ)

\ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ (\ рд╢реБрд░реВ {рдореИрдЯреНрд░рд┐рдХреНрд╕} s_ {n + 1} \\ c_ {n + 1} \ рдЕрдВрдд {рдореИрдЯреНрд░рд┐рдХреНрд╕} \ рд╕рд╣реА) = \ рдмрд╛рдПрдВ (\ рд╢реБрд░реВ {рдореИрдЯреНрд░рд┐рдХреНрд╕} рдПрдХ & b \\ -b & a \ рдЕрдВрдд {рдореИрдЯреНрд░рд┐рдХреНрд╕} \ рд░рд╛рдЗрдЯ) \ cdot \ left (\ start {рдореИрдЯреНрд░рд┐рдХреНрд╕} s_ {n} \\ c_ {n} \ end {рдореИрдЯреНрд░рд┐рдХреНрд╕} \ рд░рд╛рдЗрдЯ)


рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, sin(t) рдФрд░ cos(t) рдХреЛ рд▓рдВрдмрд╛рдИ 1 рдХреЗ рд╡реЗрдХреНрдЯрд░ рдореЗрдВ рд╡рд░реНрдЧреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╕реНрдХреНрд░реАрди рдкрд░ рдПрдХ рдмрд┐рдВрджреБ рдХреЗ рд░реВрдк рдореЗрдВ рдЦреАрдВрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рд╡реЗрдХреНрдЯрд░ x рдХреЙрд▓ рдХрд░реЗрдВред рдлрд┐рд░, x = \ {\ sin \ beta, \ cos \ beta \}x = \ {\ sin \ beta, \ cos \ beta \} ред рддреЛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рд╡реЗрдХреНрдЯрд░ рд░реВрдк рд╣реИ xn+1=Rxn рдЬрд╣рд╛рдБ R = \ left (\ start {рдореИрдЯреНрд░рд┐рдХреНрд╕} a & b \\ - b & a \ end {рдореИрдЯреНрд░рд┐рдХреНрд╕} \ right)R = \ left (\ start {рдореИрдЯреНрд░рд┐рдХреНрд╕} a & b \\ - b & a \ end {рдореИрдЯреНрд░рд┐рдХреНрд╕} \ right) ред рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░рд╛ рд▓реВрдк рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЛ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рджреЛ-рдЖрдпрд╛рдореА рд░реЛрдЯреЗрд╢рди рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЪрдХреНрд░ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди x рдПрдХ рд╕рд░реНрдХрд▓ рдореЗрдВ рдШреВрдо рдЬрд╛рдПред рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддрд┐ x рджреНрд╡рд╛рд░рд╛ рдШреВрдорддрд╛ рд╣реИ  frac2 pi textрд╕рдВрдЦреНрдпрд╛рд╕рдВрдЦреНрдпрд╛ рд░реЗрдбрд┐рдпрдВрд╕ред
рддреЛ рдореВрд▓ рд░реВрдк рд╕реЗ


 sin  cos betaтИТ sin Alpha рдЧреБрдирд╛ sin beta

рдЧреБрдирд╛


рдпрд╣ рдмрд┐рдВрджреБ рдЧрддрд┐ рд╕реВрддреНрд░ рд╣реИ x = \ {\ cos \ Alpha, \ sin \ Alpha \}x = \ {\ cos \ Alpha, \ sin \ Alpha \} рдХреА рд╡реГрджреНрдзрд┐ рдореЗрдВ рдкрд░рд┐рдзрд┐  рдмреАрдЯрд╛рдмреАрдЯрд╛ рд░реЗрдбрд┐рдпрдВрд╕ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рджреЛ рд░реЛрдЯреЗрд╢рди рдЕрдХреНрд╖реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВрдЧреЗ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, u = \ {\ cos \ beta, \ sin \ beta \}u = \ {\ cos \ beta, \ sin \ beta \} ред рд░реЛрдЯреЗрд╢рди рдХрд╛ рдкрд╣рд▓рд╛ рдШрдЯрдХ рдкреНрд░рдХреНрд╖реЗрдкрдг рд╣реИред x рдкрд░ рдпреВрдпреВ ред рдХреНрдпреЛрдВрдХрд┐ x рдФрд░ рдпреВрдпреВ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд (1 рдХреА рд▓рдВрдмрд╛рдИ рд╣реИ), рдкреНрд░рдХреНрд╖реЗрдкрдг рдЙрдирдХрд╛ рдЕрджрд┐рд╢ рдЙрддреНрдкрд╛рдж рд╣реИред рдЗрд╕рд▓рд┐рдП, s=x cdotu= sin Alpha cdot cos beta+ cos Alpha cdot   $ , рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рджреВрд╕рд░рд╛ рдШрдЯрдХ рдПрдВрдЯреА-рдкреНрд░реЛрдЬреЗрдХреНрд╢рди рд╣реИ, рдЬрд┐рд╕реЗ рд▓рдВрдмрд╡рдд рдЕрдХреНрд╖ рдкрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд░рдХреЗ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╡реА ред рд╣рдо рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдХреЗ рдЗрд╕ рд╡реЗрдХреНрдЯрд░ рдХреЛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдпреВ рдФрд░ рдкрд╣рд▓реЗ рд╕рдордиреНрд╡рдп рдореЗрдВ рд╡рд┐рдкрд░реАрдд рдХреЛ рд╕рдВрдХреЗрдд рдмрджрд▓реЗрдВ: c=x cdotv= cos Alpha cdot cos beta+ sin Alpha cdot   $


рдиреЛрдЯ


рдЖрдорддреМрд░ рдкрд░ рдЖрдкрдХреЛ рдмрд╛рд░-рдмрд╛рд░ рдЗрди рдЫреЛрдЯреЗ рдШреБрдорд╛рд╡реЛрдВ рдХреЛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ | R | = \ рдмрд╛рдПрдБ | \ start {рдореИрдЯреНрд░рд┐рдХреНрд╕} a & b \\ - b & a \ end {рдореИрдЯреНрд░рд┐рдХреНрд╕} \ right | = a ^ 2 + b ^ 2 = \ sin ^ 2 \ рдЕрд▓реНрдлрд╛ + \ cos ^ 2 \ рдЕрд▓реНрдлрд╛ = 1 , рдЬрд┐рд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдЖрд░ рдЬрд┐рд╕ рд╕реНрдерд╛рди рдкрд░ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрд╕рдХрд╛ рд╕реНрдерд╛рди рдШрдЯрддрд╛ рдпрд╛ рдмрдврд╝рддрд╛ рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ x рдПрдХ рд╕рд╣реА рд╕рд░реНрдХрд▓ рдореЗрдВ рдХрджрдо рд╣реЛрдЧрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХреНрдпреЛрдВрдХрд┐ рдХрдВрдкреНрдпреВрдЯрд░ рд╕рдЯреАрдХ рдирд╣реАрдВ рд╣реИрдВ, x рдПрдХ рд╕рд░реНрдкрд┐рд▓ рдореЗрдВ рдЪрд▓реЗрдЧрд╛ рдФрд░ рдЕрдВрддрддрдГ рд░реЛрдЯреЗрд╢рди рдХреЗ рд╕рд░реНрдХрд▓ рдХреЗ рдХреЗрдВрджреНрд░ рдХреЗ рд╕рд╛рде рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рдореБрдЭреЗ рдРрд╕реА рд╕рдорд╕реНрдпрд╛рдПрдВ рдирд╣реАрдВ рдереАрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдмрд╣реБрдд рдмрдбрд╝реА num рд╕рд╛рде рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддред рдЫреЛрдЯреЗ рдореЛрдбрд╝ рдХреЛрдгред


рдЙрджрд╛рд╣рд░рдг


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


Xk= sumNтИТ1n=0xneтИТ frac2 piiNkn quadk=0,1, ldots,NтИТ1


рдореЗрд░рд╛ рдлрд╝рдВрдХреНрд╢рди 16-рдмрд┐рдЯ рд╕реНрдЯреАрд░рд┐рдпреЛ рдСрдбрд┐рдпреЛ рдмрдлрд░, x рднреА рд▓реЗрддрд╛ рд╣реИ, рдФрд░ рдзреНрд╡рдирд┐ y рдХреЗ рдзреНрд╡рдирд┐ рд╕реНрдкреЗрдХреНрдЯреНрд░рдо рдХреЗ рдкрд╣рд▓реЗ 128 рдЖрд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рджреЗрдЦреЗрдВ рдХрд┐ рдЖрдВрддрд░рд┐рдХ рд▓реВрдк рдХрд╛ рдЖрдпреЛрдЬрди рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ 4096 рдмрд╛рд░ рдЪрд▓рддрд╛ рд╣реИ: sin() рдпрд╛ cos() рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрд▓ рдирд╣реАрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрдиреНрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдпреЗ рдХреЙрд▓ рд╣реЛрдВрдЧреЗред


 #include <math.h> void iqDFT12( float *y, const short *x ) { for( int i=0; i<128; i++ ) { const float wi = (float)i*(2.0f*3.1415927f/4096.0f); const float sii = sinf( wi ); const float coi = cosf( wi ); float co = 1.0f; float si = 0.0f; float acco = 0.0f; float acsi = 0.0f; for( int j=0; j<4096; j++ ) { const float f = (float)(x[2*j+0]+x[2*j+1]); const float oco = co; acco += co*f; co = co*coi - si*sii; acsi += si*f; si = si*coi + oco*sii; } y[i] = sqrtf(acco*acco+acsi*acsi)*(1.0f/32767.0f); } } 

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


All Articles