| [help]gan, gimana cara mengambil nilai iterasi sebelumnya dalam nested loop kemudian mengurangi nilai tersebut dengan nilai iterasi sekarang dan kondisi berhenti jika selisih < 0,5?
define('DIV', 0.5);
if(???????){ if(???????$bagi_max2 - $bagi_max < DIV){ return $bagi_max2; } }else{ if(??????????????????? $bagi_max2 - $temp_max < DIV){ return $bagi_max2; } }
mohon bantuan gan :3
http://pastebin.com/qdTc2vhw |
|
| logiknya gak jelas secara $bagi_max,$bagi_max2,$temp_max adalah array tapi dibandingkan dengan skalar ... check u'r logic again ^_^V |
|
| yg diatas itu cuma perumpamaan aja om di if nya supaya tau mana saya tanyakan om, gini om, lajutan dari yg om bntu kemaren, di sini saya mau buat kodisi berhenti looping apa bila selisih iterasi sekarang dengan iterasi sebelumnya < 0,5 sya bingung gimana cara memainkan temp nya om mohon bantuan om :3
iterasi 1: Array ( [0] => 2.2833750178913 [1] => -5.5330430128208 [2] => 1 ) iterasi 2: Array ( [0] => 1.3516058348271 [1] => -1.0537765826253 [2] => 1 ) cek => apakah value tiap2 hasil = iterasi 2 - iterasi 1 < 0,5 [0] => 1.3516058348271 - [0] => 2.2833750178913 [1]=> -1.0537765826253 - [1] => -5.5330430128208 [2] => 1 - [2] => 1 tidak, karena tidak semua selisih nilai < 0,5
iterasi 3: Array ( [0] => 1 [1] => -0.84529541177875 [2] => 1.3752366637024 )
cek => apakah value tiap2 hasil = iterasi 3 - iterasi 2 < 0,5 [0] => 1 - [0] => 1.3516058348271 [1] => -0.84529541177875 - [1] => -1.0537765826253 [2] => 1.3752366637024 - [2] => 1 |
|
| contoh datanya gimana? |
|
| maaf om mau nyunting mati listrik :3 ini om lengkapnya http://pastebin.com/YgUFrubs |
|
| gmna yg ini om? :3 |
|
| udah pernah diajarin cara berpikirnya belum? [1] mulai dari yang global dulu.., anggaplah ini adalah suatu sistem, maka ada 3 komponen utama: input-proses-output; tentukan 3 komponen itu. Semisal: input: -data matrix n x n -nilai max awal -nilai limit
proses: - iterasi selama kondisi limit terpenuhi
output: - matrix
[2] karena iterasi bukan berdasarkan nilai counter, tetapi berdasarkan pengujian kondisi diakhir , maka yang tepat gunakan adalah pengulangan dengan "do while"
[3] buat prototipe sistemnya, semisal: $data=array(...); $limit=(); $max=array(..); do{ $hasil=fungsi($data); $data=$hasil; $kondisi=cek($hasil,$max,$limit); }while($kondisi);
[3] jabarkan masing2 fungsi sesuai dengan proses yang ada..
btw, anyway... buat dulu contoh kasusnya dalam coretan2 (manual).. bandingkan hasilnya langkah demi langkah (udah bisa nge-trace program/script nya kan?)
.. yang jelas.. pahami dulu proses dan algoritmanya ... terangkan alur prosesnya dimari.. kalo belum bisa neranginnya berarti belum paham.. belajar lagi.. kalo udah bisa nerangin baru tanya kesulitan di php-nya gimana..
yang ini http://pastebin.com/HzSd1Se0 BUKAN jawaban hanya contoh... tentang bagaimana algoritmanya, bagaimana caranya .. itu diluar kompentensi ane karena logik yang diinginkan ane gak tau maaf ane nubi gak bisa koding cuman ngasal koming aja .. ^_^V |
|
| sblumnya terima kasih telah membantu pak,
blum pernah jmpa yg seperti ini pak makanya sya kbingungan :3
gini pak, untuk multiply nya gambaran prosesnya sprti ini: iterasi 1 data * data = R2 iterasi 2 R2 * R2 = R2R2 iterasi 3 R2R2 * R2 = R2R2R2 iterasi 4 R2R2R2 * R2 = R2R2R2R2 Dst.... gimana cara inisialisai, meyimpan R2 dan memanggilnya kembali pada proses berikutnya dalam loop do - while? bingung pak :3 |
|
| udah pelajarin yg di pastebin tsb ? |
|
| udah saya pelajari pak, khususnya pada fungsi iterasi yg didalamnya ada do - while, tapi untuk multiply nya yg kurang pas pak, karena yang dipanggil pada iterasi: iterasi 1 data * data = R2 iterasi 2 R2 * data = R2data iterasi 2 R2data * data = R2datadata dst
seharusnya sprti ini pak: iterasi 1 data * data = R2 iterasi 2 R2 * R2 = R2R2 iterasi 3 R2R2 * R2 = R2R2R2 iterasi 4 R2R2R2 * R2 = R2R2R2R2
bingung gimana meyimpan dan memanggil kembali R2 |
|
| coba lihat kembali di http://pastebin.com/HzSd1Se0 terutama baris 74.. how i do that ^_^V |
|
| :3 dari tadi saya coba seperti ini pak $matrix2=$matrix3; malah ganda jadi ganda ternyata pakai if :3 terima kasih pak
saya coba dulu untuk condition berhentinya jika selisih $div_max iterasi sekarang dengan iterasi sebelumnya < 0.5 |
|
| dari semalaman saya search ampe stackoverflow blum ad yg jumpa mirip sprti kasus ini untuk kondisi berhentinya pak :3 mohon bantuan lagi pak :3
untuk kondisi berhentinya di cek dari selisih antara $selisih = $div_max sekarang - $div_max sebelumnya jika -0.5 < $selisih && $selisih < 0.5 maka kondisi berhenti/return dan simpan dan tampilkan $div_max
iterasi 1: Array ( [0] => 2.2833750178913 [1] => -5.5330430128209 [2] => 1 ) iterasi 2: Array ( [0] => 1.3516058348271 [1] => -1.0537765826253 [2] => 1 ) selisih iterasi 2 ke 1 = iterasi 2 - iterasi 1 apakah -0.5 < $selisih && $selisih < 0.5 [0] => 1.3516058348271 - [0] => 2.2833750178913 = -0.93 [1] => -1.0537765826253 - [1] => -5.5330430128209 = 4.53 [2] => 1 - [2] => 1 = 0 kondisi tidak memenuhi lanjut
iterasi 3: Array ( [0] => 1 [1] => -0.84529541177875 [2] => 1.3752366637024 ) selisih iterasi 3 ke 2 = iterasi 3 - iterasi 2 apakah -0.5 < $selisih && $selisih < 0.5 [0] => 1 - [0] => 1.3516058348271 = -0.3 [1] => -0.84529541177875 - [1] => -1.0537765826253 = 0.2 [2] => 1.3752366637024 - [2] => 1 = 0.3
kondisi memenuhi loop berhenti simpan/return dan tampilkan $div_max dari iterasi 3 Array ( [0] => 1 [1] => -0.84529541177875 [2] => 1.3752366637024 )
mohon bantuan lagi pak :3 |
|
| //.. $selisih = $div_max sekarang - $div_max sebelumnya jika -0.5 < $selisih && $selisih < 0.5 maka //.. do{
$selisih=abs($div_max_sekarang-$div_max_sebelumnya); }while($selisih>0.5);
dari http://pastebin.com/HzSd1Se0 coba lihat baris 62 s.d 76 |
|
| terima sebelumnya pak maaf telah merepotkan,
pak cahya disini kan ditentukan key berhentinya pada loop $condition=$count<=3?true:false; gimana cara menjadikannya dinamis pak?
semisal kondisi memnuhinya atau truenya ada pada posisi loop 10 atau loop 15 atau 35 dst atau dapat dikatakan dapat berubah sewaktu-waktu sesuai inputan array mohon penjelasan pak :3 |
|
| di source tersebut //.. $condition=$count<=2?true:false; //.. itu bukan berarti pada iterasi ke 2 berhenti, tapi karena yg diperhitungkan adalah setelah iterasi ke 2 (setelah hasil iterasi 1 dengan iterasi 2 dibandingkan) maka iterasi 3 tetap dijalankan dan dibandingkan hasilnya dengan hasil iterasi ke 2.. jika sesuai kriteria maka akan berhenti.
jika ditulis //.. $condition=$count<=3?true:false; //..
maka berarti apapun kondisi-nya di iterasi ke 3 maka tetap jalankan iterasi ke 4 .. dan ini malah gak sesuai dengan aturan yang ada, karena jika dalam perbandingan antara hasil iterasi 2 dan iterasi 3 ada nilai yang >=0.5 harusnya diperoleh $condition=false tapi karena statemen:
$condition=$count<=3?true:false;
maka $condition menjadi =true, dan iterasi dilanjutkan ke iterasi berikutnya(tidak berhenti)
kalo ditulis
$condition=$count < 3 ? true:false;
nah ini bisa diterima, karena dalam hal ini sama/setara dengan pernyataan:
$condition=$count<=2?true:false;
cmiiw ^_^V |
|
| terima ksih penjelasannya pak, pak cahya, kalo saya ubah inputan array $data jadi sprti dibawah kondisi berhentinya tetap di iterasi ketiga, padahal iterasi kedua udah memenuhi kondisi, kenapa ya pak? :3
$data = array( array(1,4,3), array(4,1,2), array(3,2,1) );
iterasi 1: 26 14 14 14 21 16 14 16 14
( [0] => 54 [1] => 51 [2] => 44 ) Array ( [0] => 1 [1] => 1.0588235294118 [2] => 1.2272727272727 ) Array ( [0] => 99 [1] => 98.941176470588 [2] => 98.772727272727 ) iterasi 2: 1068 882 784 882 893 756 784 756 648 Array ( [0] => 2734 [1] => 2531 [2] => 2188 ) Array ( [0] => 1 [1] => 1.0802054523904 [2] => 1.2495429616088 ) Array ( [0] => 0 [1] => 0.021381922978595 [2] => 0.022270234336048 ) iterasi 3: 51092 46018 40040 46018 43197 37220 40040 37220 32144 Array ( [0] => 137150 [1] => 126435 [2] => 109404 ) Array ( [0] => 1 [1] => 1.0847471032546 [2] => 1.2536104712808 ) Array ( [0] => 0 [1] => 0.0045416508642773 [2] => 0.0040675096719824 ) kemudian kalo saya ubah limit menjadi $limit=0.05 iterasinya tetap berhenti pada iterasi ke 3 pak, padahal belum memenuhi
iterasi 3: selisih: Array ( [0] => 0.3516058348271 [1] => 0.2084811708465 [2] => 0.37523666370242 )
masih bingung ama yg ini pak :3 $condition=$count<=2?true:false; |
|
| setelah saya var_dump hasilnya sprti ini array(3) { [0]=> string(4) "0.05" [1]=> string(4) "0.05" [2]=> string(4) "0.05" } di ubah ke float $arr_limit = array_map('floatval',$arr_limit); namun kondisi berhentinya tetap aja di iterasi ke 3 padahal belum memenuhi :3 array(3) { [0]=> float(0.05) [1]=> float(0.05) [2]=> float(0.05) } array(3) { [0]=> float(0.3516058348271) [1]=> float(0.2084811708465) [2]=> float(0.37523666370242) } knapa ya pak? :3 |
|
| hihihi ada kesalahan logika ane.. coba lihat http://pastebin.com/HzSd1Se0 yg terbaru semoga membantu ^_^V |
|
| makasih bnyak pak, maaf tlah merepotkan :3 |
|
| ane yg minta maaf soale.. ane salah logik, dan terima kasih sudah berbagi kasus ^_^V keep learn'in and keep u'r smile ^_^V |
Tidak ada komentar:
Posting Komentar