差分方程的一次试验.docVIP

  • 4
  • 0
  • 约7.77万字
  • 约 8页
  • 2017-02-04 发布于河南
  • 举报
差分方程的一次试验

差分方程的第一次试验(解常微分方程) y’’-y=x,y(0)=1;y(1)=e+1/e-1=2.086161269630488 . 解析解为y=e^x+e^(-x)-x; 数值解法:差分方程 #includestdio.h //消元形式的追赶法解线性方程组,对主对角有的矩阵不能解 #includemath.h //此次写出了很多毛病 一定要注意仔细分析 特别是矩阵的输入 一定要注意草稿要做好 int main(void){ double a[10000],b[10000],c[10000],d[10000]; long i,n; double x[10000],x0,xn,h,y0,yn,y[10000]; printf(请输入自变量范围:\n); scanf(%lf%lf,x0,xn); printf(请输入边值:\n); scanf(%lf%lf,y0,yn); printf(请输入分段数:\n); scanf(%ld,n); n=n-1; h=(xn-x0)/(n+1); x[0]=x0+h; a[0]=0; c[n-1]=0; b[0]=-(2+h*h); c[0]=1; d[0]=h*h*x[0]-y0; for(i=1;i=n-2;i++){ x[i]=x[i-1]+h; a[i]=1; b[i]=-(2+h*h); c[i]=1; d[i]=h*h*x[i]; } x[n-1]=x[n-2]+h; a[n-1]=1; b[n-1]=-(2+h*h); d[n-1]=h*h*x[n-1]-yn; a[n-1]=1; b[n-1]=-(2+h*h); d[n-1]=h*h*x[n-1]-yn; for(i=0;i=n-2;i++){ a[i+1]/=-b[i]; b[i+1]+=a[i+1]*c[i]; d[i+1]+=a[i+1]*d[i]; } y[n-1]=d[n-1]/b[n-1]; for(i=n-2;i=0;i--){ y[i]=(d[i]-c[i]*y[i+1])/b[i]; } printf(原方程组的解为:\n); for(i=0;i=n-1;i++) printf(%f %f\n,x[i],y[i]); return 0; } 请输入自变量范围: 0 1 请输入边值: 2 2.086161269630488 请输入分段数: 100 原方程组的解为: 0.010000000000000 1.990100083333648 0.020000000000000 1.980400176675631 0.030000000000000 1.970900310035281 0.040000000000000 1.961600533425935 0.050000000000000 1.952500916869932 0.060000000000000 1.943601550405617 0.070000000000000 1.934902544096343 0.080000000000000 1.926404028041478 0.090000000000000 1.918106152389418 0.100000000000000 1.910009087352597 0.110000000000000 1.902113023224511 0.120000000000000 1.894418170398748 0.130000000000000 1.886924759390026 0.140000000000000 1.879633040857243 0.150000000000000 1.872543285628546 0.160000000000000 1.865655784728412 0.170000000000000 1.858970849406752 0.180000000000000 1.852488811170033 0.190000000000000 1.846210021814431 0.200000000000000 1.840134853461011 0.210000000000000 1.834263698592938 0.220000000000000 1.828596970094723 0.230000000000000 1.823135101293519 0.240000000000000 1.817878546002445 0.250

文档评论(0)

1亿VIP精品文档

相关文档