AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

MONTE-CARLO-METHODE

Ein Thema von vicii · begonnen am 19. Jun 2003 · letzter Beitrag vom 24. Jun 2003
Antwort Antwort
Seite 1 von 2  1 2      
vicii

Registriert seit: 19. Jun 2003
Ort: magdeburg
13 Beiträge
 
Delphi 5 Enterprise
 
#1

MONTE-CARLO-METHODE

  Alt 19. Jun 2003, 13:09

hallo,
ich soll für mein dämliches studium ein beleg schreiben in delphi, nur blöd wenn man das nie hatte...
ich hba ma angefangen
komm aba so richtig nich weiter
wenn sich jmd damit auskennt, der möge sich bitte melden

Delphi-Quellcode:
unit beleg;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    START: TButton;
    ENDE: TButton;
    x: TLabel;
    Edit5: TEdit;
    procedure ENDEClick(Sender: TObject);
    procedure STARTClick(Sender: TObject);

  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

FUNCTION FKT(a,b,n,x:real):real;
   begin
fkt:=a*exp (- x); end;

procedure TForm1.ENDEClick(Sender: TObject);
begin
     close
end;

procedure TForm1.STARTClick(Sender: TObject);
var a,b,n,fi,x,y1,ymax: real;
    fc,i,int: integer;


begin
if (a<1) then begin
  messagedlg(
    'untere grenze a muss groesser 1 sein!',
     mtError,[mbOK],0);
  Edit1.text:='a';
  Edit1.setfocus;
  exit;
  end;

  if (b<=a) then begin
  messagedlg(
    'obere grenze b muss groesser untere grenze a sein!',
     mtError,[mbOK],0);
  Edit2.text:='b';
  Edit2.setfocus;
  exit;
  end;

  begin
    int :=Random(100);
    if (int>a) and (int<b)then
    begin
    y1:= a*exp(int)-int;
  end;
  begin
    i :=Random(100);
    if (i>=0) and (i<ymax) and (i<=y1)then
    begin
   i:=1+random(100);

  end;






 a:= StrToInt(Edit1.Text);
 x:= StrToInt(Edit5.Text);
 b:= StrToInt(Edit2.Text);
 n:= StrToInt(Edit3.Text);
 ymax:=a*exp(b)-b;
 fi:=(b-a)*ymax/n;
 Edit4.Text := FloatToStr(fi);

end;

end.
danke

