Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # include <stdio.h>
- # include <stdlib.h>
- # include <math.h>
- double function(double x)
- {
- x = sin(x);
- return x;
- }
- double U(double x)
- {
- double pi=4*atan(1.);
- x = -sin(x)+(x/pi);
- return x;
- }
- int main (void)
- {
- int i,j, n = 1000;
- double x = 0.,pi=4*atan(1.), h;
- h=pi/n;
- double * v;
- double *chis;
- double * koef;
- FILE *A;
- A = fopen("out.txt","w");
- v = (double *)malloc((n+1)*sizeof(double));
- chis = (double *)malloc(n*sizeof(double));
- koef = (double *)malloc(n*n*sizeof(double));
- for(i=0;i<(n*n);i++)
- {
- koef[i]=0;
- }
- chis[0]=U(x);
- chis[n-1]=U(pi);
- for(i=1;i<=(n-1);i++)
- {
- koef[i]=0.;
- }
- koef[0]=1;
- for(i=0;i<(n-1);i++)
- {
- koef[n*n + i -1 ]=0;
- }
- koef[n*n -1]=1;
- x=h;
- for (i=1;i<(n-1);i++)
- {
- koef[i*n + i -1] = 1;
- koef[i*n + i] = -2;
- koef[i*n + i + 1] =1;
- chis[i] = function(x)*h*h;
- x += h;
- }
- chis[1]=(chis[1] - chis[0]*koef[n])/(-2);
- koef[n]=0;
- koef[n+1] = koef[n+1]*(-0.5);
- koef[n+2] = koef[n+2]*(-0.5);
- for(i=2;i<(n-1);i++)
- {
- chis[i]=chis[i]-chis[i-1];
- koef[i*n+i-1]-=koef[(i-1)*n+i-1];
- koef[i*n+i]-=koef[(i-1)*n+i];
- koef[i*n+i+1]-=koef[(i-1)*n+i+1];
- chis[i]=chis[i]/koef[i*n+i];
- koef[i*n+i+1]=koef[i*n+i+1]/(koef[i*n+i]);
- koef[i*n+i]=1;
- }
- v[n]=chis[n];
- v[0]=chis[0];
- v[n-1]=chis[n-1]-koef[n*n-1-n]*v[n];
- for(i=n-2;i>=1;i--)
- {
- v[i]=chis[i]-(v[i+1]*koef[i*n+i+1]);
- }
- x=0.;
- for(i=0;i<=n;i++)
- {
- fprintf(A,"%lf %lf %lf\n",x,v[i],U(x));
- x=x+h;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement