数模论坛

 找回密码
 注-册-帐-号
搜索
热搜: 活动 交友 discuz
楼主: totoerer

C语言解题经典程序(2)

[复制链接]
 楼主| 发表于 2004-5-14 08:54:30 | 显示全部楼层
< center" align=center>/*   矩阵乘法运算(用指针)  AMUL1.C   */<p></p></P>< 18pt">#include&lt;stdio.h&gt;<p></p></P>< 18pt">void mul_array(double *a,double *b,double *c,int m,int s,int n)<p></p></P><P 18pt">  {<p></p></P><P 18pt">  int i,j,k;<p></p></P><P 18pt">  for(i=0;i&lt;m;i++)<p></p></P><P 18pt">    for(j=0;j&lt;n;j++)<p></p></P><P 18pt">      {<p></p></P><P 18pt">      *(c+i*n+j)=0.0;<p></p></P><P 18pt">      for(k=0;k&lt;s;k++)<p></p></P><P 18pt">          {<p></p></P><P 18pt">          *(c+i*n+j)+=*(a+i*s+k)**(b+k*n+j);<p></p></P><P 18pt">          }<p></p></P><P 18pt">      }<p></p></P><P 18pt">  }<p></p></P><P 18pt"> <p></p></P><P 18pt">main()<p></p></P><P 18pt">  {<p></p></P><P 18pt">  int i,j,m=5,s=3,n=4;<p></p></P><P 18pt">  double a[5][3]={3,1,6,-2,2,5,7,4,-1,5,-3,2,-3,4,3};<p></p></P><P 18pt">  double b[3][4]={-2,2,1,3,3,-1,2,4,4,-2,1,-5};<p></p></P><P 18pt">  double c[5][4];<p></p></P><P 18pt">  mul_array(a,b,c,m,s,n);<p></p></P><P 18pt">  for(i=0;i&lt;m;i++)<p></p></P><P 18pt">    {<p></p></P><P 18pt">    printf("\n");<p></p></P><P 18pt">    for(j=0;j&lt;n;j++)<p></p></P><P 18pt">      printf("c[%d][%d] = %g  ",i,j,c[j]);<p></p></P><P 18pt">    }<p></p></P><P 18pt">  }<p></p></P>
 楼主| 发表于 2004-5-14 08:55:20 | 显示全部楼层
< center" align=center><B>矩阵乘法运算(用二级指针)amul3.c</B><B><p></p></B></P>< 22pt; mso-line-height-rule: exactly"><B>#include&lt;stdio.h&gt;<p></p></B></P>< 22pt; mso-line-height-rule: exactly"><B>void mul_array(double **a,double **b,double **c,int m,int s,int n)<p></p></B></P><P 22pt; mso-line-height-rule: exactly"><B>  {<p></p></B></P><P 22pt; mso-line-height-rule: exactly"><B>  int i,j,k;<p></p></B></P><P 22pt; mso-line-height-rule: exactly"><B>  for(i=0;i&lt;m;i++)  for(j=0;j&lt;n;j++)<p></p></B></P><P 22pt; mso-line-height-rule: exactly"><B>    {<p></p></B></P><P 22pt; mso-line-height-rule: exactly"><B>    c[j]=0.0;<p></p></B></P><P 22pt; mso-line-height-rule: exactly"><B>    for(k=0;k&lt;s;k++) c[j]+=(a[k]*b[k][j]);<p></p></B></P><P 22pt; mso-line-height-rule: exactly"><B>    }<p></p></B></P><P 22pt; mso-line-height-rule: exactly"><B>  }<p></p></B></P><P 22pt; mso-line-height-rule: exactly"><B>main()<p></p></B></P><P 22pt; mso-line-height-rule: exactly"><B>  {<p></p></B></P><P 22pt; mso-line-height-rule: exactly"><B>  int i,j,m=5,s=3,n=4;  double c[5][4];<p></p></B></P><P 22pt; mso-line-height-rule: exactly"><B>  double *pa[5],*pb[3],*pc[5];<p></p></B></P><P 22pt; mso-line-height-rule: exactly"><B>double a[5][3]={3,1,6,-2,2,5,7,4,-1,5,-3,2,-3,4,3};<p></p></B></P><P 22pt; mso-line-height-rule: exactly"><B>  double b[3][4]={-2,2,1,3,3,-1,2,4,4,-2,1,-5};<p></p></B></P><P 22pt; mso-line-height-rule: exactly"><B>  for(i=0;i&lt;5;i++)<p></p></B></P><P 22pt; mso-line-height-rule: exactly"><B>    {    pa=a;    pc=c;    }<p></p></B></P><P 22pt; mso-line-height-rule: exactly"><B>  for(i=0;i&lt;3;i++)pb=b;<p></p></B></P><P 22pt; mso-line-height-rule: exactly"><B>  mul_array(pa,pb,pc,m,s,n);<p></p></B></P><P 22pt; mso-line-height-rule: exactly"><B>  for(i=0;i&lt;m;i++)<p></p></B></P><P 22pt; mso-line-height-rule: exactly"><B>    {<p></p></B></P><P 22pt; mso-line-height-rule: exactly"><B>    printf("\n");<p></p></B></P><P 22pt; mso-line-height-rule: exactly"><B>    for(j=0;j&lt;n;j++)<p></p></B></P><P 22pt; mso-line-height-rule: exactly"><B>      printf("c[%d][%d] = %g  ",i,j,c[j]);<p></p></B></P><P 22pt; mso-line-height-rule: exactly"><B>    }<p></p></B></P><P 22pt; mso-line-height-rule: exactly"><B>  }<p></p></B></P>
 楼主| 发表于 2004-5-14 08:55:48 | 显示全部楼层
