L i9ddlZddlmZmZmZddlZddlmZ ddlm Z m Z m Z m Z mZddlmZmZmZmZmZGddZGdd ZGd d Zy) N)assert_array_almost_equalassert_almost_equalxp_assert_close) cont2discrete)dlsimss2tfss2zpklsimlti)tf2ssimpulsedimpulsestepdstepcZeZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd Zy)TestC2Dctjdtj}tjddtj}tjddgddgddgg}tjdgdgd gg}d tjdz}tjdd }d}t ||||f|d \}} } } } t ||t || t || t || t|| y)N)dtyper????Qտ)a?g6 <S?zohmethod)npeyefloat64fullarrayc2drr) selfacbcccdcad_truthbd_truth dt_requestedadbdcddddts k/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/scipy/signal/tests/test_cont2discrete.pytest_zohzTestC2D.test_zohs VVARZZ ( WWVS 3 XXc{S#Jd < = XXuseeW- .$rvvay0776#45  "b"b!1<NBB!(B/!(B/!"b)!"b)L"-ctjd}tjdd}tjddgddgddgg}tjdgdgdgg}d tjdz}tjdd }|}tjd gd gd gg}d} t ||||f| d\} } } } }t || t || t || t || t | |y)Nrrrrrrrrrgm?g>."?g4pL ?g.Ȫq¿fohr r"r#r%r&r'rrr(r)r*r+r,r-r.cd_truthdd_truthr/r0r1r2r3r4s r5test_fohzTestC2D.test_foh#s VVAY WWVS ! XXc{S#Jd < = XXuseeW- .%rvvay0776#4588/0/00134  "b"b!1<NBB!(B/!(B/!(B/!(B/L"-r7ctjd}tjdd}tjddgddgddgg}tjdgdgdgg}dtjdz}tjdd }|}tjd gdgd gg}d} t ||||f| d \} } } } }t || t || t || t || t | |y)Nrrrrrrrrg)a?g?g?r r r:r;s r5 test_impulsezTestC2D.test_impulse:s VVAY WWVS ! XXc{S#Jd < = XXusecU+ ,%rvvay0776#4588fXuvh78  "b"b!1<(13BB "(B/!(B/!(B/!(B/L"-r7c4tjd}tjdd}tjddgddgddgg}tjdgdgdgg}d}d }d tjdz}tjdd }tjd d gd d gd d gg} tjdgdgdgg} t ||||f|d|\} } } }}t || t || t | | t | |y)NrrrrrrrrUUUUUU?g?333333??333333?ffffff?皙?= ףp=ʿgbtr!alphar"r#r%r&r'r)r(r)r*r+r,r/rKr-r.r<r=r0r1r2r3r4s r5test_gbtzTestC2D.test_gbtPs# VVAY WWVS ! XXc{S#Jd < = XXuseeW- . ?7763'88c3Z!3Z!3Z)*88eW!U$X'(!"b"b!1<(-U<BB "(B/!(B/!(B/!(B/r7ctjd}tjdd}tjddgddgddgg}tjdgdgdgg}d}d tjdz}tjdd}tjddgddgddgg}|} t ||||f|d \} } } } }t || t || t || t | | t ||y) Nrrrrrrrr?eulerr r:r(r)r*r+r,r/r-r.r<r=r0r1r2r3r4s r5 test_eulerzTestC2D.test_eulerjs VVAY WWVS ! XXc{S#Jd < = XXuseeW- . ?7764(88dC[!3Z!4[*+ "b"b!1<(/1BB "(B/!(B/!(B/!(B/L"-r7c.tjd}tjdd}tjddgddgddgg}tjdgdgdgg}d}d tjdz}tjdd}tjd d gd d gd dgg}tjd gdgd gg} t ||||f|d \} } } } }t || t || t || t | | y)Nrrrrrrrrg@rOg?gzG? backward_diffr rLrQs r5test_backward_diffzTestC2D.test_backward_diffs VVAY WWVS ! XXc{S#Jd < = XXuseeW- . ?7763'88c3Z!3Z!3Z)*88eW!U#W&'!"b"b!1<(79BB "(B/!(B/!(B/!(B/r7ctjd}tjdd}tjddgddgddgg}tjdgdgdgg}d}d tjdz}tjdd }tjdd gd d gd d gg}tjd gd gd gg} t ||||f|d\} } } } }t || t || t || t | | t ||dtjdz}tjdd}tjddgddgddgg}tjdgdgdgg} d }t ||||f|d\} } } } }t || t || t || t | | t ||y)Nrrrrrrrrg?rBgUUUUUU?g?g>X%bilinearr gffffff?rGrDrErCrFrHr:rQs r5 test_bilinearzTestC2D.test_bilinears VVAY WWVS ! XXc{S#Jd < = XXuseeW- . *7769-88c9-'3'35688/0'[0134!"b"b!1<(24BB "(B/!(B/!(B/!(B/L"-?7763'88c3Z#sc3Z@A88eWsefX67  "b"b!1<(24BB "(B/!(B/!(B/!(B/L"-r7c2tjgd}tjgd}tjgdg}tjgd}d}t||f|d\}}}t||t||t ||y)N)rrr)rrr)rBgNZۿgϱ)_?)rg]Ogoh?rrr )r"r&r'rr) r(numcdencnumddendr/numdenr4s r5test_transferfunctionzTestC2D.test_transferfunctions|xx)*xx)*xxKLMxxDE D$<eD S"!$,!$,L"-r7c`tjddg}tjdtjdz dtjdz g}d}ddg}d d g}d}d}t|||f|d \}} } } t ||t || t || t || y) Nrgy?ryrgwRN?g.-. ?y\9O?(?y\9O?(ֿrr )r"r&sqrtr'rr) r(zeros_cpoles_ck_czeros_dpolls_dk_dr/zerospoleskr4s r5test_zerospolesgainzTestC2D.test_zerospolesgains((C;'((C"''!*,dRWWQZ.?@A#%6799; !7GS"9<).0ua "'51!'51C#L"-r7cd}d}d}d}t||||\}}t||||\}}} d} d} dd| z | z|zzd| | z|zz z } | |zd| | z|zz z } |d| | z|zz z }|| |z| zz}t| | ||\}}t||f| d| \}}}t||t||t| | ||\}}}t||| f| d| \}}}}t||t||t||y) z7Test method='gbt' with alpha=0.25 for tf and zpk cases.grrrrrIrJN)rr r'r)r(ABCDcnumcdenczcpckhrKAdBdCdDddnumddenc2dnumc2ddenr4dzdpdkc2dzc2dpc2dks r5test_gbt_with_sio_tf_and_zpkz$TestC2D.test_gbt_with_sio_tf_and_zpks]    1aA& dAq!Q' B 1u9/A%%!eai!m*; < Ua%!)a-' ( !eai!m# $ R 2r2r* d!$qeLf%f%BB+ B #BB<5NdD"D!D!D!r7c,d}tjdgg}tjdgg}tjdgg}tjdgg}d}tjddd}|d|dz }||} t||||f|| | \}} } t ||||f|d } d | d d| dd zz} |d d}t | | j dd||\}}}d | d d| dd zz}t|j|dy )a Test that the solution to the discrete approximation of a continuous system actually approximates the solution to the continuous system. This is an indirect test of the correctness of the implementation of cont2discrete. c2tjd|zS)Ng@)r"sin)ts r5uz'TestC2D.test_discrete_approx..us66#'? "r7g{GzrrGrg$@er)TUX0rWr rN)rrx0g-C6?rtol) r"r&linspacer r'rreshaperravel)r(rabcdrrr4u1youtxoutdsysu2t2td2yd2xd2ymids r5test_discrete_approxzTestC2D.test_discrete_approxs2 # HHugY  HHseW  HHseW  HHseW   KK4 % qTAaD[ qTaAq\Q"< 4Aq!Q<J7BsGbf$ % sVdbjjQ&72"E S# d3Bi$qr(*+ T5r7cddgddggddgf}t|d\}}}|dk(sJt|ddgdt|ddgddggdy) Nrr{Gz?gUxegMbP?rrgT(|)r'r)r(tfr^r_r4s r5 test_simo_tfzTestC2D.test_simo_tf<se1v1vA '2t} S"Tzza.T:q"g;'78tDr7cNd}ddgddggddgf}t||\}}}|dd|df}t||\}}} |dd|df} t| |\} } } || k(sJ|| k(sJt|tj|| fdt||dt|| dy)NrrrgvIh%<=r)r'rr"vstack)r(tsrr^r_r4tf1num1den1dt1tf2num2den2dt2s r5test_multioutputzTestC2D.test_multioutputEs 2wA!Q (2r{ S"!uQxAc2,dC!uQxAc2,dCSyySyy RYYd|45A T.T.r7N)__name__ __module__ __qualname__r6r>r@rMrRrUrXr`rlrrrrr7r5rrsG.&...,04.002*.X ..(("T&6PE/r7rceZdZdZdZy) TestC2dLtic:tjddgddgg}tjdgdgg}tjddgg}d}d}tjdd gd d gg}tjd gd gg}t||||}|j|} t | j |t | j |t | j|t | jtj| jt||} t | j |t | j |t | j|t | jtj| jy)Ng333333ӿ皙?rGgffffffrrg?gГr7ctddgddg}|jd}tjddg}tjddg}t |j |d t |j |d y) NrrCrg?g{Gzt?gi ߿gY쭛]g{Gz?)atol)r rr"r&rr_r^)r(sysnum_resden_ress r5 test_c2d_tfzTestC2dLti.test_c2d_tfysp3*sCj)ooe$((C!345((C!345 t4t4r7N)rrrrrrr7r5rr]s ?6 5r7rc2eZdZeddggdddfeddggdddfedgd ddfgZej jd ed Zej jd ed Z ej jd ed Z y)TestC2dInvariantsr)rrOrr r)rrOrrr)rrrrzsys,sample_time,samples_numberctj||z}t||\}}tt ||dt |\}}t ||jz|djy)Nrr r nr)r"aranger rr'lenrrr(r sample_timesamples_numbertime_ yout_cont yout_discs r5test_impulse_invariantz(TestC2dInvariants.test_impulse_invariantshyy(;6sd+ 9CY G"%d)- 9 ioo&7719K9K9MNr7ctj||z}t||\}}tt ||dt |\}}t |j|djy)Nrrr rr)r"rrrr'rrrrs r5test_step_invariantz%TestC2dInvariants.test_step_invariants`yy(;6C4( 9Sk%@CIN 9 )9Q<+=+=+?@r7ctj||z}t|||\}}}tt ||d|\}}}t |j |j y)N)rrr9r )r)r"rr rr'rrrs r5test_linear_invariantz'TestC2dInvariants.test_linear_invariants\yy(;6sdd39aCU CtL9a )9??+<=r7N) rrrr casespytestmark parametrizerrrrr7r5rrs 1v{ #T2. 1v~ &R0 sL !3+ E [[=uEOFO [[=uEAFA [[=uE>F>r7r)numpyr"scipy._lib._array_apirrrr scipy.signalrr'rrr r r r r rrrrrrrr7r5rsH-88>> L/L/\ '5'5T!>!>r7