[edit=Daniel B]Delphi-Tags eingefügt. MfG Daniel B.[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2
  Alt 19. Jun 2003, 13:17
Könntest du uns eventuell einen kleinen Tipp geben, damit wir wemfalls den Hauch einer Chance haben dir zu helfen?

Ein Tipp in form von:
Was soll das Programm machen?
Was macht dein Code statt dessen?
Kommt eine fehlermeldung? Wenn ja welche?

Und eventeull noch eine kleine Beschreibung, was die MONTE-CARLO-METHODE eigentlich ist.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#3
  Alt 19. Jun 2003, 13:18
Hallo vicii,

zunächst einmal herzlich willkommen im Delphi-PRAXIS Forum.

Wir können dir sicher helfen.

Ein Studium ist doch in der Regel freiwillig, wie kann es denn dann dämlich sein? Doch nur, wenn du ein dämliches Studium gewählt hast.

Also nun zu deinem Beleg: Kannst du die Aufgabe etwas genauer schildern? Und wo liegt im abgedruckten Code das Problem?
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#4
  Alt 19. Jun 2003, 13:35
Moin Luckie,

John von Neumanns Monte-Carlo-Methode ist ein Verfahren zu Berechnung von Flächeninhalten unregelmässig begrenzter Flächen.
Hierzu wird diese Fläche mit einer leicht berechenbaren Begrenzung umgeben (z.B. ein Rechteck).
Anschliessend werden über diesen Fläche dann zufällig (daher Monte-Carlo Methode (wegen des Casinos)) Punkte verteilt.
Dann/dabei werden die Punkte innerhalb der zu berechnenden Fläche gezählt (ob die Begrenzung mit dazugerechnet wird ist defninitionssache), sowie natürlich die Gesamtzahl der verteilten Punkte.

Die Anzahl Punkte in der Fläche verhalten sich dann zur Gesamtzahl der Punkte wie der Flächeninhalt zum Gesamtflächeninhalt.
Es lässt sich jetzt also über einen Dreisatz ganz leicht der unbekannte Flächeninhalt berechnen.

Die Genauigkeit hängt natürlich ganz extrem von der Anzahl der gesetzten Punkte ab.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
vicii

Registriert seit: 19. Jun 2003
Ort: magdeburg
13 Beiträge
 
Delphi 5 Enterprise
 
#5
  Alt 19. Jun 2003, 13:42
ohh is das alles super
so viel hilfe!

also hier ma die konkrete aufgabe
eine technik zu rberechnung der fläche unter einer kurve ist die monte-carle-methode mit zufallszahlen. die kurve y=f(x) sei für einen wert x innerhalb der angegebenenen oberen und unteren grenzen poritiv. der größte wert von y in diesen grenzen soll y max sein. die m-c-methode läuft folgendermaßen ab:
1)setzen eines zählers auf null
2)erzeugen einer zufallszahl xz deren wert innerhalb der grenzen a und b liegt
3)berechnung von f(xz)
4)erzeugung einer zweiten zufalklszahl yz deren wert zw. 0 und ymax liegt.
5)vergleichen von yz und y(xz). wenn yz kleiner oder gleich y(xz) ist, dann liegt dieser punkt unter oder auf der kurve, und der zähler wird um 1 erhöht.
6)n-malige wiederholung der schritte 2 bis 5. n ist eine eingabegröße und sollte ziemlich groß gewählt werden,
7)nach ausführung der vorg. zyklusanzahl erfolgt die bestimmung des bruchteils f von punkten, di eauf oder unter der kurve liegen, und die ermittlung der fläche.
f=zähler/zyklusanzahl und a=Fymax(b-a)
schreiben sie eine routine, die diese strategie realisiert. testen sie die routine in einem programm mit der fkt. y=ae*-x mit a >1.

jo das is alles
und es wär mächtig nett wenn ihr mir helfen könntet
DANKE sagt vici
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6
  Alt 19. Jun 2003, 13:43
Na bitte, damit läßt sich doch schon mal was anfangen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
vicii

Registriert seit: 19. Jun 2003
Ort: magdeburg
13 Beiträge
 
Delphi 5 Enterprise
 
#7
  Alt 19. Jun 2003, 13:48
WAHHHHHHNSINNNNNNN!
also ich danke jetzzzz schonma, auch wenns nix wird....
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8
  Alt 19. Jun 2003, 13:53
Moment nicht zu früh freuen. Mein Kommentar bezog sich auf das Posting von Christian. Durch deinen Aufgabentext steige ich eigentlich nicht durch.

Aber so viel habe ich schon gesehen: Du benutzt Random() ohne zuvor den Zufallsgenerator von Delphi mit Randomize initialisiert zu haben.

Könntest du evnetuell auch etwas genauer werden, was bei deinem Code nicht klappt?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
vicii

Registriert seit: 19. Jun 2003
Ort: magdeburg
13 Beiträge
 
Delphi 5 Enterprise
 
#9
  Alt 19. Jun 2003, 14:00
also ne fehlermeldung kommt nur beim letzten end.
keine ahnung warum

jo wo setz ich randomize ein?
und wie krieg ichs programm dazu, dass i#die schritte wiederholt werden falls ein zuallswert nicht in den grenzen liegt?
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#10
  Alt 19. Jun 2003, 14:08
Hallo und herzlich Willkommen im Forum!
Zitat von vicii:
also ne fehlermeldung kommt nur beim letzten end.
keine ahnung warum
Weil ein end; fehlt?! Oder sind sogar zwei!?
Zitat:
jo wo setz ich randomize ein?
Du schriebst ins OnCreate des Formulares ein mal Randomize; rein und brauchst Dich nicht mehr zu kümmern.

Grüsse, Daniel
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz