Gå til innhold

Anbefalte innlegg

Skrevet

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å?

Skrevet

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å? :)

Skrevet

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.

Skrevet
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.

Skrevet

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

Skrevet

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.

Skrevet

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.

Skrevet

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 = "".

Skrevet

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.

 

Bli med i diskusjonen!

Du kan poste innlegg nå og registrere deg senere. Hvis du har en brukerkonto kan du logge inn nå for å poste med din egen konto.

Gjest
Skriv svar til emnet …

×   Du har limt inn tekst med formatering.   Fjern formatering

  Only 75 emoji are allowed.

×   Lenken din har blitt bygget inn på siden automatisk.   Vis som en ordinær lenke i stedet

×   Tidligere innhold har blitt gjenopprettet.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Opprett ny...