Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdio.h"
- #include "math.h"
- #include "stdlib.h"
- #include "time.h"
- #define VAL 0.001f
- #define MyMax 10000
- float mult(float var)
- {
- return var * var;
- }
- float MethodOfRectangle(float start, float last)
- {
- float integVal = 0;
- float step = VAL;
- for (float i = start; i < last; i+=step)
- integVal += mult(i);
- integVal *= step;
- return integVal;
- }
- float MethodOfTrap(float start, float last)
- {
- float integVal = 0;
- float step = VAL;
- for (float i = start; i < last; i += step)
- integVal += 2 * mult(i);
- integVal = (integVal + mult(start) + mult(last)) * step / 2;
- return integVal;
- }
- float MethodOfSimson(float start, float last)
- {
- int n = 1;
- float step = VAL;
- float integVal = 0;
- float fstInteg = 0;
- float sndInteg = 0;
- for (float i = start; i < last; i += step)
- {
- if (n % 2 == 0)
- {
- fstInteg += mult(i);
- }
- else
- {
- sndInteg += mult(i);
- }
- n++;
- }
- integVal = (integVal + mult(start) + mult(last) + 4 * sndInteg + 2 * fstInteg) * step / 3;
- return integVal;
- }
- double MonteCarlo(double start, double last)
- {
- double a, b, x, y, sum, integVal = 0;
- int step = last - start, nums = 0;
- if (mult(start) > mult(last))
- {
- b = mult(start);
- a = last - start;
- }
- else
- {
- b = mult(last);
- a = last - start;
- }
- sum = a * b;
- //int val = (last-start)/VAL;
- //for(int i = 0; i < val; i++)
- for (double i = start; i < last; i+=VAL)
- {
- x = (rand()*1.0 / RAND_MAX)*step + start;
- y = (rand()*1.0 / RAND_MAX) * (b);
- if (y <= mult(x))
- {
- nums++;
- }
- }
- integVal = sum*(((double)nums) / MyMax);
- return integVal / 2;
- }
- int main()
- {
- srand(time(NULL));
- int start = 1;
- int last = 21;
- printf("Start value: %d, Last value: %d\n", start, last);
- printf("Method of Rectangle: %f\nMethod of Trapezium: %f\nMethod of Simpson: %f\nMethod of Monte Carlo: %lf\n", MethodOfRectangle(start, last), MethodOfTrap(start, last), MethodOfSimson(start, last), MonteCarlo(start , last));
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment