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

📄 3053027067_钟伟坚_1002.txt

📁 数值分析的c语言几种算法实现
💻 TXT
字号:
  #include <cmath>
       #include <cstdio>
       #include <cstdlib>
       #include <algorithm>
#include <iostream>
       using namespace std;
double Polynomial_Root(double c[], int n, double a, double b, double eps)
{
    double x,dx,NX;
    double f,ff,fff;
    int i,j,s,k;
    int count;
    double value,diff;
	double fa,fb,fp,mid,inter;
	 fa=c[n];
	 fb=c[n];
	 if(a>b){inter=a;a=b;b=inter;}
	 for(i=n-1;i>=0;i--)
	 {
		 fa=fa*a+c[i];
		 fb=fb*b+c[i];
	 }
//	 cout << fa << endl << fb << endl;
/*	 if(fa==0.0){mid=a;return mid;}
	 if(fb==0.0){mid=b;return mid;}
	 if(fa>0.0) flaga=1;
	 else flaga=-1;
	 if(fb>0.0) flagb=1;
	 else flagb=-1;*/
	 if(fa*fb<0.0) {
		 while(1){
			 mid=a+(b-a)/2;
			 if(b-a<eps) 
			 {
				 if(mid < eps && mid > -eps)
		                    mid = 0.0;
				 return mid;
			 }
			 fp=c[n];
			 for(i=n-1;i>=0;i--)
				 fp=fp*mid+c[i];
		//	 cout << mid << endl << fp << endl;
			 if(fp==0.0) return mid;
			 if(fp*fa>0) a=mid;
			 else b=mid;
		 }
	 }
	 else 
	 {
/*    s=1;
    for(i=0;;i++){
        s*=2;
        for(j=1;j<=s;j++)
        {*/
	    while(1)
		{
			 value = a + (b - a) * (static_cast<double>(rand()) / RAND_MAX);
			NX=1000.00;
          //  value=a+(b-a)*j/s;
            count=100;
            while(count--)
            {
                f=c[n];
                for( k=n-1;k>=0;k--)
                  f=f*value+c[k];

                ff=c[n]*n;
                for(k=n-1;k>0;k--)
                  ff=ff*value+c[k]*k;

                fff=c[n]*n*(n-1);
                for( k=n-1;k>1;k--)
                  fff=fff*value+c[k]*k*(k-1);

                dx=value-f*ff/(ff*ff-f*fff);
                if(dx>value) diff=dx-value;
                else diff=value-dx;
                
                if(diff<0.5*eps&&dx<=b&&dx>=a){
					if(abs(dx) < eps)
		                          dx = 0.0;
					return dx;
				}
			//	if(NX>diff) NX=diff;
			//	else break;
                value=dx;
            }
        }
    }
}

⌨️ 快捷键说明

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