Решение краевой задачи для обыкновенного дифференциального уравнения с заданной точностью

Курсовой проект - Математика и статистика

Другие курсовые по предмету Математика и статистика

);0;

}=(b-a)/n;_Kutt(h,n,U,V,z,t,a);=(B-V[n])/U[n];_y(y,U,V,n,C);=Proverka_Tochnosti(y,y_tochnoe,n,delta,eps);_y_Tochnoe(y,y_tochnoe,y_vivodimoe,n);=2*n;

}(delta>epsel);(y_vivodimoe,a,eps,n/4,N,delta);("n = %d\nh = %1.2f\nMax_Delta = %1.2e\n\n",n,h,delta);

return 0;}

 

Приложение 2.

 

Листинг программы Метод конечных разностей

 

#include "stdafx.h"

#include "math.h"int N_max=200;double epsel=0.00001;double a=1.3, b=1.8, A=2.2, B=-1.4;F(double x)

{ return 1.8/(x*x)-4;}Q(double x)

{ return 2.3/x;}P(double x)

{ return 0.9*x;}Metod_K_R(double y[],double h,int n )

{int i;x,m,k,f;double c[N_max],d[N_max];[0]=0;[0]=A;( i=1;i<n;i++)

{=a+i*h;=(Q(x) - 2/(h*h)) / (1/(h*h) + P(x)/(2*h));= (1/(h*h) - P(x)/(2*h)) / (1/(h*h) + P(x)/(2*h));=F(x) / (1/(h*h) + P(x)/(2*h));[i]=1/(m-k*c[i-1]);[i]=c[i]*(f-k*d[i-1]);

}[n]=B;(i=n-1;i>=0;i--)

y[i]=d[i]-c[i]*y[i+1];

}Prov_toch(double y[],double y_tochnoe[],int n,double delta,double eps[])

{i;=0;(i=0;i<=n/2;i++)

{[i]=fabs(y[2*i]-y_tochnoe[i]);(eps[i]>delta)=eps[i];

}delta;

}Pechat(double y_vivodimoe[],double a,double eps[],int n,int N,double delta)

{i,j=1,k;h,x=a;=n/N;=(b-a)/n; ("n = %d\nh = %1.2f\nMax_Delta = %1.2e\n\n",n,h,delta);("\tx\ty\t\tE\n"); (i=0;i<=n;i+=k)

{

printf("%d)\t%1.2f\t%f\t%1.2e\n",j++,x,y_vivodimoe[i],eps[i]);=x+k*h;

}

}()

{i,N=25,n;y[N_max],y_tochnoe[N_max],eps[N_max],y_vivodimoe[N_max];h,delta;=N;

{(n>=N_max)

{("Vihod za predeli masiva ");0;

}=(b-a)/n;_K_R(y,h,n);=Prov_toch(y,y_tochnoe,n,delta,eps);(i=0;i<=n;i++){_vivodimoe[i]=y_tochnoe[i];_tochnoe[i] = y[i];}=2*n;

}(delta>epsel);(y_vivodimoe,a,eps,n/4,N,delta);("n = %d\nh = %1.2f\nMax_Delta = %1.2e\n\n",n,h,delta);

return 0;}

 

Приложение 2

 

Листинг программы Метод Галёркина

 

#include "stdafx.h"

#include "math.h"

#include "process.h"double epsel=0.00001;double h=0.02;double a=1.3;double b=1.8;double A=2.2;double B=-1.4;int M=10, N_max=26,E=8;F(double x)

{ return 1.8/(x*x)-4;}Q(double x)

{ return 2.3/x;}P(double x)

{ return 0.9*x;}Resheniya(double D[],double C[],int n)

{U,L,matrix[N_max][N_max];x,sum1,sum2,h=(b-a)/E,koef;k,i,j,t;(k=1;k<=n;k++){(i=1;i<=n;i++)

{sum1=0;sum2=0;(j=1;j<E;j++)

{=a+j*h;=pow(x-a,i)*(x-b);=k*pow(x-a,k-2)*((k-1)*(x-b)+2*(x-a))+P(x)*(k*pow(x-a,k-1)*(x-b)+pow(x-a,k))+Q(x)*pow(x-a,k)*(x-b);(j%2) sum1+=U*L;sum2+=U*L;

}[i-1][k-1]=h/3*(4*sum1+2*sum2);

}

}(i=1;i<=n;i++)

{sum1=0;sum2=0; (j=1;j<E;j++)

{=a+j*h;=pow(x-a,i)*(x-b); =P(x)*(B-A)/(b-a)+Q(x)*((A*b-B*a)/(b-a)+(B-A)/(b-a)*x);(j%2) sum1+=U*(F(x)-L);sum2+=U*(F(x)-L);

}[i-1]=h/3*(4*sum1+2*sum2);

}

// Metod Gausa(t=0;t<n-1;t++)

{( i=t+1;i<n;i++){=matrix[i][t]/matrix[t][t];[i]=D[i]-D[t]*koef;( j=t+1;j<n;j++){[i][j]=matrix[i][j]-matrix[t][j]*koef;

}

}

}(i=n-1;i>=0;i--){[i]=D[i];(j=i+1;j<n;j++)

{C[i]=C[i]- matrix[i][j]*C[j];}[i]=C[i]/matrix[i][i];}

}Nahozdenie_y(double y[],double C[],int n)

{i,j;x,m=(A*b-B*a)/(b-a),g=(B-A)/(b-a);(j=0;j<N_max;j++){=a+j*h;[j]=m+g*x;(i=1;i<=n;i++)

{y[j]+=C[i-1]*pow(x-a,i)*(x-b);}

}

}Proverka(double y[],double y_tekushee[],int n,double eps[])

{i;delta;(i=0;i<N_max;i++)

{eps[i]=fabs(y[i]-y_tekushee[i]);(eps[i]>delta)delta=eps[i]; } delta;

}Prisvoenie_y_tekushee(double y[],double y_tekushee[],double y_vivodimoe[],int n)

{i;(i=0;i<N_max;i++)

{y_vivodimoe[i]=y_tekushee[i];

y_tekushee[i] = y[i];}

}Pechat_rez(double y_vivodimoe[],double eps[], int n,double delta)

{ int i;x;("Bazis = %d\n",n);("Razbienij v metode Simpsona = %d \n",E);("Max_Delta = %1.2e\n\n",delta);("\t X\t Y(X)\t\t Delta\n");(i=0;i<N_max;i++)

{ =a+i*h;("\t %1.2f \t %lf \t %1.2e\n",x,y_vivodimoe[i],eps[i]);

}

}()

{n=0;y[N_max],y_tekushee[N_max],y_vivodimoe[N_max],eps[N_max],B[N_max],C[N_max];delta;

{++;(n>=M)

{("Error!!! Vihod za predeli\n\n");0;

}(B,C,n);_y(y,C,n);=Proverka(y,y_tekushee,n,eps);_y_tekushee(y,y_tekushee,y_vivodimoe,n);

}while(delta>epsel);_rez(y_vivodimoe,eps,n,delta);0;

}