Avatar billede egebo Nybegynder
05. september 2005 - 17:36 Der er 31 kommentarer

2 definationer jeg ikke kan forstå

Faldt over et stykke af en kildekode til C++
Den indeholder 2 værdier som jeg skal bruge, nemlig X12 og X13. Jeg kan dog ikke helt finde ud af den måde de er defineret på, så håbede der var nogen her der kunne hjælpe med det.

Koden:

void CTunedPipeView::CalculateThreeStage()

{

double X13, X12;

//horn coeff typical values between one and two. Small values of Kh are best

//suited to Grand Prix engines with narrow power bands,

//larger values are for wider more flexible engines.

Kh = 2;

Lt = (83.3 * velsound *m_ExhaustPeriod)/m_CrankSpeed;

D1 = K1 *eqportdia;

D4 = K2 *eqportdia;

D5 = K0 *eqportdia;

LP01 = 0.10 * Lt ;

LP12 = 0.275*Lt ;

LP23 = 0.183*Lt ;

LP34 = 0.092*Lt ;

LP45 = 0.11*Lt ;

LP56 = 0.24*Lt ;

LP67 = LP56 ;

X12 = (LP12)/(LP12 +LP23 +LP34);

X12 = pow(X12,Kh);

X12 = X12 * log(D4/D1);

X13 = (LP12 + LP23)/(LP12 +LP23 +LP34);

X13 = pow(X13,Kh);

X13 = X12 * log(D4/D1);

D2 = D1 *exp(X12);

D3 = D1 *exp(X13);



}

void CTunedPipeView::DisplayData()

{

switch(m_ChamberType)

{

case ONE_STAGE:

DisplayDataOneStage();

break;

case TWO_STAGE:

DisplayDataTwoStage();

break;

case THREE_STAGE:

DisplayDataThreeStage();

break;

}
Avatar billede arne_v Ekspert
05. september 2005 - 18:06 #1
det er lokale variable i metoden ...
Avatar billede egebo Nybegynder
05. september 2005 - 18:10 #2
Og det vil sige?
Har aldrig brugt C++, kan bare se at fra en matematisk synsvinkel så er det noget vrøvl der står.
I både X12 og X13 sættes de = sig selv + noget mere.
Det ville være som at sige 2 = 2 + 1

Derfor må der være en anden måde det skal forståes på, som jeg tænkte en kunne forklare. :-)
Avatar billede arne_v Ekspert
05. september 2005 - 18:19 #3
X = X + 1;

læses som

tag det der er i X
læg 1 til
gem resultatet i X
Avatar billede egebo Nybegynder
05. september 2005 - 18:27 #4
Lad os tage et eksempel med X12:
(Giver dem numre for at simplificere)

X12[1] = (LP12)/(LP12 +LP23 +LP34);

X12[2] = pow(X12[1],Kh);

X12[3] = X12[2] * log(D4/D1);

Er det rigtig forstået?

Hvis ja, så mangler jeg bare at vide hvad det er der sker i pow(X12,kh) funktionen.
Avatar billede arne_v Ekspert
05. september 2005 - 18:42 #5
ja

pow = power = potens

pow(X12,kh) betyder X12^kh
Avatar billede egebo Nybegynder
05. september 2005 - 18:49 #6
Okay....

1000 tak for de hurtige og gode svar :-)
Avatar billede arne_v Ekspert
05. september 2005 - 18:49 #7
så ligger jeg et svar
Avatar billede arne_v Ekspert
05. september 2005 - 18:50 #8
log og exp har du jo nok gættet hvad gør
Avatar billede egebo Nybegynder
05. september 2005 - 18:55 #9
log og exp kender jeg godt.
Det der "double X13, X12;"

Det betyder ikke noget?
Avatar billede arne_v Ekspert
05. september 2005 - 19:03 #10
det betyder at det er decimal tal med en given precision
Avatar billede egebo Nybegynder
05. september 2005 - 19:10 #11
Okay.. Smart nok..
Avatar billede egebo Nybegynder
05. september 2005 - 19:46 #12
Hmm kan ikke helt fp formlen til at stemme. Jeg kender på forhånd resultatet så det burde være lige til.
Tager lige et eksempel:

