Sabtu, 05 Oktober 2013

PHP Indonesia - Facebook: [help]gan, gimana cara mengambil nilai iterasi seb...

PHP Indonesia - Facebook
PHP Indonesia is a community for everyone that loves PHP. Our focus is in the PHP world but our topics encompass the entire LAMP stack. Topics include PHP coding, to memcached handling, db optimizations, server stack, web server tuning, code deploying, hosting options and much much more. Youtube Channel : http://www.youtube.com/user/OurPHPIndonesia Twitter : @php_indonesia NOTE: Rules for Wall posting: https://www.facebook.com/groups/35688476100/doc/10151597056316101/ Daftar Keanggotaan : http://www.facebook.com/groups/35688476100/doc/10150671770741101/ 
[help]gan, gimana cara mengambil nilai iterasi seb...
Sep 27th 2013, 08:53, by Rere Saputra

Rere Saputra 8:53am Sep 27
[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

Cahya Dsn 11:58am Sep 27
logiknya gak jelas secara $bagi_max,$bagi_max2,$temp_max adalah array tapi dibandingkan dengan skalar ... check u'r logic again ^_^V

Rere Saputra 1:13pm Sep 27
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

Cahya Dsn 1:15pm Sep 27
contoh datanya gimana?

Rere Saputra 3:16pm Sep 27
maaf om mau nyunting mati listrik :3
ini om lengkapnya
http://pastebin.com/YgUFrubs

Rere Saputra 1:11am Sep 28
gmna yg ini om? :3

Cahya Dsn 2:36am Sep 28
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

Rere Saputra 10:08am Sep 28
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

Cahya Dsn 10:09am Sep 28
udah pelajarin yg di pastebin tsb ?

Rere Saputra 10:19am Sep 28
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

Cahya Dsn 11:00am Sep 28
coba lihat kembali di http://pastebin.com/HzSd1Se0 terutama baris 74.. how i do that ^_^V

Rere Saputra 11:29am Sep 28
: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

Rere Saputra 3:21am Sep 29
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

Cahya Dsn 2:12am Sep 30
//..
$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

Rere Saputra 2:58am Sep 30
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

Cahya Dsn 3:30am Sep 30
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

Rere Saputra 3:59am Sep 30
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;

Rere Saputra 7:00am Sep 30
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

Cahya Dsn 10:03am Sep 30
hihihi ada kesalahan logika ane.. coba lihat http://pastebin.com/HzSd1Se0 yg terbaru semoga membantu ^_^V

Rere Saputra 8:25pm Sep 30
makasih bnyak pak, maaf tlah merepotkan :3

Cahya Dsn 2:28am Oct 1
ane yg minta maaf soale.. ane salah logik, dan terima kasih sudah berbagi kasus ^_^V
keep learn'in and keep u'r smile ^_^V

You are receiving this email because you subscribed to this feed at blogtrottr.com.

If you no longer wish to receive these emails, you can unsubscribe from this feed, or manage all your subscriptions

Tidak ada komentar:

Posting Komentar