manusia

No 1-7 Semua (balik urutan) |

manusia@manusia : 2009-10-07 08:31:04 UTC+0000
diacu: >>2 >>5 >>6
Bantu debug kenapa dot_product ga bisa nol.....

int _tmain(int argc, _TCHAR* argv[])
{
double Bux = 1.444, Buy =2.3232, Buz =3.23232;
double bvx = -1.543, bvy = -2.5343, bvz = -3.5343;
double Bvx,Bvy,Bvz;
if((Bux*bvx+Buy*bvy+Buz*bvz)==0)
{
Bvx = bvx; Bvy = bvy; Bvz = bvz;
}
else
{
double k = -1 * (Bux*bvx+Buy*bvy+Buz*bvz) / (pow(Bux,2)+pow(Buy,2)+pow(Buz,2));
Bvx = (k*Bux)+bvx;
Bvy = (k*Buy)+bvy;
Bvz = (k*Buz)+bvz;
double dot_product = Bux*Bvx+Buy*Bvy+Buz*Bvz;
double g =3;
}
return 0;
}
andreas@manusia : 2009-10-07 08:38:18 UTC+0000
diacu: >>3
>>1
hah? eh ku lagi ngantuk ato apakah, bukankah karena kalo 0 dia akan masuk ke if case? sehingga yang bawah sana yah ga akan 0?
manusia@manusia : 2009-10-07 08:52:27 UTC+0000
diacu: >>4
>>2
Bukan atuh.

kalo masuk ke else statement, dot_product harusnya nol.
andreas@manusia : 2009-10-07 09:01:02 UTC+0000
>>3
Menurut source code anda, Dot Product adalah penjumlahan perkalian dari x, y, z kedua titik (kukasi spasi biar enak dibaca)
dot_product = Bux* bvx + Buy * bvy+ Buz * bvz;

lalu di atas anda taro if statement yang berbunyi demikian
if((Bux * bvx + Buy * bvy + Buz * bvz) == 0 )

nah kalo dot product itu adalah 0, maka if akan berjalan sehingga akan terjadi assignment operations yang di dalam if blocknya dan else akan terignore.

Sehingga kalo Bux * bvx + Buy * bvy + Buz * bvz itu 0, program anda ga akan pernah ke else.

Gitu kira2 menurut sayah, kalo masi salah juga saya ga akan berkata apa2 lagi dan mari kita tunggu guru2 matematika melihat ini.

mari
yuku@manusia : 2009-10-07 09:20:29 UTC+0000
>>1
Hore, kirimanmu membuatku sadar kalo tulis tab ga ketampilin di melet.us. Sekarang sudah
ditampilin. Maka kodemu menjadi bagus.
yuku@manusia : 2009-10-07 09:35:45 UTC+0000
>>1
mmm, karena hasil (Bux*bvx+Buy*bvy+Buz*bvz) adalah -19.539766336
yang berarti bukan nol.

salam dari sesama manusia.
manusia@manusia : 2009-10-07 14:43:22 UTC+0000
diacu: >>8
...ga ada yg bener nih ah jawabannya.
masalahnya dah tau di double precision sih dari awal.
cm ga tau solusinya.
casting ke int  = solusi pertama, tp gagal kalo range Bu ama bv sangat random, ex: 1e-30,etc.
solusi kedua ga tau. nunggu ide.
solusi ketiga, jgn pake c++, pake matlab. sayangnya req pake c++.

int _tmain(int argc, _TCHAR* argv[])
{
double Bux = 1.444, Buy =2.3232, Buz =3.23232;
double bvx = -1.543, bvy = -2.5343, bvz = -3.5343;
double Bvx,Bvy,Bvz;
if((Bux*bvx+Buy*bvy+Buz*bvz)==0)
{
Bvx = bvx; Bvy = bvy; Bvz = bvz;
}
else
{
double k = -1 * (Bux*bvx+Buy*bvy+Buz*bvz) / (pow(Bux,2)+pow(Buy,2)+pow(Buz,2));
Bvx = (k*Bux)+bvx;
Bvy = (k*Buy)+bvy;
Bvz = (k*Buz)+bvz;
double dot_product = Bux*Bvx+Buy*Bvy+Buz*Bvz;

//kenapa dot_product harus nol
//dot_product = Bux * ((k*Bux)+bvx) + Buy*((k*Buy)+bvx)+ Buz*((k*Buz)+bvz)
//                = k (Bux^2+Buy^2+Buz^2) + (Bux*bvx+Buy*bvy+Buz*bvz)
//masukin k = -1 * (Bux*bvx+Buy*bvy+Buz*bvz) / (pow(Bux,2)+pow(Buy,2)+pow(Buz,2))
//                = 0

double g =3;
}
return 0;
}

 

Kau akan ngepos secara anonim! Boleh2 aja sih, bahkan tulis nama dan sembarang paswod pun boleh. Tapi kalo mau daftar, klik daftar

Nama Pwd gp jsp (nol nol)+(lima satu)= +img +coret

 

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|