CPP 54
Zasłony z obwodem Guest on 4th January 2019 01:43:35 PM
  1. // zasłony.cpp : This file contains the 'main' function. Program execution begins and ends there.
  2. //
  3.  
  4. #include "pch.h"
  5. #include <iostream>
  6. #include <cmath>
  7. using namespace std;
  8.  
  9. double f(double x)
  10. {
  11.         return pow(x, 4.0) / 500.0 - pow(x, 2.0) / 200.0 - 3.0 / 250.0;
  12. }
  13.  
  14. double g(double x)
  15. {
  16.         return -pow(x, 3.0) / 30.0 + x / 20.0 + 1.0 / 6.0;
  17. }
  18.  
  19. double polef(double a, double b, double epsilon)
  20. {
  21.         int w2 = 2;
  22.         double d = abs(b - a);
  23.         double p1 = d * f(b);
  24.         double p2 = d / 2 * f(a + d / 2) + d / 2 * f(b);
  25.         while (abs(p1 - p2) > epsilon)
  26.         {
  27.                 p1 = p2;
  28.                 p2 = 0;
  29.                 w2 = w2 * 2;
  30.                 for (int i = 1; i <= w2; i++)
  31.                 {
  32.                         p2 = p2 + (d / w2) * f(a + i * (d / w2));
  33.                 }
  34.         }
  35.         return p2;
  36. }
  37. double poleg(double a, double b, double epsilon)
  38. {
  39.         int w2 = 2;
  40.         double d = abs(b - a);
  41.         double p1 = d * abs(g(b));
  42.         double p2 = d / 2 * abs(g(a + d / 2)) + d / 2 * abs(g(b));
  43.         while (abs(p1 - p2) > epsilon)
  44.         {
  45.                 p1 = p2;
  46.                 p2 = 0;
  47.                 w2 = w2 * 2;
  48.                 for (int i = 1; i <= w2; i++)
  49.                 {
  50.                         p2 = p2 + (d / w2) * abs(g(a + i * (d / w2)));
  51.                 }
  52.         }
  53.         return p2;
  54. }
  55.  
  56. double obwodf(double a, double b, double czesci)
  57. {
  58.         double d = abs(b - a);
  59.         double obwod = 0;
  60.         double x1 = 2.0, y1 = f(2.0);
  61.         double x2, y2;
  62.         for (int i = 1; i <= czesci; i++)
  63.         {
  64.                 x2 = x1 + d / czesci;
  65.                 y2 = f(x2);
  66.                 obwod += sqrt(pow(x2 - x1, 2.0) + pow(y2 - y1, 2.0));
  67.                 x1 = x2;
  68.                 y1 = y2;
  69.         }
  70.         return obwod;
  71. }
  72. double obwodg(double a, double b, double czesci)
  73. {
  74.         double d = abs(b - a);
  75.         double obwod = 0;
  76.         double x1 = 2.0, y1 = abs(g(2.0));
  77.         double x2, y2;
  78.         for (int i = 1; i <= czesci; i++)
  79.         {
  80.                 x2 = x1 + d / czesci;
  81.                 y2 = abs(g(x2));
  82.                 obwod += sqrt(pow(x2 - x1, 2.0) + pow(y2 - y1, 2.0));
  83.                 x1 = x2;
  84.                 y1 = y2;
  85.         }
  86.         return obwod;
  87. }
  88.  
  89. int main()
  90. {
  91.         double y1 = 19.0 + 61.0 / 125.0;
  92.         double y2 = -32.0 - 2.0 / 3.0;
  93.         double x1 = 2.0;
  94.         double epsilon = 0.0001;
  95.  
  96.         double p1 = polef(2.0, 10.0, epsilon);
  97.         double p2 = poleg(2.0, 10.0, epsilon);
  98.        
  99.         cout << "Zadanie 1: " << p1 + p2 << endl;
  100.        
  101.         double obwod = obwodf(2.0, 10.0, 1000) + obwodg(2.0, 10.0, 1000) + 8 + 8 + (y1 - y2);
  102.         cout << "Zadanie 2: " << obwod << endl;
  103.         return 0;
  104. }

Paste is for source code and general debugging text.

Login or Register to edit, delete and keep track of your pastes and more.

Raw Paste

Login or Register to edit or fork this paste. It's free.