3 e?@sddlZddlZddlZddlmZejfddZddZddZ d d Z d d Z d dZ ddZ d$ddZddZddZddZddZddZddZd 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 : rSindepcCs|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""    rgcCs|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,r`r/rRDRrBgetheatingdatarbrdr1r3CpdCpalfadalfabCalibropen directory)rr%UDUfrrrcalibsD$ $$&** &"&& ,,  rwcCsl|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. )rqr,rr`rrjrkrBrlrbrdrmrnr)rr%rtruZCkZdCkrrrrafutAs:$$ $$$6 &"& &8 rxcCsfg}xLtt|jD]:}|d|j|ko8|dknr|j|j|qWtj|tj|fS)NrUrV)rrrrheaterrrYr\)rpositionZTm_lr rrrgetTmis &r{cCs|jstddS|js$tddSg}g}xTtt|jD]B}||j|koX|knr<|j|j||j|j|qs&  $>#  1(7B