3 PoeB@sddlZddlZddlZddlmZejfddZddZddZ d d Z d d Z d dZ ddZ ddZd&ddZddZddZddZddZddZd d!Zd"d#Zd$d%ZdS)'N) curve_fitcCsbg}g}xLtt|D]<}|||ko0|knr|j|||j||qWt|||S)N)rangelenappendr)xyxminxmaxfuncxfyfir%/home/armin/python/fajho2.0/FHeval.pydo_fit srcCs||_||_t|j|j||\}}|jdt|dt|d|j||d|_|d|_ |d|_ t j t j |}|d|_dS)Nu Előszakasz illesztése, x[z; z], y = p0*x + p1Tr) base_startbase_endrrrlogstr fitreportbBasebase_abase_bnpsqrtdiagDbase_a)measrr paramscovsperrrrrfitbases"   r"c Cs|jstddS||_||_g}g}xTtt|jD]B}||j|koR|knr6|j|j||j|j|q6Wd}d}d}t dd|||||fd\} } |j dt |d t |d |j | | d |_ | d |_| d |_| d|_tjtj| } | d |_dS)NzError: missing base fitg @gMbP?cSs|tj| ||S)N)rexp)tabcrrr9szfitexp..)p0u Exponenciális illesztése: x[z; z], y = p0*exp(-p1 * x) + p2Trr)rprint exp_startexp_endrrrrrrrrrbExpexp_Aexp_bexp_crrrDexp_b) rrr r r r a_guessb_guessc_guessrr r!rrrfitexp&s."    r7csjstddSjs$tddS|dks6|dkrpg}g}xXttjD]F}jj|konjknrN|jj||jj |qNWd}d}j }|dkrt dd |||||fd \} } j d td nFt fd d ||||fd \} } j dt j tdt j j| | d_d_| d_| d_|dkrd| dnj _n|dks|dkr|g} g} xttjD]}jdj|koˆjknr| jj|| jtjj|jjjj|kojdknr| jj|| jj qWddlm} | | | _d_d_j dtdntdS)Nz"Error in dualfit: missing base fitz!Error in dualfit: missing exp fitr$eg @gMbP?freecSs|tj| ||S)N)rr$)r%r&r'r(rrrr)cszdualfit..)r*uU Kettős illesztés: exponenciális előszakasz korrekció, y = p0*exp(-p1 * x) + cuTKettős illesztés: exponenciális előszakasz korrekció, y = p0*exp(-p1 * x) + ccs|tj| |jS)N)rr$r2)r%r&r')rrrr)gsue Kettős illesztés: exponenciális előszakasz korrekció [fixált limesz], y = p0*exp(-p1 * x) + udKettős illesztés: exponenciális előszakasz korrekció [fixált limesz], y = p0*exp(-p1 * x) + TFrrr+splinesr#) CubicSplineu? Kettős illesztés: előszakasz korrekciója köbös spline-alu>Kettős illesztés: előszakasz korrekciója köbös spline-al)rr,r/rrrrrrrr2rrrrbBaseExp bBaseSpline baseexp_A baseexp_b baseexp_cFHutilflinrrr-Zscipy.interpolater< basespline cleardualfit)rmethodlimitr r r r4r5r6rr Z tandata_xZ tandata_yr<r)rrdualfitJs\"      **    rHcCsd|_d|_dS)NF)r>r=)rrrrrEsrEcCs6|jstddS|js$tddS|j}g|_xtt|jD]}|j||krf|jj|j |q@|j|}g}g}xTtt|jD]B}||j|ko|knr|j|j||j|j |qWt ||j|}x$tt|D]}|||8<qW|jj|j ||j t j ||q@Wd|_dS)NzError: base fit not foundz Error: exponential fit not foundT)rr,r/rTsrrrrr getTkValuer1rBtrapcalcbTs)r startpointr r%r r jTkrrrgetTss. (rPcCs|jstddS|js$tddS|j}g|_d}xtt|jD]}|j||krj|jj|j |qDt ||j|}t j ||j|d|j |d||j||j ||}|jj|j ||j |qDWd|_dS)NzError: base fit not foundz Error: exponential fit not foundrrT)rr,r/rrIrrrrrrJrBtrapaddr1rL)rrMpresumr rOrrrgetTsOptimizeds : rScCs|jstddS|js$tddS|j}tj||j|j}g|_d}xt t |j D]}|j ||kr||jj |j |qVtj|j ||j|j}tj||j |d|j |d||j ||j ||}|jj |j ||j|||qVWd|_dS)NzError: base fit not foundz Error: exponential fit not foundrrT)rr,r/rrBrCrrrIrrrrrrQr1rL)rrMZTk0rRr Tkirrr getTsReviseds":(rUindepcCs|jstddS|dkr|jrZ||jkrrrBrCrrr-floatrDr2r=fexpr?r@rAr/rrrrraverage)rxpaTkr rrrrJs(  *"rJcCsj|jstddSg}xHtt|jD]6}|j|j|koF|jknr&|j|j|q&Wt j |S)Nz#Error in getDTk(): missing base fitF) rr,rrrrrrrrstd)rr]r rrrgetDTks"r_cCs|jstddS||_||_t|j|j||\}}|jdt|dt|d|j ||d|_ d|_ |d|_ |d|_ tjtj|}|d|_|jr|j |j|_|j|j|_dS)NzError: missing T* fitu( (Korrigált) Főszakasz illesztése: x[z; z] onto T*, y = p0*x + p1Trr)rLr, main_startmain_endrrrIrrrbMainbMainCorrectedmain_amain_brrrDmain_arr main_a_corrr Dmain_a_corr)rrr rr r!rrrfitmaincorrecteds""    ricCs|jstddS|js$tddS|js6tddStdt|jdt|jdtj|\}}}tdt|dt|dtd t|j dt|j d td t|j dt|j d |d |j|j |_ d |||j|j|j |j |_tdtdt|j dt|j|j d|j |j |_|j|j |j |_tdt|jdt|j|jdd|_|jd|jdt|jdt|jd|jdt|dt|d|jd t|j dt|j d |jd t|j dt|j d |jd|jdt|j dt|j|j d|jdt|jdt|j|jd|jdt|jdd8}td|dt|j |j|j |j|j|j|dWdQRXdS)NzError: missing basezError: missing mainzError: missing expzR = (z +/- z) OhmzU = (z) Vza = (z) K/szBeta = (z) 1/sr+z=======================zCp = (z) J/KzAlfa = (z) W/KTu$ Kalibrációhoz szükséges adatok:uA jegyzőkönyvben nem elég a végeredményt közölni! (A számolás menetének követhetőnek kell lennie az olvasó számára.) z .fh_configwz2# Cp [J/K], D(Cp) [J/K], alfa [W/K], D(alfa) [W/K])file)rr,rbr/rRDRrBgetheatingdatardrfr1r3CpdCpalfadalfabCalibropen directory)rr%UDUfrrrcalib.sD$ $$&** &"&& ,,  rycCsl|jstddS|js$tddS|js6tddStdt|jdt|jdtj|\}}}tdtdt|jdt|jdtdt|dt|d td t|j dt|j d |d |j|j }d |||j|j|j |j }td tdt|dt||dtdt||j dt|||j |j d|j d|j dt|jdt|jd|j dt|dt|d |j d t|j dt|j d |j d |j dt|dt||d|j dt||j dt|||j |j d|j d|j ddS)NuYHiba: hiányoznak a kalibrációs adatok! Először a vízérték mérést értékeld ki!zError: missing base fitzError: missing main fitzR = (z +/- z) Ohmu Cm-hez szükséges adatok:zU = (z) Vza = (z) K/sr+z=======================zCk = (z) J/KzCm = (uA jegyzőkönyvben nem elég a végeredményt közölni! (A számolás menetének követhetőnek kell lennie az olvasó számára.)uRTovábbi otthoni feladat a fajhőt az utószakasz paramétereiből meghatározni. )rsr,rrbrrlrmrBrnrdrfrorpr)rr%rvrwZCkZdCkrrrrafut_s:$$ $$$6 &"& &8 rzcCsfg}xLtt|jD]:}|d|j|ko8|dknr|j|j|qWtj|tj|fS)NrWrX)rrrrheaterrr[r^)rpositionZTm_lr rrrgetTms &r}cCsZ|jstddS|js$tddS||_g}g}xTtt|jD]B}||j|ko^|knrB|j|j||j|j|qBW|d}t ||\}}t ||} t |} x.tt|D]}||t |||8<qWt j ||} |j|| |j| ||} t|| |||j|jt|j| |j|| ||d| t|j ||| t| |||j|jt|j| ||j| ||d|} tdt|dt|dtdt| dt| dtd t|d td t|d td t|d tdt| dtdtdt| dt| d|jd|jdt|dt|d|jdt| dt| d|jd t|d |jd t|d |jd t|d |jdt| d|jd|jdt| dt| d|jd|jddS)NuYHiba: hiányoznak a kalibrációs adatok! Először a vízérték mérést értékeld ki!zError: missing exp fitrr+zTm = (z +/- z) CzT0 = (zt0 = z szt = zT(t) = z Cz Integral = z Csz=======================zCm = (z) J/KuN Fajhő számításhoz szükséges adatok (beejtés adatsor integrálásával)uk Ez csak egy integrál eredménye, a végeredményt az iterált határú integrálok adatsorából kapjuk. uRTovábbi otthoni feladat a fajhőt az utószakasz paraméteréből meghatározni. )rsr,r/t_beejtrrrrrr}rJr_rBrKrorqabsrprrrr)rrr r r r ZTtTmDTmrOZDTkintegcmZDcmrrr integratesR       "" " rc Cs(|jstddS|js$tddS|js6tddS||_t||\}}t||}g}g}g} xtt|j D]} ||j | ko|knrr|j |j | g} g} xZtt|j D]H} ||j | ko|j | knr| j |j | | j |j | qWx0tt| D] } | | t|| | 8<qWt j | | }|j || j |j | qrWg}xHtt|D]8} |j |j| | ||j|| || | qvWt|jdd@}td|dx,tt|D]} t|| || |dqWWdQRXtj||_tj||_||fS)NuYHiba: hiányoznak a kalibrációs adatok! Először a vízérték mérést értékeld ki!zError: missing expzError: missing basez%OUTfajho_beejtesSorozatosIntegral.datrjz# t [s], Cm [J/K])rk)rsr,r/rrr}rJrrrrrrBrKrorqrtrurr[ beejtAtlagr^ dIntegral)rrxmax1xmax2rrrO integralsuplimsTtsr r r rNrcmsrxrrrserialintegratesN $   8 &  rc Cs|jstddS|js$tddS|js6tddS||_t||\}}t||}g}g}g} g} d} xtt|j D]} ||j | krt||j | } t j | |j | d|j | d| |j | |j | | } ||j | ko|knrx|j |j | |j | | j |j | | j |j| d ||j|d || d qxWt|jdd@}td|d x,tt|D]} t|| | | |d q~WWdQRXtj| |_tj| |_|| fS) NuYHiba: hiányoznak a kalibrációs adatok! Először a vízérték mérést értékeld ki!zError: missing expzError: missing baserrz%OUTfajho_beejtesSorozatosIntegral.datrjz# t [s], Cm [J/K])rkr~r~r~)rsr,r/rrr}rJrrrrBrQrrrorqrtrurr[rr^r)rrrrrrrOrrrrrRr rTrxrrrserialintegrateOptimized sB : 6 &  r)rV)osnumpyrrBZscipy.optimizerrCrr"r7rHrErPrSrUrJr_riryrzr}rrrrrrrs(  $>#  1(==