PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [C#] Nummerische Integration (Help)


Gast
2006-11-12, 11:12:49
Tach,

ich bin gerade an einem integral berechnen mit hilfe von visual c#. nun mein code hat noch iergend eine make, jedenfalls berechnet es nicht korrekte werte. kann mir wer helfen?

hier mein code:

private double a = 0, b = 0, A = 0, n = 0, h = 0, Teilf = 0, xi=0;
private int i;


static void Main()
{
Application.Run(new Form1());
}

//const double eps = 1e-05;

private void button1_Click(object sender, System.EventArgs e)
{
a = Convert.ToDouble(textBox1.Text);
b = Convert.ToDouble(textBox2.Text);
n = Convert.ToDouble(textBox3.Text);
xi = (b - a) / n;


for (i = 0; i <= n - 1; i++)
{

h = Math.Sin(xi);
Teilf = h*xi;
A += Teilf; //A = A + Teilf;


}
textBox4.Text = A.ToString();
}
}
}

xi habe ich soweit richtig, aber h stimmt nicht.

legende:

a linke schranke
b rechte schranke
n teile - wieviele teile er die fläche unter dem integral teilen soll (je mehr, desto genauer)
xi beliebiges x auf der x achse

die idee ist halt wie bei der normalen integration. man teilt eine fläche unter einer funktion in unendliche viele rechtecke und summiert die teile dann.

danke für die hilfe

Gast
2006-11-12, 11:39:34
Was kommt denn für a = 0, b = Pi für variierende n raus? (sin verwendet Bogenmaß, ist dir das klar?)


du müsstest ca. [-cos(x)]_0^\Pi = 1 + 1 = 2 erhalten.

Jedenfalls sieht dein Code auf den 1. Blick OK aus

Gast
2006-11-12, 11:59:41
jemand von einem anderen forum hat mich auf ein grossen fehler aufmerksam gemacht

edit: Dein Fehler scheint in der Berechnung von der Höhe h sein. Sin(xi) (xi ist ja nur die Breite des Intervalls) bringt ja immer das gleiche, was nicht dem Sinn der Integration entspricht. Als Stützpunkt ist der Mittelwert zwischen zwei äußeren Stützpunkten zu wählen

Gast
2006-11-12, 12:10:32
ok ich hab das problem gelöst

h = (b - a) / n;


for (i = 0; i <= n - 1; i++)
{

xi = i * h + a;
Teilf = Math.Sin(xi)*h;
A += Teilf; //A = A + Teilf;

so sollts sein....