< center" align=center><B>矩阵乘法运算(用指针)amul1.c<p></p></B></P>< 23pt; mso-line-height-rule: exactly"><B>#include&lt;stdio.h&gt;<p></p></B></P>< 23pt; mso-line-height-rule: exactly"><B>void mul_array(double *a,double *b,double *c,int m,int s,int n)<p></p></B></P><P 23pt; mso-line-height-rule: exactly"><B>  {<p></p></B></P><P 23pt; mso-line-height-rule: exactly"><B>  int i,j,k;<p></p></B></P><P 23pt; mso-line-height-rule: exactly"><B>  for(i=0;i&lt;m;i++)<p></p></B></P><P 23pt; mso-line-height-rule: exactly"><B>    for(j=0;j&lt;n;j++)<p></p></B></P><P 23pt; mso-line-height-rule: exactly"><B>      {<p></p></B></P><P 23pt; mso-line-height-rule: exactly"><B>      *(c+i*n+j)=0.0;<p></p></B></P><P 23pt; mso-line-height-rule: exactly"><B>      for(k=0;k&lt;s;k++)<p></p></B></P><P 23pt; mso-line-height-rule: exactly"><B>        *(c+i*n+j)+=*(a+i*s+k)**(b+k*n+j);<p></p></B></P><P 23pt; mso-line-height-rule: exactly"><B>      }<p></p></B></P><P 23pt; mso-line-height-rule: exactly"><B>  }<p></p></B></P><P 23pt; mso-line-height-rule: exactly"><B>main()<p></p></B></P><P 23pt; mso-line-height-rule: exactly"><B>  {<p></p></B></P><P 23pt; mso-line-height-rule: exactly"><B>  int i,j,m=5,s=3,n=4;  double c[5][4];<p></p></B></P><P 23pt; mso-line-height-rule: exactly"><B>double a[5][3]={3,1,6,-2,2,5,7,4,-1,5,-3,2,-3,4,3};<p></p></B></P><P 23pt; mso-line-height-rule: exactly"><B>  double b[3][4]={-2,2,1,3,3,-1,2,4,4,-2,1,-5};<p></p></B></P><P 23pt; mso-line-height-rule: exactly"><B>  mul_array(a,b,c,m,s,n);<p></p></B></P><P 23pt; mso-line-height-rule: exactly"><B>  for(i=0;i&lt;m;i++)<p></p></B></P><P 23pt; mso-line-height-rule: exactly"><B>    {<p></p></B></P><P 23pt; mso-line-height-rule: exactly"><B>    printf("\n");<p></p></B></P><P 23pt; mso-line-height-rule: exactly"><B>    for(j=0;j&lt;n;j++)<p></p></B></P><P 23pt; mso-line-height-rule: exactly"><B>      printf("c[%d][%d] = %g  ",i,j,c[j]);<p></p></B></P><P 23pt; mso-line-height-rule: exactly"><B>    }<p></p></B></P><P 23pt; mso-line-height-rule: exactly"><B>  }<p></p></B></P>
 楼主| 发表于 2004-5-14 08:58:55 | 显示全部楼层
