Вычисление интеграла двумя способами - 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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.692 из 5
Похожие ответы