Det jeg egentlig gerne vil frem til er at finde D2

X12 = (259.9)/(259.9 + 173 + 87);

X12 = pow(X12,1.2);

X12 = X12 * log(77,4 / 28);

D2 = 28 * exp(X12);


D2 skulle gerne blive 42.9, men det kan jeg ikke få det til.
Hvad er der galt.
Avatar billede arne_v Ekspert
05. september 2005 - 20:02 #13
min lommeregner giver 43.6
Avatar billede egebo Nybegynder
05. september 2005 - 20:15 #14
Der var en lille fejl i denne linie.

X12 = pow(X12,1.2);

Den skal være:

X12 = pow(X12,1.25);

Passer det så med de 42.9?
Avatar billede arne_v Ekspert
05. september 2005 - 20:20 #15
259.9/(259.9 + 173 + 87) giver 0.499903828

pow(0.499903828,1.25) giver 0.420347121

0.420347121 * log(77.4/28) giver 0.4274015

28 * exp(0.4274015) giver 42.93150809
Avatar billede egebo Nybegynder
05. september 2005 - 20:28 #16
Takker endnu engang for de framragende svar... :-)
Avatar billede egebo Nybegynder
05. september 2005 - 20:36 #17
Det er i denne linie jeg går galt:

0.420347121 * log(77.4/28) giver 0.4274015

Min lommeregner giver mig:

0.420347121 * log(77.4/28) = 0,18518113031
Avatar billede arne_v Ekspert
05. september 2005 - 20:40 #18
du bruger vel ikke log 10 i.s.f. log e ?
Avatar billede egebo Nybegynder
05. september 2005 - 20:44 #19
Tror jeg min lommeregner gør std.

grundtallet skal måske være e?
Avatar billede arne_v Ekspert
05. september 2005 - 20:45 #20
ja
Avatar billede egebo Nybegynder
05. september 2005 - 20:48 #21
Okay så passer det også.

Ved dog ikke lige hvordan jeg kan lave det på lommeregneren, men i excel virker det ved at skrive:

0.420347121 * log((77.4/28); eksp(1))

Kanon :-)
Avatar billede egebo Nybegynder
05. september 2005 - 21:05 #22
Hvad siger din lommeregner så til X13?


X13 = (259.9 + 173)/(259.9 + 173 + 87);

X13 = pow(X13,1.25);

X13 = X12 * log(77.4/28);

D3 = 28 * exp(X13);

D3 skulle gerne blive 62,9
Avatar billede arne_v Ekspert
05. september 2005 - 21:22 #23
tast dog hele beregningen ind i Excel som en formel, så kan du udfylde diverse
værdier og vupto så har du resultatet
Avatar billede egebo Nybegynder
05. september 2005 - 21:27 #24
Nemlig...

Men kan ikke få det til at passe i Excel.
Ved godt det er trættende at sidde og hjælpe med sådan noget her.
Avatar billede arne_v Ekspert
05. september 2005 - 21:44 #25
har du bemærket at det er

X13 = X12 * log(77.4/28);

og ikke

X13 = X13 * log(77.4/28);

?
Avatar billede egebo Nybegynder
05. september 2005 - 21:57 #26
Ja.

X13 = 0.4274015 * log(77.4/28) = 0,434574268

D3 = 28 * exp(0,434574268) = 43,24055283
Avatar billede arne_v Ekspert
05. september 2005 - 22:20 #27
(259.9 + 173)/(259.9 + 173 + 87) giver 0.832660127

pow(0.832660127,1.25) giver 0.795398395

0.795398395 * log(77.4/28) giver 0.808746986

28 * exp(0.808746986) giver 62.86260655
Avatar billede arne_v Ekspert
05. september 2005 - 22:20 #28
den der X12 er vist en slag fejl !
Avatar billede egebo Nybegynder
05. september 2005 - 22:22 #29
Er nok en fejl i koden...
Avatar billede arne_v Ekspert
29. september 2005 - 20:31 #30
OK ?
Avatar billede egebo Nybegynder
30. september 2005 - 08:04 #31
Yep
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester