mashiina Posted April 8, 2014 Report Share Posted April 8, 2014 (edited) Sveiki. Var kāds palīdzēt un pārvērst to uz PHP/JavaScript? http://www.ptac.gov.lv/page/553 Padod trīs vērtības: summa, termiņš dienās, pārmaksa. Kā šo daļu var uzrakstīt iekš PHP? Ja būtu parasti kvadrātsakne, tad izmantotu sqrt() f-iju, bet kā ir šajā gadījumā? Edited April 8, 2014 by mashiina Quote Link to comment Share on other sites More sharing options...
xPtv45z Posted April 8, 2014 Report Share Posted April 8, 2014 Izlasi pirmo un vienīgo komentāru - http://lv.php.net/sqrt Quote Link to comment Share on other sites More sharing options...
mashiina Posted April 8, 2014 Author Report Share Posted April 8, 2014 (edited) Es piemirsis biju kā matemātiski to rēķina. <? echo pow(1.1, 1/(14/365)); ?> Edit: Pēc linka pirmā piemēra saprotams, bet kā atrisināt uz vairākiem mēnešiem? Edited April 9, 2014 by mashiina Quote Link to comment Share on other sites More sharing options...
mashiina Posted April 9, 2014 Author Report Share Posted April 9, 2014 Šāds princips būtu vairākiem mēnešiem. Kā no šī vienādojuma var izteikt x? Quote Link to comment Share on other sites More sharing options...
draugz Posted April 9, 2014 Report Share Posted April 9, 2014 Lai aprekinatu, tev jau nav jaizsaka x, vienkarsi cikla veic darbibas un sanemsi savu GPL Quote Link to comment Share on other sites More sharing options...
marrtins Posted April 9, 2014 Report Share Posted April 9, 2014 Kāpēc codez vēl šo nav atrisinājis?? Cik dienas jau pagājušas? Quote Link to comment Share on other sites More sharing options...
mashiina Posted April 10, 2014 Author Report Share Posted April 10, 2014 (edited) Lai aprekinatu, tev jau nav jaizsaka x, vienkarsi cikla veic darbibas un sanemsi savu GPL Ja domā pēc pirmā piemēra, tad tā nebūs pareizi. Pirms tam nepareizi izteicos. Nevis vajag izteikt x, bet gan to pārnest vienā pusē-otrā pusē paliek neatrisināti skaitļi, lai saprastu ar kurām vērtībām ir jāveic darbības. Edited April 10, 2014 by mashiina Quote Link to comment Share on other sites More sharing options...
codez Posted April 10, 2014 Report Share Posted April 10, 2014 Ā, es domāju, ka problēma ir triviāla un neprasa manu skaidrojumu. Tā kā funkcija acīmredzami ir bez minimumiem un maksimumiem, tad x var ļoti viegli atrast ar bināro meklēšanu. Izveidojam funkciju f(x)=0, tas ir visu pārnesam vienā pusē, lai otrā pusē būtu nulle. Tad izvēlamies iespējamo minimumu un maksimumu un ņemam x pa vidu, pēc kā izrēķinam funkcija rezultātu un attiecīgi uz jauno vietu pārbīdām minimumu vai maksimumu. http://codepad.org/eimN3SzZ <?php function f($x){ return 20/pow(1+$x,14/365)+24/pow(1+$x,28/365)+1-40; } $min=-999999999; $max=999999999; while(abs($max-$min)>0.000001){ $cur=($max+$min)/2; $rez=f($cur); if ($rez<0) $max=$cur; else $min=$cur; } echo $cur*100; Quote Link to comment Share on other sites More sharing options...
mashiina Posted April 10, 2014 Author Report Share Posted April 10, 2014 (edited) Ā, es domāju, ka problēma ir triviāla un neprasa manu skaidrojumu. Tā kā funkcija acīmredzami ir bez minimumiem un maksimumiem, tad x var ļoti viegli atrast ar bināro meklēšanu. Izveidojam funkciju f(x)=0, tas ir visu pārnesam vienā pusē, lai otrā pusē būtu nulle. Tad izvēlamies iespējamo minimumu un maksimumu un ņemam x pa vidu, pēc kā izrēķinam funkcija rezultātu un attiecīgi uz jauno vietu pārbīdām minimumu vai maksimumu. http://codepad.org/eimN3SzZ <?php function f($x){ return 20/pow(1+$x,14/365)+24/pow(1+$x,28/365)+1-40; } $min=-999999999; $max=999999999; while(abs($max-$min)>0.000001){ $cur=($max+$min)/2; $rez=f($cur); if ($rez<0) $max=$cur; else $min=$cur; } echo $cur*100; Mazliet palaboju priekš sevīm. <? function f($x,$payments,$amount,$split_months=false){ foreach($payments as $payment => $term){ $out+=$payment/pow(1+$x,$term/($split_months?12:365)); } return $out-$amount; } $payments_arr=array( "3.00"=>"0", "25.18"=>"1", "25.180"=>"2", "25.1800"=>"3", "25.18000"=>"4", "25.180000"=>"5", "25.1800000"=>"6", "25.18000000"=>"7", "25.180000000"=>"8", "25.1800000000"=>"9", "25.18000000000"=>"10", "25.180000000000"=>"11", "25.1800000000000"=>"12", ); $amount=200; $split_months=true; $min=-999999999; $max=999999999; while(abs($max-$min)>0.000001){ $cur=($max+$min)/2; $rez=f($cur,$payments_arr,$amount,$split_months); if ($rez<0) $max=$cur; else $min=$cur; } echo $cur*100; Ja $payments_arr masīvā būs vienāds key skaitlis, tad x neatradīs. Kā šo varētu izlabot? Edited April 10, 2014 by mashiina Quote Link to comment Share on other sites More sharing options...
codez Posted April 10, 2014 Report Share Posted April 10, 2014 uztaisi 2D masīvu: array( array("payment"=>25.123, "term"=>1), array("payment"=>25.123, "term"=>2), array("payment"=>25.123, "term"=>3) ) Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.