fork download
  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <assert.h>
  4.  
  5. #if !defined(M_E)
  6. #define M_E 2.7182818284590452354
  7. #endif
  8.  
  9. #define LL 0.0
  10. #define UL 2.0
  11. #define N 200
  12. #define D 5
  13. #define INIT_Y 1.0 /* euler */
  14.  
  15. double dydx(double x, double y) { return x * y; }
  16.  
  17. int main() {
  18. double x, y;
  19. double y1, y2, h; /* euler 0.01 */
  20. double y3, y4, h2; /* euler 0.05 */
  21. double y5, y6, k1, k2, k3, k4; /* Runge-Kutta */
  22. int i;
  23. /* euler 0.01 */
  24. y1 = INIT_Y;
  25. h = (UL - LL) / N;
  26. /* euler 0.05 */
  27. y3 = INIT_Y;
  28. h2 = (UL - LL) / N * D;
  29. /* runge-kutta */
  30. y5 = INIT_Y;
  31.  
  32. for (i = 0; i <= N; i++) {
  33. x = LL + (UL - LL) / N * i;
  34. /* true resolution */
  35. y = exp(0.5 * x * x);
  36. /* euler 0.01*/
  37. y2 = y + h * dydx(x, y1);
  38. /* euler 0.05 */
  39. if (i % 5 == 0) {
  40. y4 = y + h2 * dydx(x, y3);
  41. }
  42. /* runge-kutta*/
  43. k1 = dydx(x, y);
  44. k2 = dydx(x + h / 2.0, y5 + h * k1 / 2.0);
  45. k3 = dydx(x + h / 2.0, y5 + h * k2 / 2.0);
  46. k4 = dydx(x + h, y5 + h * k3);
  47. y6 = y5 + (1.0 / 6.0) * h * (k1 + 2 * k2 + 2 * k3 + k4);
  48. printf("%.2f, %.10f, %.10f, ", x, y, y1);
  49. if (i % 5 == 0)
  50. printf("%.10f, ", y3);
  51. else
  52. printf(" , ");
  53. printf("%.10f\n", y5);
  54. y1 = y2;
  55. y3 = y4;
  56. y5 = y6;
  57. }
  58. return 0;
  59. }
  60.  
  61.  
Success #stdin #stdout 0.02s 1676KB
stdin
Standard input is empty
stdout
0.00, 1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000
0.01, 1.0000500013, 1.0000000000,             , 1.0000500013
0.02, 1.0002000200, 1.0001500013,             , 1.0002000200
0.03, 1.0004501013, 1.0004000500,             , 1.0004501013
0.04, 1.0008003201, 1.0007502213,             , 1.0008003201
0.05, 1.0012507816, 1.0012006202, 1.0000000000, 1.0012507816
0.06, 1.0018016210, 1.0017513819,             , 1.0018016210
0.07, 1.0024530037, 1.0024026718,             , 1.0024530037
0.08, 1.0032051255, 1.0031546856,             , 1.0032051255
0.09, 1.0040582123, 1.0040076492,             , 1.0040582123
0.10, 1.0050125209, 1.0049618192, 1.0037507816, 1.0050125209
0.11, 1.0060683382, 1.0060174827,             , 1.0060683382
0.12, 1.0072259823, 1.0071749574,             , 1.0072259823
0.13, 1.0084858020, 1.0084345923,             , 1.0084858020
0.14, 1.0098481773, 1.0097967670,             , 1.0098481773
0.15, 1.0113135192, 1.0112618927, 1.0100312748, 1.0113135192
0.16, 1.0128822706, 1.0128304121,             , 1.0128822706
0.17, 1.0145549059, 1.0145027993,             , 1.0145549059
0.18, 1.0163319315, 1.0162795607,             , 1.0163319315
0.19, 1.0182138858, 1.0181612347,             , 1.0182138858
0.20, 1.0202013400, 1.0201483922, 1.0188887538, 1.0202013400
0.21, 1.0222948979, 1.0222416368,             , 1.0222948979
0.22, 1.0244951964, 1.0244416054,             , 1.0244951964
0.23, 1.0268029058, 1.0267489680,             , 1.0268029058
0.24, 1.0292187301, 1.0291644285,             , 1.0292187301
0.25, 1.0317434075, 1.0316887248, 1.0303902276, 1.0317434075
0.26, 1.0343777105, 1.0343226293,             , 1.0343777105
0.27, 1.0371224466, 1.0370669493,             , 1.0371224466
0.28, 1.0399784585, 1.0399225274,             , 1.0399784585
0.29, 1.0429466248, 1.0428902416,             , 1.0429466248
0.30, 1.0460278599, 1.0459710065, 1.0446232853, 1.0460278599
0.31, 1.0492231152, 1.0491657729,             , 1.0492231152
0.32, 1.0525333789, 1.0524755291,             , 1.0525333789
0.33, 1.0559596771, 1.0559013006,             , 1.0559596771
0.34, 1.0595030739, 1.0594441514,             , 1.0595030739
0.35, 1.0631646721, 1.0631051840, 1.0616972092, 1.0631646721
0.36, 1.0669456139, 1.0668855403,             , 1.0669456139
0.37, 1.0708470813, 1.0707864019,             , 1.0708470813
0.38, 1.0748702966, 1.0748089909,             , 1.0748702966
0.39, 1.0790165236, 1.0789545708,             , 1.0790165236
0.40, 1.0832870677, 1.0832244465, 1.0817443733, 1.0832870677
0.41, 1.0876832766, 1.0876199655,             , 1.0876832766
0.42, 1.0922065415, 1.0921425185,             , 1.0922065415
0.43, 1.0968582973, 1.0967935401,             , 1.0968582973
0.44, 1.1016400236, 1.1015745095,             , 1.1016400236
0.45, 1.1065532455, 1.1064869514, 1.1049219551, 1.1065532455
0.46, 1.1115995344, 1.1115324368,             , 1.1115995344
0.47, 1.1167805086, 1.1167125836,             , 1.1167805086
0.48, 1.1220978347, 1.1220290578,             , 1.1220978347
0.49, 1.1275532278, 1.1274835742,             , 1.1275532278
0.50, 1.1331484531, 1.1330778973, 1.1314139895, 1.1331484531
0.51, 1.1388853262, 1.1388138426,             , 1.1388853262
0.52, 1.1447657146, 1.1446932768,             , 1.1447657146
0.53, 1.1507915385, 1.1507181196,             , 1.1507915385
0.54, 1.1569647720, 1.1568903446,             , 1.1569647720
0.55, 1.1632874436, 1.1632119798, 1.1614338028, 1.1632874436
0.56, 1.1697616382, 1.1696851095,             , 1.1697616382
0.57, 1.1763894975, 1.1763118748,             , 1.1763894975
0.58, 1.1831732216, 1.1830944752,             , 1.1831732216
0.59, 1.1901150701, 1.1900351696,             , 1.1901150701
0.60, 1.1972173631, 1.1971362776, 1.1952268732, 1.1972173631
0.61, 1.2044824830, 1.2044001808,             , 1.2044824830
0.62, 1.2119128753, 1.2118293241,             , 1.2119128753
0.63, 1.2195110503, 1.2194262171,             , 1.2195110503
0.64, 1.2272795845, 1.2271934355,             , 1.2272795845
0.65, 1.2352211217, 1.2351336225, 1.2330741693, 1.2352211217
0.66, 1.2433383751, 1.2432494903,             , 1.2433383751
0.67, 1.2516341281, 1.2515438217,             , 1.2516341281
0.68, 1.2601112365, 1.2600194717,             , 1.2601112365
0.69, 1.2687726299, 1.2686793689,             , 1.2687726299
0.70, 1.2776213132, 1.2775265175, 1.2752960322, 1.2776213132
0.71, 1.2866603687, 1.2865639988,             , 1.2866603687
0.72, 1.2958929575, 1.2957949731,             , 1.2958929575
0.73, 1.3053223216, 1.3052226813,             , 1.3053223216
0.74, 1.3149517856, 1.3148504472,             , 1.3149517856
0.75, 1.3247847587, 1.3246816789, 1.3222566743, 1.3247847587
0.76, 1.3348247369, 1.3347198713,             , 1.3348247369
0.77, 1.3450753046, 1.3449686079,             , 1.3450753045
0.78, 1.3555401370, 1.3554315628,             , 1.3555401370
0.79, 1.3662230025, 1.3661125032,             , 1.3662230025
0.80, 1.3771277643, 1.3770152912, 1.3743693840, 1.3771277643
0.81, 1.3882583835, 1.3881438867,             , 1.3882583835
0.82, 1.3996189206, 1.3995023490,             , 1.3996189206
0.83, 1.4112135387, 1.4110948399,             , 1.4112135387
0.84, 1.4230465057, 1.4229256259,             , 1.4230465057
0.85, 1.4351221966, 1.4349990809, 1.4321025397, 1.4351221966
0.86, 1.4474450967, 1.4473196888,             , 1.4474450967
0.87, 1.4600198040, 1.4598920460,             , 1.4600198040
0.88, 1.4728510320, 1.4727208648,             , 1.4728510320
0.89, 1.4859436129, 1.4858109756,             , 1.4859436129
0.90, 1.4993025001, 1.4991673306, 1.4959865545, 1.4993025000
0.91, 1.5129327716, 1.5127950060,             , 1.5129327716
0.92, 1.5268396334, 1.5266992062,             , 1.5268396333
0.93, 1.5410284219, 1.5408852661,             , 1.5410284219
0.94, 1.5555046084, 1.5553586549,             , 1.5555046084
0.95, 1.5702738015, 1.5701249798, 1.5666218950, 1.5702738015
0.96, 1.5853417512, 1.5851899888,             , 1.5853417512
0.97, 1.6007143526, 1.6005595751,             , 1.6007143526
0.98, 1.6163976494, 1.6162397805,             , 1.6163976494
0.99, 1.6323978378, 1.6322367992,             , 1.6323978378
1.00, 1.6487212707, 1.6485569821, 1.6446883415, 1.6487212707
1.01, 1.6653744616, 1.6652068405,             , 1.6653744616
1.02, 1.6823640889, 1.6821930507,             , 1.6823640888
1.03, 1.6996970002, 1.6995224580,             , 1.6996970002
1.04, 1.7173802169, 1.7172020815,             , 1.7173802169
1.05, 1.7354209388, 1.7352391186, 1.7309556878, 1.7354209388
1.06, 1.7538265486, 1.7536409496,             , 1.7538265486
1.07, 1.7726046171, 1.7724151427,             , 1.7726046170
1.08, 1.7917629080, 1.7915694591,             , 1.7917629080
1.09, 1.8113093834, 1.8111118582,             , 1.8113093834
1.10, 1.8312522089, 1.8310505027, 1.8262961124, 1.8312522088
1.11, 1.8515997590, 1.8513937644,             , 1.8515997589
1.12, 1.8723606230, 1.8721502298,             , 1.8723606230
1.13, 1.8935436109, 1.8933287056,             , 1.8935436109
1.14, 1.9151577592, 1.9149382253,             , 1.9151577591
1.15, 1.9372123370, 1.9369880549, 1.9316984951, 1.9372123369
1.16, 1.9597168529, 1.9594876996,             , 1.9597168528
1.17, 1.9826810610, 1.9824469102,             , 1.9826810609
1.18, 2.0061149681, 2.0058756899,             , 2.0061149680
1.19, 2.0300288403, 2.0297843012,             , 2.0300288402
1.20, 2.0544332106, 2.0541832735, 2.0482850005, 2.0544332106
1.21, 2.0793388862, 2.0790834099,             , 2.0793388861
1.22, 2.1047569557, 2.1044957954,             , 2.1047569556
1.23, 2.1306987978, 2.1304318044,             , 2.1306987977
1.24, 2.1571760887, 2.1569031090,             , 2.1571760886
1.25, 2.1842008108, 2.1839216872, 2.1773303107, 2.1842008107
1.26, 2.2117852614, 2.2114998319,             , 2.2117852612
1.27, 2.2399420612, 2.2396501592,             , 2.2399420611
1.28, 2.2686841640, 2.2683856182,             , 2.2686841639
1.29, 2.2980248658, 2.2977194999,             , 2.2980248657
1.30, 2.3279778146, 2.3276654474, 2.3202839552, 2.3279778144
1.31, 2.3585570204, 2.3582374654,             , 2.3585570202
1.32, 2.3897768658, 2.3894499312,             , 2.3897768656
1.33, 2.4216521165, 2.4213176049,             , 2.4216521163
1.34, 2.4541979322, 2.4538556406,             , 2.4541979320
1.35, 2.4874298782, 2.4870795978, 2.4787962717, 2.4874298780
1.36, 2.5213639371, 2.5210054528,             , 2.5213639369
1.37, 2.5560165207, 2.5556496113,             , 2.5560165205
1.38, 2.5914044826, 2.5910289204,             , 2.5914044823
1.39, 2.6275451309, 2.6271606817,             , 2.6275451307
1.40, 2.6644562419, 2.6640626644, 2.6547486266, 2.6644562417
1.41, 2.7021560733, 2.7017531192,             , 2.7021560730
1.42, 2.7406633784, 2.7402507923,             , 2.7406633781
1.43, 2.7799974210, 2.7795749396,             , 2.7799974207
1.44, 2.8201779901, 2.8197453426,             , 2.8201779897
1.45, 2.8612254154, 2.8607823230, 2.8502886458, 2.8612254151
1.46, 2.9031605838, 2.9027067591,             , 2.9031605834
1.47, 2.9460049551, 2.9455401024,             , 2.9460049547
1.48, 2.9897805797, 2.9893043946,             , 2.9897805793
1.49, 3.0345101161, 3.0340222848,             , 3.0345101157
1.50, 3.0802168489, 3.0797170482, 3.0678713423, 3.0802168485
1.51, 3.1269247075, 3.1264126046,             , 3.1269247070
1.52, 3.1746582857, 3.1741335378,             , 3.1746582852
1.53, 3.2234428615, 3.2229051155,             , 3.2234428609
1.54, 3.2733044178, 3.2727533098,             , 3.2733044172
1.55, 3.3242696638, 3.3237048188, 3.3103071996, 3.3242696632
1.56, 3.3763660568, 3.3757870885,             , 3.3763660562
1.57, 3.4296218250, 3.4290283354,             , 3.4296218243
1.58, 3.4840659911, 3.4834575699,             , 3.4840659904
1.59, 3.5397283963, 3.5391046207,             , 3.5397283956
1.60, 3.5966397256, 3.5960001598, 3.5808184718, 3.5966397248
1.61, 3.6548315332, 3.6541757281,             , 3.6548315324
1.62, 3.7143362699, 3.7136637625,             , 3.7143362690
1.63, 3.7751873100, 3.7744976229,             , 3.7751873090
1.64, 3.8374189801, 3.8367116212,             , 3.8374189791
1.65, 3.9010665886, 3.9003410506, 3.8831052033, 3.9010665876
1.66, 3.9661664561, 3.9654222159,             , 3.9661664550
1.67, 4.0327559468, 4.0319924649,             , 4.0327559457
1.68, 4.1008735008, 4.1000902210,             , 4.1008734996
1.69, 4.1705586681, 4.1697550165,             , 4.1705586668
1.70, 4.2418521428, 4.2410275279, 4.2214227679, 4.2418521415
1.71, 4.3147957995, 4.3139496108,             , 4.3147957981
1.72, 4.3894327297, 4.3885643378,             , 4.3894327283
1.73, 4.4658072810, 4.4649160364,             , 4.4658072794
1.74, 4.5439650958, 4.5430503284,             , 4.5439650941
1.75, 4.6239531528, 4.6230141715, 4.6006730781, 4.6239531511
1.76, 4.7058198093, 4.7048559008,             , 4.7058198075
1.77, 4.7896148448, 4.7886252731,             , 4.7896148429
1.78, 4.8753895064, 4.8743735121,             , 4.8753895044
1.79, 4.9631965555, 4.9621533549,             , 4.9631965534
1.80, 5.0530903166, 5.0520191006, 5.0265120471, 5.0530903143
1.81, 5.1451267266, 5.1440266604,             , 5.1451267243
1.82, 5.2393633874, 5.2382336091,             , 5.2393633850
1.83, 5.3358596191, 5.3346992391,             , 5.3358596165
1.84, 5.4346765153, 5.4334846152,             , 5.4346765126
1.85, 5.5358770008, 5.5346526322, 5.5054764008, 5.5358769979
1.86, 5.6395258905, 5.6382680745,             , 5.6395258875
1.87, 5.7456899510, 5.7443976766,             , 5.7456899479
1.88, 5.8544379643, 5.8531101876,             , 5.8544379609
1.89, 5.9658407929, 5.9644764358,             , 5.9658407894
1.90, 6.0799714485, 6.0785693975, 6.0451335678, 6.0799714449
1.91, 6.1969051620, 6.1954642671,             , 6.1969051581
1.92, 6.3167194562, 6.3152385295,             , 6.3167194521
1.93, 6.4394942215, 6.4379720359,             , 6.4394942173
1.94, 6.5653117940, 6.5637470818,             , 6.5653117895
1.95, 6.6942570359, 6.6926484874, 6.6542591375, 6.6942570312
1.96, 6.8264174194, 6.8247636814,             , 6.8264174144
1.97, 6.9618831133, 6.9601827875,             , 6.9618831081
1.98, 7.1007470726, 7.0989987142,             , 7.1007470671
1.99, 7.2431051314, 7.2413072471,             , 7.2431051257
2.00, 7.3890560989, 7.3872071456, 7.3430473018, 7.3890560929