< center" align=center><B>柯特斯公式计算定积分 Cotes1.C<p></p></B></P>< 22pt; mso-line-height-rule: exactly">#include&lt;math.h&gt;<p></p></P>< 22pt; mso-line-height-rule: exactly">#include&lt;stdio.h&gt;<p></p></P><P 22pt; mso-line-height-rule: exactly">double f(double x)<p></p></P><P 22pt; mso-line-height-rule: exactly">  {<p></p></P><P 22pt; mso-line-height-rule: exactly">  return(4.0/(1+x*x));<p></p></P><P 22pt; mso-line-height-rule: exactly">  }<p></p></P><P 22pt; mso-line-height-rule: exactly">double cotes(double a,double b,double eps)<p></p></P><P 22pt; mso-line-height-rule: exactly">  {<p></p></P><P 22pt; mso-line-height-rule: exactly">  int k=0; double h,h1,m1,m2,m3,m4,c1,c2,x,rc;<p></p></P><P 22pt; mso-line-height-rule: exactly">  h=0.25*(b-a);  h1=h+h;  rc=2.0/45.0;<p></p></P><P 22pt; mso-line-height-rule: exactly">  m1=(f(a)+f(b))*7.0;  m2=f(a+h)+f(b-h);<p></p></P><P 22pt; mso-line-height-rule: exactly">  m3=f(a+h1);  c1=(m1+m2*32.0+m3*12.0)*h*rc;  <p></p></P><P 15pt; LINE-HEIGHT: 22pt; mso-char-indent-count: 1.0; mso-char-indent-size: 15.0pt; mso-line-height-rule: exactly">m4=0.0;<p></p></P><P 22pt; mso-line-height-rule: exactly">  while(k&lt;=20)<p></p></P><P 22pt; mso-line-height-rule: exactly">    {<p></p></P><P 22pt; mso-line-height-rule: exactly">    h1=h;h*=0.5;m4+=m3;m3=m2;    m2=0.0;x=a+h;<p></p></P><P 22pt; mso-line-height-rule: exactly">    while(x&lt;b)<p></p></P><P 22pt; mso-line-height-rule: exactly">      {<p></p></P><P 22pt; mso-line-height-rule: exactly">      m2+=f(x);x+=h1;<p></p></P><P 22pt; mso-line-height-rule: exactly">      }<p></p></P><P 22pt; mso-line-height-rule: exactly">    c2=(m1+m2*32.0+m3*12.0+m4*14.0)*h*rc;<p></p></P><P 22pt; mso-line-height-rule: exactly">    if(fabs(c2-c1)&lt;eps)break;<p></p></P><P 22pt; mso-line-height-rule: exactly">    c1=c2;    k++;<p></p></P><P 22pt; mso-line-height-rule: exactly">    }<p></p></P><P 22pt; mso-line-height-rule: exactly">  printf("\nk=%d",k);  return(c2);<p></p></P><P 22pt; mso-line-height-rule: exactly">  }<p></p></P><P 22pt; mso-line-height-rule: exactly">main( )<p></p></P><P 22pt; mso-line-height-rule: exactly">  {<p></p></P><P 22pt; mso-line-height-rule: exactly">  double eps=1.0e-12,answer;<p></p></P><P 22pt; mso-line-height-rule: exactly">  answer=cotes(0.0,1.0,eps);<p></p></P><P 22pt; mso-line-height-rule: exactly">  printf("\nThe Answer is %15.14lf ",answer);<p></p></P><P 22pt; mso-line-height-rule: exactly">  }<p></p></P><P 22pt; mso-line-height-rule: exactly"> <p></p></P><P 22pt; mso-line-height-rule: exactly">/* 循环5次    计算结果为  3.14159265358979  */<p></p></P>
 楼主| 发表于 2004-5-15 07:05:26 | 显示全部楼层
< center" align=center><B>拉格朗日插值法通用计算程序</B><B>LACA.C<p></p></B></P>< 24pt; mso-line-height-rule: exactly"><B>#include&lt;stdio.h&gt;<p></p></B></P>< 24pt; mso-line-height-rule: exactly"><B>#include&lt;conio.h&gt;<p></p></B></P><P 24pt; mso-line-height-rule: exactly"><B>double laca(double xi[],double yi[],int n,double x)<p></p></B></P><P 24pt; mso-line-height-rule: exactly"><B>{<p></p></B></P><P 24pt; mso-line-height-rule: exactly"><B>int k,j;  double p,y=0.0;<p></p></B></P><P 24pt; mso-line-height-rule: exactly"><B>for(k=0;k&lt;=n;k++)<p></p></B></P><P 24pt; mso-line-height-rule: exactly"><B>  {<p></p></B></P><P 24pt; mso-line-height-rule: exactly"><B>  p=1.0;<p></p></B></P><P 24pt; mso-line-height-rule: exactly"><B>  for(j=0;j&lt;=n;j++)<p></p></B></P><P 24pt; mso-line-height-rule: exactly"><B>    if(k!=j)p=p*(x-xi[j])/(xi[k]-xi[j]);<p></p></B></P><P 24pt; mso-line-height-rule: exactly"><B>  y=y+p*yi[k];<p></p></B></P><P 24pt; mso-line-height-rule: exactly"><B>  }<p></p></B></P><P 24pt; mso-line-height-rule: exactly"><B>return(y);<p></p></B></P><P 24pt; mso-line-height-rule: exactly"><B>}<p></p></B></P><P 24pt; mso-line-height-rule: exactly"><B>main()<p></p></B></P><P 24pt; mso-line-height-rule: exactly"><B>{<p></p></B></P><P 24pt; mso-line-height-rule: exactly"><B>double xi[]={64.0,81.0,100.0,121.0,144.0,169.0};<p></p></B></P><P 24pt; mso-line-height-rule: exactly"><B>double yi[]={8.0,9.0,10.0,11.0,12.0,13.0};<p></p></B></P><P 24pt; mso-line-height-rule: exactly"><B>double x=115.0,y;<p></p></B></P><P 24pt; mso-line-height-rule: exactly"><B>y=laca(xi,yi,5,x);<p></p></B></P><P 24pt; mso-line-height-rule: exactly"><B>printf("\nx=%g y=%10.8lf",x,y);<p></p></B></P><P 24pt; mso-line-height-rule: exactly"><B>}</B></P>
 楼主| 发表于 2004-5-15 07:06:26 | 显示全部楼层
