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)
- {
- x = sin(x);
- return x;
- }
- int main(void)
- {
- int n=31,i,j,m=800;
- double x=0.,pi=4*atan(1.), h, t=0.001;
- h=pi/n;
- double * v;
- double *v_new;
- double *chis;
- double * koef;
- FILE *A;
- A = fopen("out2.txt","w");
- v_new = (double *)malloc((n+1)*sizeof(double));
- v = (double *)malloc((n)*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(0);
- 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]);
- }
- for(i=0;i<n;i++)
- {
- fprintf(A,"%lf ",v[i]);
- }
- fprintf(A,"\n");
- for (i=0;i<m;i++)
- {
- v_new[0]=0;
- v_new[n-1]=1;
- for (j=1;j<(n-1);j++)
- {
- v_new[j]=t*(((v[j-1]-v[j]*2+v[j+1])/(h*h))+exp(j*h - pi/2)) + v[j];
- }
- for (j=0;j<n;j++)
- {
- v[j]=v_new[j];
- }
- for(j=0;j<n;j++)
- {
- if((i%5)==0)
- {
- fprintf(A,"%lf ",v[j]);
- }
- }
- if((i%5)==0)
- {
- fprintf(A,"\n ");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement