Вычисление интеграла двумя способами - C#
Формулировка задачи:
Приветствую!
Заданием является имплементация вычисления определённого интеграла двумя способами, на пример методом прямоугольников и трапеций, на отрезке от 0 до Pi/k, где k - вводится с клав-ры (в моём решении - на ВинФорм).
Подинтегральная функция - Asin(Bx), где A и B - вводится с клав-ры. сама функция (в данном случае sin - тоже может выбираться, например cos/tg/ctg). Так же вводится n, используемое для dx = xn-x0/n
Код есть, но считает неправильно, но глаза уже замылены, не вижу ошибки =\
Может кто чего подскажет?
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication8 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void btn_licz_Click(object sender, EventArgs e) { //int A= Convert.ToInt32(in_A.Value); double A = double.Parse(in_A.Text); double B = double.Parse(in_B.Text); double k = double.Parse(in_k.Text); double n = double.Parse(in_n.Text); double dx = (Math.PI / k)/n; double wynik=0.0; for (double i =0.0; i < Math.PI/k; i+=0.01) { wynik += funkcja(A, B, i); } wynik *= dx; MessageBox.Show(wynik.ToString(), "App"); } public double funkcja(double A, double B, double x) { if (comboBox1.SelectedIndex == 0) { return A * Math.Sin(B * x); } else if (comboBox1.SelectedIndex == 1) { return A * Math.Cos(B * x); } else if (comboBox1.SelectedIndex == 2) { return A * Math.Tan(B * x); } else if (comboBox1.SelectedIndex == 3) { return 1 /(A * Math.Tan(B * x)); } else { return 0.0; } } } }
Решение задачи: «Вычисление интеграла двумя способами»
textual
Листинг программы
i+=0.01 -> i+=dx
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д