Advertisement
Guest User

lab8.cpp

a guest
Feb 21st, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.75 KB | None | 0 0
  1. #include "lab8.h"
  2. #include <cmath>
  3. #include <iostream>
  4. #include <ctime>
  5.  
  6. // Ðåøåíèå óð-ÿ f(x) = 0 ìåòîäîì êàñàòåëüíûõ ñ òî÷íîñòüþ eps
  7. double Newton(double x, func f, double eps)
  8. {
  9. double temp{x};
  10. do
  11. {
  12. temp = x;
  13. x = temp - (f(temp)/deriveFunc(temp, f, eps,true));
  14. } while(!(std::abs(temp - x) < eps));
  15.  
  16. return x;
  17. }
  18.  
  19. // ×èñëåííîå èíòåãðèðîâàíèå f(x) â çàäàííîì èíòåðâàëå [a, b]
  20. // ñ òî÷íîñòüþ â n òî÷åê ìåòîäîì Ìîíòå Êàðëî
  21. // (áîëüøå òî÷åê - áîëüøå òî÷íîñòü)
  22. double MonteCarloIntegration(func f, double a, double b, long n)
  23. {
  24. double fs, u, r, x;
  25. srand(time(NULL));
  26.  
  27. fs = 0.0;
  28.  
  29. for(int i = 1; i <= n; ++i)
  30. {
  31. u = (double)rand()/(RAND_MAX+1);
  32. x = a + (b - a)*u;
  33. fs += f(x);
  34. }
  35. r = fs*(b-a)/n;
  36. return r;
  37. }
  38.  
  39. // Ïðîèçâîäíàÿ ôóíêöèè (ëåâàÿ è ïðàâàÿ)
  40. double deriveFunc(double x,func f,double eps,bool isRight){
  41. auto h{ (x!=0)? x/10 : 1};
  42. h = (isRight)? h : -h; // Èä¸ì ê íóëþ ëèáî ñïðàâà ëèáî ñëåâà
  43. auto F{(f(x+h) - f(x))/h};
  44. auto F1{0.0};
  45. bool fin{false};
  46. do
  47. {
  48. h/=10;
  49. F1 = (f(x+h) - f(x))/h;
  50. fin = std::abs(F1-F) <= eps;
  51. F = F1;
  52.  
  53. } while(!fin);
  54.  
  55. return F;
  56. }
  57.  
  58. // Êîðíè êâàäðàòíîãî òð¸õ÷ëåíà
  59. sqrTrinResult sqrTrinSolution(func f){
  60. double C = f(0);
  61. double B = deriveFunc(0,f,0.000001f,true);
  62. double A = f(1) - B - C;
  63.  
  64. double Discrim { (B*B) - 4*A*C };
  65. double sqrtDiscrim{std::sqrt(Discrim)};
  66.  
  67. sqrTrinResult result;
  68. result.X1 = (-B + sqrtDiscrim) / 2*A;
  69. result.X2 = (-B - sqrtDiscrim) / 2*A;
  70.  
  71. return result;
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement