Advertisement
Guest User

Untitled

a guest
Feb 19th, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.89 KB | None | 0 0
  1. # include <stdio.h>
  2. # include <stdlib.h>
  3. # include <math.h>
  4.  
  5. double function(double x)
  6. {
  7. x = -sin(x);
  8. return x;
  9. }
  10.  
  11. double U(double x)
  12. {
  13. x = sin(x);
  14. return x;
  15. }
  16.  
  17. int main(void)
  18. {
  19. int n=31,i,j,m=800;
  20. double x=0.,pi=4*atan(1.), h, t=0.001;
  21. h=pi/n;
  22.  
  23. double * v;
  24. double *v_new;
  25. double *chis;
  26. double * koef;
  27.  
  28. FILE *A;
  29. A = fopen("out2.txt","w");
  30.  
  31. v_new = (double *)malloc((n+1)*sizeof(double));
  32. v = (double *)malloc((n)*sizeof(double));
  33. chis = (double *)malloc(n*sizeof(double));
  34. koef = (double *)malloc(n*n*sizeof(double));
  35. for(i=0;i<(n*n);i++)
  36. {
  37. koef[i]=0;
  38. }
  39.  
  40. chis[0]=U(0);
  41. chis[n-1]=U(pi);
  42. for(i=1;i<=(n-1);i++)
  43. {
  44. koef[i]=0.;
  45. }
  46. koef[0]=1;
  47. for(i=0;i<(n-1);i++)
  48. {
  49. koef[n*n + i -1 ]=0;
  50. }
  51. koef[n*n -1]=1;
  52. x=h;
  53.  
  54. for (i=1;i<(n-1);i++)
  55. {
  56. koef[i*n + i -1] = 1;
  57. koef[i*n + i] = -2;
  58. koef[i*n + i + 1] =1;
  59. chis[i] = function(x)*h*h;
  60. x += h;
  61.  
  62. }
  63.  
  64. chis[1]=(chis[1] - chis[0]*koef[n])/(-2);
  65. koef[n]=0;
  66. koef[n+1] = koef[n+1]*(-0.5);
  67. koef[n+2] = koef[n+2]*(-0.5);
  68. for(i=2;i<(n-1);i++)
  69. {
  70. chis[i]=chis[i]-chis[i-1];
  71. koef[i*n+i-1]-=koef[(i-1)*n+i-1];
  72. koef[i*n+i]-=koef[(i-1)*n+i];
  73. koef[i*n+i+1]-=koef[(i-1)*n+i+1];
  74. chis[i]=chis[i]/koef[i*n+i];
  75. koef[i*n+i+1]=koef[i*n+i+1]/(koef[i*n+i]);
  76. koef[i*n+i]=1;
  77.  
  78. }
  79.  
  80. v[n]=chis[n];
  81. v[0]=chis[0];
  82.  
  83. v[n-1]=chis[n-1]-koef[n*n-1-n]*v[n];
  84. for(i=n-2;i>=1;i--)
  85. {
  86. v[i]=chis[i]-(v[i+1]*koef[i*n+i+1]);
  87. }
  88.  
  89.  
  90. for(i=0;i<n;i++)
  91. {
  92. fprintf(A,"%lf ",v[i]);
  93. }
  94. fprintf(A,"\n");
  95.  
  96. for (i=0;i<m;i++)
  97. {
  98. v_new[0]=0;
  99. v_new[n-1]=1;
  100. for (j=1;j<(n-1);j++)
  101. {
  102. v_new[j]=t*(((v[j-1]-v[j]*2+v[j+1])/(h*h))+exp(j*h - pi/2)) + v[j];
  103. }
  104.  
  105. for (j=0;j<n;j++)
  106. {
  107. v[j]=v_new[j];
  108. }
  109.  
  110. for(j=0;j<n;j++)
  111. {
  112. if((i%5)==0)
  113. {
  114. fprintf(A,"%lf ",v[j]);
  115. }
  116. }
  117. if((i%5)==0)
  118. {
  119. fprintf(A,"\n ");
  120. }
  121. }
  122.  
  123. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement