Jump to content

Featured Replies

Posted

Er det noen her med litt kontroll på excel og matte som kan hjelpe meg?

 

Jeg prøver å konvertere følgende excelformel til en vanlige matteformel.

 

-ATAN(((L11*SIN((PI()/180)*((K11-M11)-180))/J11)))/(PI()/180))

L11 = X

K11 = Y

M11 = Z

J11 = K

 

Noen sofagenier som kan bistå?

Heisann, her er trikset å passe på parantesene. Hvis du teller etter ser du at det er 10 venstreparanteser og 11 høyreparanteser, dvs at det er en parantes som ikke er lukket. Dersom du fjerner den siste parantesen, skal du få noe slik som

(store forbehold om feil!)

 

arctan(X*sin(argument))/(pi/180)

 

der

 

argument = (Y-Z-180)/K.

 

Men dersom det er en parantes som mangler et sted, kan du få noe annet.

 

Var det dette du lurte på? :)

  • Author

Takk for at du prøver å hjelpe. Jeg postet ikke hele excel formelen som jeg kanskje burde, og da er er det riktig antall paranteser:

 

=IF(M11=0;0;-ATAN(((L11*SIN((PI()/180)*((K11-M11)-180))/J11)))/(PI()/180))

 

Jeg kan jo gi variablene noen tilfeldige verdier så skal jeg se om jeg kommer frem til samme resultat.

 

X=20

Y=270

Z=360

K=100

 

Da kommer jeg frem til -2480,5 som er feil.

 

Utregningen i excel som er riktig gir -11.

Hjelper det å sette kalkulatoren til "Rad"?

 

Hva er formelen til?

 

 

/T

  • Author
Hjelper det å sette kalkulatoren til "Rad"?

Jeg føler meg like dum hver gang noen sier det til meg :crazy:

 

Men svaret jeg får da blir -83, så det er en del nærmere, men ikke helt i mål enda :whistle:

 

 

Formelen er for å kalkulere wind correction angle. Det ultimate målet mitt er å få gjort dette om til en JavaScript formel som så skal bli brukt i et acrobat dokument jeg lager.

 

Selve formelen for WCA er noe enklere:

 

WCA = ArcTan (Vindhastighet * Sin(Vindvinkel)/TAS)

 

Problemet mitt har vært å få den til å fungere uavhengi om folk har et track på 350 eller 010.

Her er et screenshot fra mitt eget Excel-ark:

ExcelTH.png

 

Formelen i feltet H3 som er det hvite feltet under "TH" er:

=IF(D3=0;"";(IF(ROUND((G3+(DEGREES(ASIN((F3*SIN(RADIANS(E3-G3)))/D3))));0)>360;ROUND((G3+(DEGREES(ASIN((F3*SIN(RADIANS(E3-G3)))/D3))));0)-360;IF(ROUND((G3+(DEGREES(ASIN((F3*SIN(RADIANS(E3-G3)))/D3))));0)<1;ROUND((G3+(DEGREES(ASIN((F3*SIN(RADIANS(E3-G3)))/D3))));0)+360;ROUND((G3+(DEGREES(ASIN((F3*SIN(RADIANS(E3-G3)))/D3))));0)))))

 

TAS er da skrevet i feltet D3

Vindretning er i feltet E3

Vindhastighet er i feltet F3

Sant trekk er i feltet G3

 

Ettersom formelen har flere "If" om retninger blir til høyere eller lavere tall enn 360, så gir den resultater som alltid er korrekt på en kompassrose. Enten man skriver en formel i Excel eller programmerer feks en Casio kalkulator, så må man få inn en formel som inkluderer "hvis"...

 

Formelen for bakkehastighet "GS" er:

=IF(D3=0;"";((ROUND(D3*COS(RADIANS(ABS(G3-H3)));0))+(F3*(-COS(RADIANS(ABS(G3-E3)))))))

 

Håper det kan være til hjelp...

 

/T

  • Author

Kjempefint Torbjørn. I utgangspunktet kunne jeg jo prøvd å bruke de samme IF uttrykkene i JavaScript, men jeg kan bare nok JavaScript til å gjøre matematiske utregninger. Det er derfor jeg ser etter en ren matematisk måte å løse det samme problemet. Men hvis ingen andre her ser en slik løsning, så må jeg bare se etter hjelp til å løse problemet med JS.

Jeg kan dessverre ingenting om JavaScript, så der må jeg trekke til siden...

 

 

/T

Tenkte på det samme Tom.

 

Rolf:

For det første det er for mange paranteser i denne formelen.

Du kan sløyfe noen.

 

Se om denne formelen er riktig:

formel.jpg

 

Du må ha kalkulatår stilt til RAD for å få lik svar som i excel.

ATAN er vel arcus tangens, dvs den inverse tangensfunksjonen. Ellers er jeg enig.

  • Author

12440.jpg

 

Dette får jeg og det er jo da helt riktig :D.

 

Takk skal dere ha for hjelpen. Nå må jeg bare få gjort om dette til JavaScript og så er jeg nesten ferdig. Hvis det forresten er noen her som kan litt JS så si gjerne i fra. Jeg skulle gjerne vist deg koden så jeg kan få fjernet evt. feil.

Kan nok gjøres, men et slikt regneark er ikke riktig verktøy for større maskiner.

 

 

Hilsen T

  • Author

Takk for hjelpen Martin. Fikk det til å fungere tilslutt :)

 

Men er det noen som vet hva jeg gjør galt her?

 

// Get interval fuel, next
// minimum fuel, the final reserve fuel
// and define the reserve.

var int = 
getField("IntRow1_3").value;

var nextmin = getField("MINRow2").value;

var finres = getField("USgalFinalReserve").value;

var res;

// If MINRow2 has a value, set res to 0.

// If MINRow2 doesn't have a value, set res = finres

if (MINRow2) {

   res = 0;

} else {

   res = finres;

}

var bsa = nextmin + int + res;



// If int is not zero,

// set the value of this field

// to the result. Otherwise, display nothing

if (int) {

   event.value = bsa;

} else {

   event.value = "";

}

 

Jeg vet dette er veldig rotete, men jeg kan egentlig ikke JS :whistle:

 

Det jeg prøver å oppnå her er at hvis MINRow2 har en verdi så vil jeg at res = 0. Men hvis MINRow2 ikke har en verdi så vil jeg at res = USgalFinalReserve.

 

De siste 15 linjene er der for å gjøre det slik at hvis IntRow1_3 ikke har en verdi, så skal event.value = "".

du kan ikke refererer til MINRow2 da det er navne på feltet og ikke en js variabel.

 

Enten så inn i if skriver du getField("MINRow2").value eller nextmin

 

Iallefall ut fra koden du har postet.

 

Og en ting til.

 

Du får lettere oversikt hvis du lager if, for osv i slik form:

 

if(et eller annet)

{

det skal skje noe

}

else

{

det skal skje noe annet

}

 

isteden for:

 

if(et eller annet){

det skal skje noe

}

else{

det skal skje noe annet

}

 

Det skal være tabulator forant det skal skje noe... Da for du fin og oversiktelig kode.

 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...