< center" align=center><B>离散牛顿法解非线性方程组</B><B> lisannt.c<p></p></B></P>< 23pt; mso-line-height-rule: exactly">#include&lt;math.h&gt;<p></p></P>< 23pt; mso-line-height-rule: exactly">#include&lt;stdio.h&gt;<p></p></P><P 23pt; mso-line-height-rule: exactly">#define N   3<p></p></P><P 23pt; mso-line-height-rule: exactly">double a[N][N+1];<p></p></P><P 23pt; mso-line-height-rule: exactly">double pi;<p></p></P><P 23pt; mso-line-height-rule: exactly">double f1(double x[])<p></p></P><P 23pt; mso-line-height-rule: exactly">{<p></p></P><P 23pt; mso-line-height-rule: exactly">return(3.0*x[0]-cos(x[1]*x[2])-0.5);<p></p></P><P 23pt; mso-line-height-rule: exactly">}<p></p></P><P 23pt; mso-line-height-rule: exactly">double f2(double x[])<p></p></P><P 23pt; mso-line-height-rule: exactly">{<p></p></P><P 23pt; mso-line-height-rule: exactly">return(x[0]*x[0]-81.0*(x[1]+0.1)*(x[1]+0.1)+sin(x[2])+1.06);<p></p></P><P 23pt; mso-line-height-rule: exactly">}<p></p></P><P 23pt; mso-line-height-rule: exactly">double f3(double x[])<p></p></P><P 23pt; mso-line-height-rule: exactly">{<p></p></P><P 23pt; mso-line-height-rule: exactly">return(exp(-x[0]*x[1])+20.0*x[2]+pi*10.0/3.0-1.0);<p></p></P><P 23pt; mso-line-height-rule: exactly">}<p></p></P><P 23pt; mso-line-height-rule: exactly">void FDF(double x[],double h)<p></p></P><P 23pt; mso-line-height-rule: exactly">{<p></p></P><P 23pt; mso-line-height-rule: exactly">int i;<p></p></P><P 23pt; mso-line-height-rule: exactly">double y1,y2,y3,x1[N];<p></p></P><P 23pt; mso-line-height-rule: exactly">y1=f1(x);y2=f2(x);y3=f3(x);<p></p></P><P 23pt; mso-line-height-rule: exactly">a[0][N]=y1;a[1][N]=y2;a[2][N]=y3;<p></p></P><P 23pt; mso-line-height-rule: exactly">for(i=0;i&lt;N;i++)x1=x;<p></p></P><P 23pt; mso-line-height-rule: exactly">x1[0]+=h;  a[0][0]=(f1(x1)-y1)/h;<p></p></P><P 23pt; mso-line-height-rule: exactly">a[1][0]=(f2(x1)-y2)/h;  a[2][0]=(f3(x1)-y3)/h;<p></p></P><P 23pt; mso-line-height-rule: exactly">x1[0]=x[0];x1[1]+=h;   a[0][1]=(f1(x1)-y1)/h;<p></p></P><P 23pt; mso-line-height-rule: exactly">a[1][1]=(f2(x1)-y2)/h;  a[2][1]=(f3(x1)-y3)/h;<p></p></P><P 23pt; mso-line-height-rule: exactly">x1[1]=x[1];x1[2]+=h;  a[0][2]=(f1(x1)-y1)/h;<p></p></P><P 23pt; mso-line-height-rule: exactly">a[1][2]=(f2(x1)-y2)/h;  a[2][2]=(f3(x1)-y3)/h;<p></p></P><P 23pt; mso-line-height-rule: exactly">}<p></p></P><P 23pt; mso-line-height-rule: exactly"> <p></p></P><P 23pt; mso-line-height-rule: exactly">int gauss(int n)<p></p></P><P 23pt; mso-line-height-rule: exactly">  {<p></p></P><P 23pt; mso-line-height-rule: exactly">  int i,j,k,i0;<p></p></P><P 23pt; mso-line-height-rule: exactly">  double c,t,eps=1.0e-20;<p></p></P><P 23pt; mso-line-height-rule: exactly">  for(k=0;k&lt;n;k++)<p></p></P><P 23pt; mso-line-height-rule: exactly">    {<p></p></P><P 23pt; mso-line-height-rule: exactly">    c=0.0;<p></p></P><P 23pt; mso-line-height-rule: exactly">    for(i=k;i&lt;n;i++)<p></p></P><P 23pt; mso-line-height-rule: exactly">      {<p></p></P><P 23pt; mso-line-height-rule: exactly">      t=fabs(a[k]);<p></p></P><P 23pt; mso-line-height-rule: exactly">      if(t&gt;c)<p></p></P><P 23pt; mso-line-height-rule: exactly">        {   c=t;i0=i;  }<p></p></P><P 23pt; mso-line-height-rule: exactly">      }<p></p></P><P 23pt; mso-line-height-rule: exactly">    if(c&lt;=eps)  return(0);<p></p></P><P 23pt; mso-line-height-rule: exactly">    if(i0!=k)<p></p></P><P 23pt; mso-line-height-rule: exactly">      for(j=k;j&lt;=n;j++)<p></p></P><P 23pt; mso-line-height-rule: exactly">        {<p></p></P><P 23pt; mso-line-height-rule: exactly">        t=a[k][j];    a[k][j]=a[i0][j];<p></p></P><P 23pt; mso-line-height-rule: exactly">        a[i0][j]=t;<p></p></P><P 23pt; mso-line-height-rule: exactly">        }<p></p></P><P 23pt; mso-line-height-rule: exactly">    c=1.0/a[k][k];<p></p></P><P 23pt; mso-line-height-rule: exactly">    for(j=k+1;j&lt;=n;j++)a[k][j]*=c;<p></p></P><P 23pt; mso-line-height-rule: exactly">    for(i=k+1;i&lt;n;i++)<p></p></P><P 23pt; mso-line-height-rule: exactly">      for(j=k+1;j&lt;=n;j++)<p></p></P><P 23pt; mso-line-height-rule: exactly">         a[j]-=(a[k]*a[k][j]);<p></p></P><P 23pt; mso-line-height-rule: exactly">    }<p></p></P><P 23pt; mso-line-height-rule: exactly">  for(i=n-1;i&gt;=0;i--)<p></p></P><P 23pt; mso-line-height-rule: exactly">    for(j=i+1;j&lt;n;j++)<p></p></P><P 23pt; mso-line-height-rule: exactly">      a[n]-=(a[j]*a[j][n]);<p></p></P><P 23pt; mso-line-height-rule: exactly">  return(1);<p></p></P><P 23pt; mso-line-height-rule: exactly">}<p></p></P><P 23pt; mso-line-height-rule: exactly"> <p></p></P><P 23pt; mso-line-height-rule: exactly">int  lisanfa(double x0[],double h,double eps)<p></p></P><P 23pt; mso-line-height-rule: exactly">{<p></p></P><P 23pt; mso-line-height-rule: exactly">int i,k=1;<p></p></P><P 23pt; mso-line-height-rule: exactly">double dx,x1[N],y[N];<p></p></P><P 23pt; mso-line-height-rule: exactly">for(;;)<p></p></P><P 23pt; mso-line-height-rule: exactly">  {<p></p></P><P 23pt; mso-line-height-rule: exactly">  FDF(x0,h);<p></p></P><P 23pt; mso-line-height-rule: exactly">  if(!gauss(N))return(0);<p></p></P><P 23pt; mso-line-height-rule: exactly">  for(i=0;i&lt;N;i++)y=a[N];<p></p></P><P 23pt; mso-line-height-rule: exactly">  dx=0.0;<p></p></P><P 23pt; mso-line-height-rule: exactly">  for(i=0;i&lt;N;i++)if(fabs(y)&gt;dx)dx=fabs(y);<p></p></P><P 23pt; mso-line-height-rule: exactly">  for(i=0;i&lt;N;i++)<p></p></P><P 23pt; mso-line-height-rule: exactly">    {<p></p></P><P 23pt; mso-line-height-rule: exactly">    x1=x0-y;    x0=x1;<p></p></P><P 23pt; mso-line-height-rule: exactly">    }<p></p></P><P 23pt; mso-line-height-rule: exactly">    printf("\nk=%d",k);<p></p></P><P 23pt; mso-line-height-rule: exactly">    printf("\nx1=%12.10lf  x2=%12.10lf  x3=%12.10lf",x1[0],x1[1],x1[2]);<p></p></P><P 23pt; mso-line-height-rule: exactly">  if(dx&lt;eps)break;<p></p></P><P 23pt; mso-line-height-rule: exactly">  h*=dx;<p></p></P><P 23pt; mso-line-height-rule: exactly">  if(fabs(h)&lt;eps)h=eps;<p></p></P><P 23pt; mso-line-height-rule: exactly">  k++;if(k&gt;200)return(0);<p></p></P><P 23pt; mso-line-height-rule: exactly">  }<p></p></P><P 23pt; mso-line-height-rule: exactly">return(1);<p></p></P><P 23pt; mso-line-height-rule: exactly">}<p></p></P><P 23pt; mso-line-height-rule: exactly"> <p></p></P><P 23pt; mso-line-height-rule: exactly">main()<p></p></P><P 23pt; mso-line-height-rule: exactly">{<p></p></P><P 23pt; mso-line-height-rule: exactly">int i;<p></p></P><P 23pt; mso-line-height-rule: exactly">double x0[N]={2.0,1.0,0.0},h=0.1,eps=1.0e-08;<p></p></P><P 23pt; mso-line-height-rule: exactly">pi=4.0*atan(1.0);<p></p></P><P 23pt; mso-line-height-rule: exactly">if(lisanfa(x0,h,eps))<p></p></P><P 23pt; mso-line-height-rule: exactly">  {<p></p></P><P 23pt; mso-line-height-rule: exactly">  for(i=0;i&lt;N;i++)<p></p></P><P 23pt; mso-line-height-rule: exactly">    printf("\nx[%d] = %14.12lf  ",i,x0);<p></p></P><P 23pt; mso-line-height-rule: exactly">  }<p></p></P><P 23pt; mso-line-height-rule: exactly">else printf("\nFiled !");<p></p></P><P 23pt; mso-line-height-rule: exactly">}<p></p></P>
 楼主| 发表于 2004-5-15 07:07:06 | 显示全部楼层
< 20pt">二、已知<v:shapetype> <v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path gradientshapeok="t" connecttype="rect" extrusionok="f"></v:path><lock v:ext="edit" aspectratio="t"></lock></v:shapetype><v:shape><v:imagedata></v:imagedata></v:shape>展开成幂级数为<p></p></P>< 12pt; LINE-HEIGHT: 20pt">   <v:shape><v:imagedata></v:imagedata></v:shape><p></p></P>< 20pt">试编写程序,从键盘输入一个实数<I>x</I>,利用上述公式计算并输出<v:shape> <v:imagedata></v:imagedata></v:shape>的数值,计算误差控制<v:shape> <v:imagedata></v:imagedata></v:shape>。<p></p></P><P>#include&lt;stdio.h&gt;<p></p></P><P>main()<p></p></P><P>  {<p></p></P><P>  double  n=1.0, e, x, t=1, xn, y;<p></p></P><P>  printf(“\nInput a number”); scanf(“%lf”,&amp;x);<p></p></P><P>  e=1.0+x;xn=x;<p></p></P><P 18pt; mso-char-indent-count: 1.0; mso-char-indent-size: 18.0pt">do<p></p></P><P 18pt; mso-char-indent-count: 1.0; mso-char-indent-size: 18.0pt">  {<p></p></P><P 18pt; mso-char-indent-count: 1.0; mso-char-indent-size: 18.0pt">  n+=1.0; t*=n; xn*=x;<p></p></P><P 18pt; mso-char-indent-count: 1.0; mso-char-indent-size: 18.0pt">  y=xn/t; e+=y;<p></p></P><P 18pt; mso-char-indent-count: 1.0; mso-char-indent-size: 18.0pt">  }while(y&gt;1.0e-10);<p></p></P><P>  printf(“\n<I>e<SUP>x</SUP></I>=%12.10lf”,e);<p></p></P><P 18pt; mso-char-indent-count: 1.0; mso-char-indent-size: 18.0pt">}<p></p></P><P>输出结果:当x=1时,<I>e<SUP>x</SUP></I>=2.71828182846<p></p></P>
 楼主| 发表于 2004-5-15 07:07:56 | 显示全部楼层
