Flächeninhalt mit Monte carlo verfahren berechnen



  • huhu,

    Ich habe ein Problem. Ich soll die Fläche einer Kurve mit dem Monte carlo verfahren berechnen. x1, x2 und die Höhe sollen eingegeben werden und der Flächeninhalt dann Nährungsweise mit A = (x2-x1)*h*(T/N) berechnet werden. Aber irgendwie kommt bei mir nur Blödsinn raus, kann mir einer einen Tip geben!

    #include <stdio.h>
    #include <math.h>
    #include <stdlib.h>
    
    int main()
    {
        double x1, x2, hoehe, gesammtflaeche, flaeche, funktion ;
        int zahlen, i, anzahl, x_start, x_start2, treffer;
        int x=3;
    
        funktion = exp(x);
    
        printf("Ich bin ein gelungeses Programm das einen Flaecheninhalt naehrungsweise ausrechnet, \n");
    
        printf("Bitte geben sie X1 ein, \n");
        scanf("%lf", &x1);
        printf("Bitte geben sie X2 ein, \n");
        scanf("%lf", &x1);
        printf("Bitte geben sie die hoehe H ein, \n");
        scanf("%lf", &hoehe);
        printf("Bitte geben sie die Anzahl das Zufallszahlen N ein, \n");
        scanf("%d", &anzahl);
    
        for( i=0;i<anzahl; i++)
        {
            x_start = x1*rand()/RAND_MAX;
            x_start2 = x2*rand()/RAND_MAX;
    
            if( x_start*x_start2 <= 1)
            {
                treffer++;
            }
    
        }
    
        flaeche = (x2-x1)*hoehe*(treffer/i);
    
        printf("Zeige: %lf", flaeche);
    
        return 0;
    
    }
    


  • was ist x1, x2 und H?

    x_start und x_start2 sind ints. alle gleitkommazahlen werden abgeschnitten. beachte das.



  • Naja... das ist so eine Sachen... ich steig teilweise selber nicht mehr durch ( bin noch Anfänger ) also die Aufgebenstellung ist folgende:

    Es soll der Flächeninhalt zwischen der x-Achse und einem (nicht negativen) Funktionsgraphen y=f(x) mit Hilfe der Monte Carlo Methode näherungsweise berechnet werden.
    Es werden dazu N Paare von Zufallszahlen der Form (x,y) erzeugt, die alle innerhalb des Rechtecks x1, x2, H1, H2 liegen müssen. Wenn nun y<f(x) ist, liegt der entsprechende Punkt unter dem Graphen. Liegen von den N Punkten T unter dem Graphen, so kann der
    Flächeninhalt A näherungsweise durch folgende Formel bestimmt werden:
    A = (x2-x1)*h*(T/N)

    So, also x1 und x2 sind die Randwerte des Definitionsbereiches und H die höhe. Also ich steig da nicht mehr durch und wäre über Hilfe echt dankbar!



  • Dann setz' doch auch das, was du da erzählt hast, in C um 😉

    //1. Bestimme Koordinaten x1<=x<=x2, 0<=y<=h
    x_pos=(x2-x1)*(rand()/(double)RAND_MAX)+x1;
    y_pos=h*(rand()/double)RAND_MAX);
    //2. Bestimme Position bzgl. Funktion
    if(y_pos<=f(x_pos) treffer++;
    

Anmelden zum Antworten