C語言程式設計——內容:用牛頓反覆運算法求一元三次方程的根.要求:由主函數調用求根子函數,謝謝各位了

C語言程式設計——內容:用牛頓反覆運算法求一元三次方程的根.要求:由主函數調用求根子函數,謝謝各位了


牛頓反覆運算法
牛頓反覆運算法又稱牛頓切線法,它採用以下方法求根:先任意設定一個與真實的根接近的值x0作為第一個近似根,由x0求出f(x0),過(x0,f(x0))點做f(x)的切線,交x軸於x1,把它作為第二次近似根,再由x1求出f(x1),再過(x1,f(x1))點做f(x)的切線,交x軸於x2,再求出f(x2),再作切線……如此繼續下去,直到足够接近真正的x為止.
其中f'(X0)是函數在X0處的斜率,也就是在X0處的導數.
代碼如下:
#include
#include
float f(float a,float b,float c,float d,float x)
{
float f;
f=((a*x+b)*x+c)*x+d;
return f;
}
float f1(float a,float b,float c,float x)
{
float f;
f=(x*3*a+2*b)*x+c;
return f;
}
float root(float a,float b,float c,float d)
{
float x0,x1=1;
do
{
x0=x1;
x1=x0-f(a,b,c,d,x0)/f1(a,b,c,x0);
}while(fabs(x1-x0)>=1e-6);
return x0;
}
void main()
{
float a,b,c,d,x;
printf(“input four float numbers:\n”);
scanf(“%f%f%f%f”,&a,&b,&c,&d);
x=root(a,b,c,d);
printf(“%.1fX^3+%.1fX^2+%.1fX+%.1f=0 its root near x=1.5 is:%.4f\n”,a,b,c,d,x);
getch();
}



C++程式程式設計:牛頓反覆運算法求解方程近似根
利用牛頓反覆運算法求方程f(x)=x*x-3*x-e(x次幂)+2=0在x=0附近的根;誤差不超過0.5*10(-5次幂)
高手幫忙!


很簡單,你自己寫,給你提示如下:
標頭檔加:
#include
函數:
f(x)= x*x - 3.0 * x - exp(x)+ 2.0;
一階導數:
f2(x)= 2.0 * x - 3.0 -exp(x);
反覆運算公式:
x1 = x0 - f(x0)/ f2(x0);
初值:
x0 = 0.0;
收斂條件:
if(fabs(x1-x0)< 0.5E-05){成功;}
else {
x0 = x1;
返回去再反覆運算.
}



用牛頓反覆運算法求方程f(x)=x^6-x-1=0在區間【1,2】內的實根,要求|f(x(k))|


#include
#include
#define eps 1e-8
void main()
{
double a=1,b=2;
double t,t0,f0,f00,m,n;
t0=(a+b)/2;
m=pow(t0,5);
n=pow(t0,4);
f0=6*m-1;
f00=30*n;
t=t0-f0/f00;
while(fabs(t-t0)>eps)
{
t0=t;
m=pow(t0,5);
 n=pow(t0,4);
f0=6*m-1;
 f00=30*n;
 t=t0-f0/f00;
printf(“t0=%12.10lf,t=%12.10lf\n”,t0,t);
}
printf(“用Newton切線法得:%12.10lf\n”,t);
}
結果為:
t0=1.2065843621,t=0.9809945654
t0=0.9809945654,t=0.8207881793
t0=0.8207881793,t=0.7300742137
t0=0.7300742137,t=0.7013898132
t0=0.7013898132,t=0.6988457773
t0=0.6988457773,t=0.6988271198
t0=0.6988271198,t=0.6988271188
用Newton切線法得:0.6988271188
Press any key to continue