< 24pt; mso-line-height-rule: exactly">#include&lt;stdio.h&gt;<p></p></P>< 24pt; mso-line-height-rule: exactly">main()<p></p></P>< 24pt; mso-line-height-rule: exactly">  {<p></p></P><P 24pt; mso-line-height-rule: exactly">  float x,y;char op;<p></p></P><P 24pt; mso-line-height-rule: exactly">  printf("\n请输入两个数的运算表达式\n");<p></p></P><P 24pt; mso-line-height-rule: exactly">  scanf("%f%c%f",&amp;x,&amp;op,&amp;y);<p></p></P><P 24pt; mso-line-height-rule: exactly">  switch(op)<p></p></P><P 24pt; mso-line-height-rule: exactly">    {<p></p></P><P 24pt; mso-line-height-rule: exactly">    case '+':printf("结果是%f",x+y);break;<p></p></P><P 24pt; mso-line-height-rule: exactly">    case '-':printf("结果是%f",x-y);break;<p></p></P><P 24pt; mso-line-height-rule: exactly">    case '*':printf("结果是%f",x*y);break;<p></p></P><P 24pt; mso-line-height-rule: exactly">    case '/':printf("结果是%f",x/y);break;<p></p></P><P 24pt; mso-line-height-rule: exactly">    default:printf("输入有错误");break;<p></p></P><P 24pt; mso-line-height-rule: exactly">    }<p></p></P><P 24pt; mso-line-height-rule: exactly">  }<p></p></P><P 24pt; mso-line-height-rule: exactly">说明:<p></p></P><P 24pt; mso-line-height-rule: exactly">1.switch后面括号内的表达式应是整型或字符型数据。<p></p></P><P 24pt; mso-line-height-rule: exactly">2.每个case后的常量的值互不相等。<p></p></P><P 24pt; mso-line-height-rule: exactly">3.各case的先后次序无关紧要。<p></p></P><P 24pt; mso-line-height-rule: exactly">4.若表达式的值与某个case后的常量相等,则执行此case后的语句,直到break语句为止,若找不到匹配,就执行default后的语句。<p></p></P><P 24pt; mso-line-height-rule: exactly">5.每个case后的break语句不能省略。<p></p></P><P 24pt; mso-line-height-rule: exactly"> <p></p></P>
 楼主| 发表于 2004-5-15 07:09:23 | 显示全部楼层
