Avatar billede pham Nybegynder
02. december 2003 - 15:30 Der er 13 kommentarer og
1 løsning

Integral metode??

Findes der en Integral metode, ligesom der findes en cos() metode i Math klassen?? Ligesom der er på en TI89, så man bare skal indtaste ligningen..

M.V.H
Anders Hansen
Avatar billede arne_v Ekspert
02. december 2003 - 15:44 #1
Nej.

Men den er ikke svær at kode for en specifik funktion.
Avatar billede tosssen Nybegynder
02. december 2003 - 15:45 #2
Der findes ikke noget standard, som gør det du har brug for. Hvis du er heldig kan du måske finde en samling klasser på nettet, som klarer problemet. Ellers må du bruge nogle af de eksisterende CAS programmer, eller i værste fald selv tage fat i din formelsamling og programmere det ;-)
Avatar billede tosssen Nybegynder
02. december 2003 - 15:47 #3
Hvis du fx vil integrere et polynomium, så skal du parse strengen med udtrykket, så du får fat i koefficienterne og de tilsvarende grader.
Avatar billede arne_v Ekspert
02. december 2003 - 15:49 #4
Jeg formoder at du mener numerisk integration.

Her er et primitivt eksempel:

public class Intg {
    public static double intgcos(double x) {
        double res = 0;
        double delta = x / 10000;
        for(int i = 0; i < 10000; i++) {
            res += delta * Math.cos(i*delta);
        }
        return res;
    }
    public static void main(String[] args) {
        for(int i = 0; i < 10; i++) {
            System.out.println(intgcos(i/10.0) + " 0 " + Math.sin(i/10.0));
        }
    }
}

Lad mig understrege at det kan kodes *meget* smartere. Men det illusterer
vel ideen.
Avatar billede arne_v Ekspert
02. december 2003 - 16:06 #5
En lidt bedre version:

public class Integrate {
    public static double integrate(Integratable f, double x1, double x2) {
        double delta = (x2 - x1) / 10000;
        double res = 0.5 * delta * f.f(x1);
        for(int i = 1; i < 10000; i++) {
            res += delta * f.f(x1 + i * delta);
        }
        res += 0.5 * delta * f.f(x2);
        return res;
    }
    public static void main(String[] args) {
        for(int i = 0; i < 10; i++) {
            System.out.println(integrate(new CosIntegration(), 0, i/10.0) + " = " + Math.sin(i/10.0));
        }
    }
}

interface Integratable {
    public double f(double x);
}

class CosIntegration implements Integratable {
    public double f(double x) {
        return Math.cos(x);
    }
}
Avatar billede pham Nybegynder
02. december 2003 - 16:07 #6
mange tak for svaret arne_v ligger du ikke et svar?
:-)
Avatar billede tosssen Nybegynder
02. december 2003 - 16:07 #7
Nej, jeg mener symbolsk integration - og det tror jeg også Anders gør, idet han refererer til TI89, som netop kan dette.
Avatar billede tosssen Nybegynder
02. december 2003 - 16:08 #8
ok - der tog jeg så fejl kan jeg se ;-)
Avatar billede arne_v Ekspert
02. december 2003 - 16:10 #9
svar
Avatar billede arne_v Ekspert
02. december 2003 - 16:11 #10
Jeg kender slet ikke Ti89. Mine lommeregnere er fra midt i 80'erne.

Laver den formel->formel integration ?
Avatar billede tosssen Nybegynder
02. december 2003 - 16:41 #11
Det er en såkaldt CAS (computer algebra system) lommeregner, hvilket vil sige at den kan regne symbolsk. Man kan således integrere udtrykket "a*x^2" til "(a/3)*x^3"
Avatar billede tosssen Nybegynder
02. december 2003 - 16:41 #12
Ligesom desktop-programmerne mathematica og maple kan
Avatar billede arne_v Ekspert
02. december 2003 - 16:44 #13
OK.

Det kan godt kodes i Java, men det er ikke helt nemt. Generelt
ihvertfald. Hvsi man indskrænker sig til polynomier i x så
er det overkommeligt.
Avatar billede tosssen Nybegynder
02. december 2003 - 16:45 #14
Ja, præcist
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