⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1_1.c

📁 数值分析的一些常用计算
💻 C
字号:
#include "math.h"
#include "stdio.h"

int dhrt(a,b,h,eps,x,m,f)
int m;
double a,b,h,eps,x[],(*f)(); //x[]代表实根 ,eps代表精度,h搜索求根的时候代表的步长 
{int n,js;
 double z,y,z1,y1,z0,y0;
 n=0; 
 z=a; 
 y=(*f)(z);
 while ((z<=b+h/2.0)&&(n!=m))
      { if (fabs(y)<eps)
          { n=n+1; x[n-1]=z;
            z=z+h/2.0; y=(*f)(z);
          }
        else
          { z1=z+h; y1=(*f)(z1);
            if (fabs(y1)<eps)
              { n=n+1; x[n-1]=z1;
                z=z1+h/2.0; y=(*f)(z);
              }
            else if (y*y1>0.0)
              { y=y1; z=z1;}
            else
              { js=0;
                while (js==0)
                  { if (fabs(z1-z)<eps)
                      { n=n+1; x[n-1]=(z1+z)/2.0;
                        z=z1+h/2.0; y=(*f)(z);
                        js=1;
                      }
                    else
                      { z0=(z1+z)/2.0; y0=(*f)(z0);
                        if (fabs(y0)<eps)
                          { x[n]=z0; n=n+1; js=1;
                            z=z0+h/2.0; y=(*f)(z);
                          }
                        else if ((y*y0)<0.0)
                          { z1=z0; y1=y0;}
                        else { z=z0; y=y0;}
                      }
                  }
              }
          }
      }
    return(n);
  }
  
double dhrtf(x)
double x;
{
       double z;
       z=log(x+sin(x));
       return (z);
}
int main()
{
 int i,n;
 int m=6;
 double x[6];
 double dhrtf(double);
 n=dhrt(0.25,1.0,0.2,0.000001,x,m,dhrtf);
 printf("M=%d\n",n);
 for(i=0;i<=n-1;i++)
  printf("x(%d)=%13.7e\n",i,x[i]);
 printf("\n");  
 getch(); 
    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -