當前位置:編程學習大全網 - 編程語言 - 大學計算機 NS圖算法求解

大學計算機 NS圖算法求解

第壹個:定義壹個函數求n的階乘,就是從1乘到n 然後弄個壹個循環累加

第二個:窮舉法:設各有a、b、c只,然後列舉所有的abc使之等式成立,弄個三重循環就行了

第三個:參考網絡

牛頓叠代法(Newton's method)又稱為牛頓-拉夫遜(拉弗森)方法(Newton-Raphson method),它是牛頓在17世紀提出的壹種在實數域和復數域上近似求解方程的方法。多數方程不存在求根公式,因此求精確根非常困難,甚至不可能,從而尋找方程的近似根就顯得特別重要。方法使用函數f(x)的泰勒級數的前面幾項來尋找方程f(x) = 0的根。牛頓叠代法是求方程根的重要方法之壹,其最大優點是在方程f(x) = 0的單根附近具有平方收斂,而且該法還可以用來求方程的重根、復根,此時線性收斂,但是可通過壹些方法變成超線性收斂。另外該方法廣泛用於計算機編程中。

double func(double x) //函數

{

return x*x*x*x-3*x*x*x+1.5*x*x-4.0;

}

double func1(double x) //導函數

{

return 4*x*x*x-9*x*x+3*x;

}

int Newton(double *x,double precision,int maxcyc) //叠代次數

{

double x1,x0;

int k;

x0=*x;

for(k=0;k<maxcyc;k++)

{

if(func1(x0)==0.0)//若通過初值,函數返回值為0

{

printf("叠代過程中導數為0!\n");

return 0;

}

x1=x0-func(x0)/func1(x0);//進行牛頓叠代計算

if(fabs(x1-x0)<precision || fabs(func(x1))<precision) //達到結束條件

{

*x=x1; //返回結果

return 1;

}

else //未達到結束條件

x0=x1; //準備下壹次叠代

}

printf("叠代次數超過預期!\n"); //叠代次數達到,仍沒有達到精度

return 0;

}

int main()

{

double x,precision;

int maxcyc;

printf("輸入初始叠代值x0:");

scanf("%lf",&x);

printf("輸入最大叠代次數:");

scanf("%d",&maxcyc);

printf("叠代要求的精度:");

scanf("%lf",&precision);

if(Newton(&x,precision,maxcyc)==1) //若函數返回值為1

printf("該值附近的根為:%lf\n",x);

else //若函數返回值為0

printf("叠代失敗!\n");

getch();

return 0;

}

  • 上一篇:我的電腦總是藍屏,或者什麽內存忍不住讀?請給我壹些建議。
  • 下一篇:如何在CCS3.3中建立壹個簡單的工程
  • copyright 2024編程學習大全網