Avatar billede nanders Nybegynder
21. august 2003 - 13:23 Der er 28 kommentarer og
1 løsning

Exponentialfunktioner, potensfunktioner og hjælp på nettet.

Kære eksperter,

Mit spørgsmål indeholder 2 elementer.

a) Hjælp til nedenstående programstump.
b) anbefaling af et sted på nettet, hvor jeg kan få hurtig hjælp til basale spørgsmål som a).

Alle variable er erklæret som double.

Ad a)

Til HeNH3 = HeNH3_STP*exp(zetaHeNH3*((1/T_a)-(1/T_0)));

får jeg følgende fejlmeddelelse når jeg compiler:

ModelJava100.java [231:1] cannot resolve symbol
symbol  : method exp (double)
location: class ModelJava100
        HeNH3 = HeNH3_STP*exp(zetaHeNH3*((1/T_a)-(1/T_0)));

... Dvs at mit exp tegn er forkert. Jeg har ikke importeret nogle klasser eller noget.

Et andet problem er at jeg på:

viskositetsfaktor = 10^((1.3272 * (Tfem - T_a) - 0.001053 * (T_a - Tfem) ^ 2) / (T_a - 168));

får compilefejlen:

ModelJava100.java [241:1] operator ^ cannot be applied to int,double

... er det fordi 168 er en int og at man ikke må blande int og double sammen ?

Ad b)

Er der en hjemmeside om f.eks. javaprogrammering, bortset fra eksperten.dk, hvor jeg hurtigt kunne have fået besvaret disse basale spørgmål ?

Hvis Ja angiv URL.

På forhånd tak.

Med venlig hilsen

Anders Nielsen
Avatar billede jakoba Nybegynder
21. august 2003 - 13:28 #1
alle de predefinerede matematiske funktioner ligger i klassen Math.
http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Math.html

og skal evt kaldes med
    resultat = Math.floor( operand );
(tror jeg nok. måske du kan udelade Math. foran)

mvh JakobA
Avatar billede _carsten Nybegynder
21. august 2003 - 13:30 #2
Prøv:

Til HeNH3 = HeNH3_STP*exp(zetaHeNH3*(((double)1/T_a)-((double)1/T_0)));
Avatar billede jakoba Nybegynder
21. august 2003 - 13:31 #3
tegnet ^ betyder ikke 'opløftet i' det er den logiske funktion 'enten eller' (XOR).  exponentiering foretages med metoder pow fra Math

her er en operator liste: http://java.sun.com/docs/books/tutorial/java/nutsandbolts/opsummary.html
Avatar billede anhansen Nybegynder
21. august 2003 - 13:33 #4
For at bruge exp skal du vist importere java.lang.Math. Jeg kan ikke lige huske om "hatten" kan tage int, double. Men ifølge din compiler dur det ikke. så prøv enten 10.0^(...) eller find en funktion i Math pakken der kan gøre det for dig.

Mht hjælp. Så er der et udemærket forum på java.sun.com, det er dog på engelsk ved ikke om det er godt nok.
Avatar billede arne_v Ekspert
21. august 2003 - 13:38 #5
Math.exp og Math.pow som foreslået af Jakob er det korrekte svar.
Avatar billede arne_v Ekspert
21. august 2003 - 13:39 #6
Og man behøver ikke importere da java.lang.* er default importeret.
Avatar billede nanders Nybegynder
21. august 2003 - 13:42 #7
Siger jeg så f.eks. math.exp(10,2) og math.pow(10,3) osv. ?

Er math.pow(10,(math.pow(10,2))) tilladt ?
Avatar billede jakoba Nybegynder
21. august 2003 - 13:44 #8
arne >>
hvis man nu specifikt importerer Math klassen, slipper man så ikke for at skrive 'Math.' foran hver metode ?
Avatar billede arne_v Ekspert
21. august 2003 - 13:44 #9
Ja.

Ja.
Avatar billede arne_v Ekspert
21. august 2003 - 13:45 #10
jakob>

Nej.

