Advertisement
Guest User

Untitled

a guest
Sep 23rd, 2018
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.37 KB | None | 0 0
  1. #include<Windows.h>
  2. #include<iostream>
  3. #include<stdio.h>
  4. #include<math.h>
  5. int n;
  6. double *x, *y,*ch,*cy, a, b,lo;
  7. HDC hDC = GetDC(GetConsoleWindow());
  8. HPEN Pen = CreatePen(PS_SOLID, 2, RGB(255, 255, 255));
  9. HPEN Pens = CreatePen(PS_SOLID, 2, RGB(0, 255, 255));
  10. HPEN Pene = CreatePen(PS_SOLID, 2, RGB(255, 255, 0));
  11. HPEN Peny = CreatePen(PS_SOLID, 2, RGB(255, 0, 125));
  12.  
  13. double Lagrang(double x0)
  14. {
  15. int k, j;
  16. double sum, znam, chis;
  17. sum = 0;
  18. znam = 1;
  19. chis = 1;
  20. for (j = 0; j < n + 1; j++)
  21. {
  22.  
  23. for (k = 0; k < n + 1; k++)
  24. {
  25. if (k != j)
  26. {
  27. znam = znam * (x[j] - x[k]);
  28. chis = chis * (x0 - x[k]);
  29. }
  30. else
  31. {
  32. znam = znam * 1;
  33. chis = chis * 1;
  34. }
  35. }
  36. sum = sum + y[j] * (chis / znam);
  37. chis = 1;
  38. znam = 1;
  39. }
  40. return sum;
  41. }
  42. double Lch(double x0)
  43. {
  44. int k, j;
  45. double sum, znam, chis;
  46. sum = 0;
  47. znam = 1;
  48. chis = 1;
  49. for (j = 0; j < n + 1; j++)
  50. {
  51.  
  52. for (k = 0; k < n + 1; k++)
  53. {
  54. if (k != j)
  55. {
  56. znam = znam * (ch[j] - ch[k]);
  57. chis = chis * (x0 - ch[k]);
  58. }
  59. else
  60. {
  61. znam = znam * 1;
  62. chis = chis * 1;
  63. }
  64. }
  65. sum = sum + cy[j] * (chis / znam);
  66. chis = 1;
  67. znam = 1;
  68. }
  69. return sum;
  70. }
  71. void graf()
  72. {SelectObject(hDC, Pen);
  73. int i;
  74. double q, w = 0.001,c;
  75. q = x[0];
  76. MoveToEx(hDC, 50* q,150 -50*Lagrang(q), NULL);
  77. while (q < b)
  78. {
  79. q = q + w;
  80.  
  81. LineTo(hDC, 50*q, 150 -50 * Lagrang(q));
  82. //std::cout << Lagrang(q)<<"\n";
  83. MoveToEx(hDC, 50*q, 150- 50 * Lagrang(q), NULL);
  84. }
  85. }
  86. void grafch()
  87. {
  88. SelectObject(hDC, Pen);
  89. int i;
  90. double q, w = 0.001, c;
  91. q = ch[0];
  92. MoveToEx(hDC, 50 * q, 350 - 50 * Lch(q), NULL);
  93. while (q < b)
  94. {
  95. q = q + w;
  96.  
  97. LineTo(hDC, 50 * q, 350 - 50 * Lch(q));
  98. //std::cout << Lagrang(q)<<"\n";
  99. MoveToEx(hDC, 50 * q, 350 - 50 * Lch(q), NULL);
  100. }
  101. }
  102. void grafs()
  103. {
  104. SelectObject(hDC, Pens);
  105. double q, w = 0.001, c;
  106. q = x[0];
  107. MoveToEx(hDC, 50 * q, 150 -50 * sin(q), NULL);
  108. while (q < b)
  109. {
  110. q = q + w;
  111.  
  112. LineTo(hDC, 50 * q, 150 - 50 * sin(q));
  113. //std::cout << Lagrang(q)<<"\n";
  114. MoveToEx(hDC, 50 * q, 150 - 50 * sin(q), NULL);
  115. }
  116.  
  117.  
  118. }
  119. void grafsch()
  120. {
  121. SelectObject(hDC, Pens);
  122. double q, w = 0.001, c;
  123. q = ch[0];
  124. MoveToEx(hDC, 50 * q, 350 - 50 * sin(q), NULL);
  125. while (q < b)
  126. {
  127. q = q + w;
  128.  
  129. LineTo(hDC, 50 * q, 350 - 50 * sin(q));
  130. //std::cout << Lagrang(q)<<"\n";
  131. MoveToEx(hDC, 50 * q, 350 - 50 * sin(q), NULL);
  132. }
  133.  
  134.  
  135. }
  136. void epsL()
  137. {
  138.  
  139. SelectObject(hDC, Pene);
  140. int i;
  141. double q, w = 0.001, c,eps;
  142. eps = 0;
  143. q = x[0];
  144. MoveToEx(hDC, 50 * q, 150 - 50 * (Lagrang(q)-sin(q)), NULL);
  145. while (q < b)
  146. {
  147. q = q + w;
  148.  
  149. LineTo(hDC, 50 * q, 150 - 50 * (Lagrang(q) - sin(q)));
  150. //std::cout << Lagrang(q)<<"\n";
  151. MoveToEx(hDC, 50 * q, 150 - 50 * (Lagrang(q) - sin(q) ), NULL);
  152. }
  153.  
  154. }
  155. void epsLch()
  156. {
  157.  
  158. SelectObject(hDC, Pene);
  159. int i;
  160. double q, w = 0.001, c, eps;
  161. eps = 0;
  162. q = ch[0];
  163. MoveToEx(hDC, 50 * q, 350 - 50 * (Lch(q) - sin(q)), NULL);
  164. while (q < b)
  165. {
  166. q = q + w;
  167.  
  168. LineTo(hDC, 50 * q, 350 - 50 * (Lch(q) - sin(q)));
  169. //std::cout << Lagrang(q)<<"\n";
  170. MoveToEx(hDC, 50 * q, 350 - 50 * (Lch(q) - sin(q)), NULL);
  171. }
  172.  
  173. }
  174. void eps()
  175. {
  176. SelectObject(hDC, Peny);
  177. int i;
  178. double q, w = 0.001, c, eps;
  179. eps = 1;
  180. q = x[0];
  181. for (i = 0; i <= n ; i++)
  182. {
  183.  
  184. eps = eps * (q - x[i]);
  185.  
  186. }
  187. for (i = 1; i <= n + 1; i++)
  188. {
  189.  
  190. eps = eps / i;
  191.  
  192. }
  193. if (eps < 0) eps = eps * (-1);
  194. MoveToEx(hDC, 50 * q, 150 - 50 *eps, NULL);
  195. while (q < b)
  196. { q+= w;
  197. eps=1;
  198. for (i = 0; i <= n; i++) eps = eps* (q - x[i]);
  199. for (i = 1; i <= n + 1; i++)eps = eps/i;
  200. if (eps < 0) eps= eps * (-1);
  201.  
  202. LineTo(hDC, 50 * q, 150 - 50 * eps);
  203. //std::cout << Lagrang(q)<<"\n";
  204. MoveToEx(hDC, 50 * q, 150 - 50 *eps, NULL);
  205.  
  206. }
  207.  
  208.  
  209. }
  210. void epsch()
  211. {
  212. SelectObject(hDC, Peny);
  213. int i;
  214. double q, w = 0.001, c, eps;
  215. eps = 1;
  216. q = ch[0]+w;
  217. for (i = 0; i <= n; i++)
  218. {
  219.  
  220. eps = eps * (q - ch[i]);
  221.  
  222. }
  223. for (i = 1; i <= n + 1; i++)
  224. {
  225.  
  226. eps = eps / i;
  227.  
  228. }
  229. if (eps < 0) eps = eps * (-1);
  230. MoveToEx(hDC, 50 * q, 350 - 50 * eps, NULL);
  231. while (q < b)
  232. {
  233. q += w;
  234. eps = 1;
  235. for (i = 0; i <= n; i++) eps = eps * (q - ch[i]);
  236. for (i = 1; i <= n + 1; i++)eps = eps / i;
  237. if (eps < 0) eps = eps * (-1);
  238.  
  239. LineTo(hDC, 50 * q, 350 - 50 * eps);
  240. //std::cout << Lagrang(q)<<"\n";
  241. MoveToEx(hDC, 50 * q, 350 - 50 * eps, NULL);
  242.  
  243. }
  244.  
  245.  
  246. }
  247.  
  248. int main()
  249. {
  250. int i;
  251. double p,pi, h;
  252. std::cout << "Write your kol-vo of points" << "\n";
  253. std::cin >> n;
  254. std::cout << "Write yourinterval " << "\n";
  255. std::cin >> a >> b;
  256. std::cout << "\n";
  257. x = new double[n + 1];
  258. y = new double[n + 1];
  259. ch = new double[n + 1];
  260. cy = new double[n + 1];
  261. p = ( b-a) / n;
  262. pi = 3.1415;
  263. for (i = 0; i < n + 1; i++)
  264. {
  265. x[i] = a + i * p;
  266. y[i] = sin(x[i]);
  267. }
  268. ch[0] = a;
  269. cy[0] = sin(a);
  270. for (i = 1; i < n ; i++)
  271. {
  272. ch[i] = ((b - a)*cos((2 * i + 1)*pi / (2 * n + 2))+a+b) / 2;
  273.  
  274. cy[i] = sin(ch[i]);
  275. }
  276. /*for (i = 0; i < n + 1; i++)
  277. {
  278. std::cout <<sin(x[i])<<" " <<Lagrang(x[i])<<"\n";
  279. }*/
  280.  
  281. graf();//построение интерполянта
  282.  
  283.  
  284. grafs();//построение sin
  285.  
  286. epsL();//построение точной погрешности
  287. eps();//построение приближенной погрешности
  288.  
  289. grafch();
  290. grafsch();
  291. epsLch();
  292. epsch();
  293.  
  294. std::cin >> h;
  295.  
  296. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement