Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace zad1
- {
- class Program
- {
- //y = x^2
- static float getFunc(float x)
- {
- return x * x;
- }
- static void Main(string[] args)
- {
- bool inputFlag = true;
- float a = 0, b = 0;
- Console.WriteLine("Vvedite a");
- while (inputFlag)
- {
- if (!float.TryParse(Console.ReadLine(), out a))
- {
- Console.WriteLine("Error");
- inputFlag = true;
- }
- else
- inputFlag = false;
- }
- inputFlag = true;
- Console.WriteLine("Vvedite b");
- while (inputFlag)
- {
- if (!float.TryParse(Console.ReadLine(), out b))
- {
- Console.WriteLine("Error");
- inputFlag = true;
- }
- else
- inputFlag = false;
- }
- Console.WriteLine("Интегралы от {0} до {1}:", a, b);
- Console.WriteLine("Метод прямоугольников: {0}", rectangleMethod(a, b));
- Console.WriteLine("Метод Монте-Карло: {0}", monteCarloMethod(a, b));
- Console.WriteLine("Метод трапеций: {0}", trapeziumMethod(a, b));
- Console.WriteLine("Метод Симпсона: {0}", simpsonMethod(a, b));
- }
- static float rectangleMethod(float a, float b)
- {
- float integral = 0;
- float step = 0.005f;
- for (float i = a; i <= b; i += step)
- {
- integral += getFunc(i);
- }
- integral *= step;
- return integral;
- }
- static float monteCarloMethod(float a, float b)
- {
- int isIn = 0;
- float maxYValue = getFunc(b), minYValue = getFunc(a);
- Random random = new Random(DateTime.Now.Millisecond);
- for (int i = 0; i < 300000; i++)
- {
- float pointX = GetRandomFloat(a, b, random);
- float pointY = GetRandomFloat(minYValue, maxYValue, random);
- if (getFunc(pointX) > pointY)
- isIn++;
- }
- return (maxYValue * b * isIn)/300000;
- }
- static float trapeziumMethod(float a, float b)
- {
- float integral = 0;
- float step = 0.005f;
- for (float i = a; i <= b; i += step)
- {
- integral += 2 * getFunc(i);
- }
- integral = (integral + getFunc(a) + getFunc(b)) * step/2;
- return integral;
- }
- static float simpsonMethod(float a, float b)
- {
- int n = 1;
- float step = 0.005f;
- float integral = 0;
- float integral1 = 0, integral2 = 0;
- for (float i = a; i <= b; i += step)
- {
- if (n % 2 == 0)
- {
- integral1 += getFunc(i);
- }
- else
- {
- integral2 += getFunc(i);
- }
- n++;
- }
- integral = (integral + getFunc(a) + getFunc(b) + 4 * integral2 + 2*integral1) * step / 3;
- return integral;
- }
- public static float GetRandomFloat(float minimum, float maximum, Random random)
- {
- return (float) random.NextDouble() * (maximum - minimum) + minimum;
- }
- }
- }
Add Comment
Please, Sign In to add comment