< 0cm 0cm 0pt; TEXT-INDENT: 0cm">/*  列主元法求逆矩阵  cainv.c  */<p></p></P>< 21pt; mso-line-height-rule: exactly"><B>#include&lt;math.h&gt;<p></p></B></P>< 21pt; mso-line-height-rule: exactly"><B>#include&lt;stdio.h&gt;<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>int inverta(double *a[],double *b[],int n,double eps)<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>  {<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>  int i,j,k,i0;  double c,t,maxa;<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>  for(i=0;i&lt;n;i++)<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>    for(j=0;j&lt;n;j++)<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>      if(j==i)b[j]=1.0;    else b[j]=0.0;<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>  for(k=0;k&lt;n;k++)<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>    {<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>    maxa=0.0;<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>    for(i=k;i&lt;n;i++)<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>      {<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>      t=fabs(a[k]);<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>      if(t&gt;maxa)   {   maxa=t;i0=i;   }<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>      }<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>    if(maxa&lt;=eps)return(0);<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>    if(i0!=k)<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>      {<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>      for(j=0;j&lt;n;j++)<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>      {<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>      t=a[k][j];  c=b[k][j];<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>      a[k][j]=a[i0][j];  b[k][j]=b[i0][j];<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>      a[i0][j]=t;  b[i0][j]=c;<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>      }<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>      }<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>    c=1.0/a[k][k];<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>    for(j=k;j&lt;n;j++)a[k][j]*=c;<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>    for(j=0;j&lt;n;j++)b[k][j]*=c;<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>    for(i=k+1;i&lt;n;i++)<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>      {<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>      for(j=k+1;j&lt;n;j++)   a[j]-=(a[k]*a[k][j]);<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>      for(j=0;j&lt;n;j++)   b[j]-=(a[k]*b[k][j]);<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>      }<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>    }<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>  for(k=n-2;k&gt;=0;k--)<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>    for(i=k;i&gt;=0;i--)<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>      for(j=0;j&lt;n;j++)b[j]-=(b[k+1][j]*a[k+1]);<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>  return(1);<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>  }<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>main()<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>  {<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>  int i,j,n=4;  double b[4][4];<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>  double eps=1.0e-9, *pa[4],*pb[4];<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>  double a[4][4]={1,1,0,1,1,2,2,2,2,-2,2,1,3,-1,5,3};<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>  for(i=0;i&lt;n;i++)<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>    {    pa=a;    pb=b;    }<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>  if(inverta(pa,pb,n,eps))<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>    {<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>    for(i=0;i&lt;n;i++)<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>      {<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>      printf("\n");<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>      for(j=0;j&lt;n;j++)<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>      printf("a-1[%d][%d]=%g   ",i,j,b[j]);<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>      }<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>    }<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>  else printf("\nFiled !");<p></p></B></P><P 21pt; mso-line-height-rule: exactly"><B>  }<p></p></B></P>
 楼主| 发表于 2004-5-15 07:10:35 | 显示全部楼层