Import gør kun at man kan undlade package.
Avatar billede jakoba Nybegynder
21. august 2003 - 13:46 #11
enhver værdi kan erstattes af et udtryk eller metodekal der beregner en værdi, så du kan sagtens kompinere.

Java er case-sensitiv. det er 'Math'  ikke  'math'
Avatar billede arne_v Ekspert
21. august 2003 - 13:46 #12
math.pow(10,(math.pow(10,2))) er iøvrigt et temmeligt stort tal !
Avatar billede nanders Nybegynder
21. august 2003 - 13:48 #13
Er det nok med ?

import java.lang.Math.*;

og derefter f.eks. pow(2,3)

og virker ovenstående konstruktion med det meget store tal
Avatar billede arne_v Ekspert
21. august 2003 - 13:52 #14
Ingen import.

Og Math.pow(2,3) !
Avatar billede nanders Nybegynder
21. august 2003 - 13:53 #15
Hej Arne og Jakob

T_a=pow(10.0,2.0);
T_a=math.pow(10.0,2.0);
T_a=pow(10,2);
T_a=math.pow(10,2);

Ingen af dem virker - hvad går galt ?
Avatar billede arne_v Ekspert
21. august 2003 - 13:54 #16
Math.pow og Math.exp bruger double og du de kan tage rimeligt store værdier.

Største værdi er Double.MAX_VALUE som hvis jeg husker rigtigt er ca. 10^300.
Avatar billede arne_v Ekspert
21. august 2003 - 13:55 #17
Hvis du skal bruge større tal skal du nok kigge på java.math pakken
og klasserne BigInteger og BigDecimal.
Avatar billede arne_v Ekspert
21. august 2003 - 13:56 #18
T_a=Math.pow(10,2);

Math med stort M !
Avatar billede nanders Nybegynder
21. august 2003 - 13:57 #19
Hej Arne og Jakob,

Tusind tak for hjælpen - specielt det sidste med Math.pow og dermed også Math.exp gjorde underværker.

Jeg giver Arne 16 og Jakob 9 point - tak i skal have.
Avatar billede jakoba Nybegynder
21. august 2003 - 13:59 #20
prøv. (men siden arne har sagt nej tvivler jeg meget).

diverse datatyper (int, float, double) hr grænser for hvor store tallene kan være.

fra:http://java.sun.com/docs/books/jls/second_edition/html/lexical.doc.html#76707

The largest positive finite float literal is 3.40282347e+38f. The smallest positive finite nonzero literal of type float is 1.40239846e-45f.
The largest positive finite double literal is 1.79769313486231570e+308. The smallest positive finite nonzero literal of type double is 4.94065645841246544e-324.

mvh JakobA
Avatar billede nanders Nybegynder
21. august 2003 - 14:05 #21
Hej Jakob,

Jeg har ikke så meget brug for store tal men snarere meget lave tal da jeg skal udregne [H+](brintionen) 50 gange i sekundet.

Dvs. at det har betydning om mit tal er 0.000000100001 eller 0.000000100005

/ Anders N
Avatar billede arne_v Ekspert
21. august 2003 - 14:07 #22
Featuren kommer vistnok i Java 1.5 og hedder static import !

import static java.lang.Math.*;

og så kan man bruge exp og pow uden Math. foran.
Avatar billede arne_v Ekspert
21. august 2003 - 14:08 #23
Double.MIN_VALUE indeholder mindste værdi for double.

Og er ca. 10^(-300).
Avatar billede arne_v Ekspert
21. august 2003 - 14:08 #24
Hov - Jakob har allerede skrevet en mere præcis værdi.
Avatar billede nanders Nybegynder
21. august 2003 - 14:24 #25
Hej Arne,

Har du udgivet noget om Java programmering ?
Avatar billede arne_v Ekspert
21. august 2003 - 14:35 #26
Udgivet noget ?
Avatar billede nanders Nybegynder
21. august 2003 - 14:37 #27
Ja, lørebøger om Java f.eks. - jeg er bare nysgerrig.
Avatar billede arne_v Ekspert
21. august 2003 - 14:39 #28
No.
Avatar billede arne_v Ekspert
22. august 2003 - 13:36 #29
og et svar.

Bed Jakob også ligge et.
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