Jump to content
php.lv forumi

mashiina

Reģistrētie lietotāji
  • Posts

    9
  • Joined

  • Last visited

Posts posted by mashiina

  1.  

    Ā, 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?

  2. 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.

  3. Sveiki.
     
    Vai kāds nevarētu padalīties ar gatavu regex, kurā uztaisītu aktīvu linku pēc maniem piemēriem.
     
    Piemēram:
    https://gist.github.com/anonymous/9602994

    Atgriež
    http://www.google.lv/
     
    Bet vēlētos arī, lai strādā šādā veidā:

    Kāds ar vienu regex var šo uzrakstīt?

  4. Kā varētu izvilkt dzimšanas dienas turpmākām dienām no date tipa lauka?

     

    Šodienai izskatītos šādi:

    select * from tabula where day(dz_datums)='".date("d")."' and month(dz_datums)='".date("m")."'
    

    Bet vēlētos izvilkt ne tikai šodienas, bet ar arī nākamo dienu dzimšanas dienas.

×
×
  • Create New...