< center" align=center><B>列主元消去法解线性方程组  gauss.c<p></p></B></P>< 23pt; mso-line-height-rule: exactly">#include&lt;math.h&gt;<p></p></P>< 23pt; mso-line-height-rule: exactly">#include&lt;stdio.h&gt;<p></p></P><P 23pt; mso-line-height-rule: exactly">int gauss(double *a[],int n)<p></p></P><P 23pt; mso-line-height-rule: exactly">  {<p></p></P><P 23pt; mso-line-height-rule: exactly">  int i,j,k,i0;<p></p></P><P 23pt; mso-line-height-rule: exactly">  double c,t,eps=1.0e-20;<p></p></P><P 23pt; mso-line-height-rule: exactly">  for(k=0;k&lt;n;k++)<p></p></P><P 23pt; mso-line-height-rule: exactly">    {<p></p></P><P 23pt; mso-line-height-rule: exactly">    c=0.0;<p></p></P><P 23pt; mso-line-height-rule: exactly">    for(i=k;i&lt;n;i++)<p></p></P><P 23pt; mso-line-height-rule: exactly">      {<p></p></P><P 23pt; mso-line-height-rule: exactly">      t=fabs(a[k]);<p></p></P><P 23pt; mso-line-height-rule: exactly">      if(t&gt;c)   {  c=t;  i0=i; }<p></p></P><P 23pt; mso-line-height-rule: exactly">      }<p></p></P><P 23pt; mso-line-height-rule: exactly">    if(c&lt;=eps)return(0);<p></p></P><P 23pt; mso-line-height-rule: exactly">    if(i0!=k)<p></p></P><P 23pt; mso-line-height-rule: exactly">      for(j=k;j&lt;=n;j++)<p></p></P><P 23pt; mso-line-height-rule: exactly">        {<p></p></P><P 23pt; mso-line-height-rule: exactly">        t=a[k][j];<p></p></P><P 23pt; mso-line-height-rule: exactly">        a[k][j]=a[i0][j];<p></p></P><P 23pt; mso-line-height-rule: exactly">        a[i0][j]=t;<p></p></P><P 23pt; mso-line-height-rule: exactly">        }<p></p></P><P 23pt; mso-line-height-rule: exactly">    c=1.0/a[k][k];<p></p></P><P 23pt; mso-line-height-rule: exactly">    for(j=k+1;j&lt;=n;j++)a[k][j]*=c;<p></p></P><P 23pt; mso-line-height-rule: exactly">    for(i=k+1;i&lt;n;i++)<p></p></P><P 45pt; LINE-HEIGHT: 23pt; mso-line-height-rule: exactly">for(j=k+1;j&lt;=n;j++) <p></p></P><P 60pt; LINE-HEIGHT: 23pt; mso-char-indent-count: 4.0; mso-char-indent-size: 15.0pt; mso-line-height-rule: exactly">a[j]-=(a[k]*a[k][j]);<p></p></P><P 23pt; mso-line-height-rule: exactly">    }<p></p></P><P 23pt; mso-line-height-rule: exactly">  for(i=n-1;i&gt;=0;i--)<p></p></P><P 23pt; mso-line-height-rule: exactly">    for(j=i+1;j&lt;n;j++)<p></p></P><P 23pt; mso-line-height-rule: exactly">      a[n]-=(a[j]*a[j][n]);<p></p></P><P 23pt; mso-line-height-rule: exactly">  return(1);<p></p></P><P 15pt; LINE-HEIGHT: 23pt; mso-char-indent-count: 1.0; mso-char-indent-size: 15.0pt; mso-line-height-rule: exactly">}<p></p></P><P 23pt; mso-line-height-rule: exactly"> <p></p></P><P 23pt; mso-line-height-rule: exactly">main()<p></p></P><P 23pt; mso-line-height-rule: exactly">  {<p></p></P><P 23pt; mso-line-height-rule: exactly">  int i,j,n=3;<p></p></P><P 23pt; mso-line-height-rule: exactly">  double *pa[3];<p></p></P><P 23pt; mso-line-height-rule: exactly">  double a[3][4]={1,1,1,6,2,3,1,11,1,2,3,14};<p></p></P><P 23pt; mso-line-height-rule: exactly">  for(i=0;i&lt;n;i++)pa=a;<p></p></P><P 23pt; mso-line-height-rule: exactly">  if(gauss(pa,n))<p></p></P><P 23pt; mso-line-height-rule: exactly">    {<p></p></P><P 23pt; mso-line-height-rule: exactly">    for(i=0;i&lt;n;i++)<p></p></P><P 23pt; mso-line-height-rule: exactly">      printf("\nx%d = %g ",i,a[n]);<p></p></P><P 23pt; mso-line-height-rule: exactly">    }<p></p></P><P 23pt; mso-line-height-rule: exactly">  else printf("\nFiled !");<p></p></P><P 23pt; mso-line-height-rule: exactly">  }</P>
您需要登录后才可以回帖 登录 | 注-册-帐-号

本版积分规则

小黑屋|手机版|Archiver|数学建模网 ( 湘ICP备11011602号 )

GMT+8, 2024-11-27 22:34 , Processed in 0.074414 second(s), 12 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表