C语言编程 牛顿迭代法求sinx-x/2在x=pi附近的一个实根,精度小于10(-4)

如题所述

第1个回答  推荐于2018-04-21
#include <stdio.h>
#include <math.h>

#define PI 3.141592653

int main()
{
double dXPrev, dX;

dX = PI;
do {
dXPrev = dX;
dX = dXPrev - (sin(dXPrev) - dXPrev / 2) / (cos(dXPrev) - 0.5);
} while (fabs(dX - dXPrev) >= 1e-4);

printf("Result: %f\n", dX);

return 0;
}本回答被提问者和网友采纳
第2个回答  2011-03-28
(n))^2-sinx(n)-1]/[18x(n)-cosx(n)].
取x(0)=0.5,
x(1)=0.405129911,
x(2)=0.392101462,
x(3)=0.391847004,
x(4)=0.391846907,
3次迭代已经得到四位近似值x=0.3918.

二分法: f(x)=9x^2-sinx-1.
f(0)=-1,f(1)=7.15853,f(0.5)=0.770577.
f(0.25)=-0.68490,
f[(0.25+0.5)/2]=f(0.375)=-0.10065,
f[(0.375+0.5)/2]=f(0.4375)=0.29898,
f[(0.375+0.4375)/2]=f(0.40625)=0.09018,
......
要13次左右才能得到四位近似值.

C语言编程 牛顿迭代法求sinx-x\/2在x=pi附近的一个实根,精度小于10...
int main(){ double dXPrev, dX;dX = PI;do { dXPrev = dX;dX = dXPrev - (sin(dXPrev) - dXPrev \/ 2) \/ (cos(dXPrev) - 0.5);} while (fabs(dX - dXPrev) >= 1e-4);printf("Result: %f\\n", dX);return 0;} ...

求C语言 牛顿迭代法 程序~~~
float f(float x){ return (x*x*x-2*x*x-5*x+6);}float f1(float x){ return (3*x*x-4*x-5);}void main(){ float x1=0,x; clrscr(); do { x=x1; x1=x-f(x)\/f1(x); }while(fabs(x1-x)>0.0001); printf("x=%f\\n",x1);} 本回答由提问者推荐 举报| 答案纠错 | 评论(1...

用牛顿迭代法(c语言)求函数f(x)= a*pow(x,i)+b*pow(x,j)+c*pow(x,k...
C语言的函数定义是不能嵌套的。楼主的代码main里面还定义了f和f1函数,这个是不符合C语言的语法的。还有f(x)=f1(x),这是什么语法?

...+d=0。系数a,b,c,d由主函数输入,求x在1附近的1个实根。
f=((a*x0+b)*x0+c)*x0+d;是用来求f在第i+1次迭代时的,在xi处的值,这里f(x)是一个3次多项式,即 f1=(3*a*x0+2*b)*x0+c;f1是用来求第i+1次迭代时,f在xi处的导数,而f在x处的导数为 而循环结束一般是误差在某个范围内,就认为得到解了,所以是 while(fabs(x-x0)>...

用牛顿迭代法求方程f(x)=x^6-x-1=0在区间【1,2】内的实根,要求|f(x(k...
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...

C语言用迭代法求x-sinx-0.5=0。输入初值为1, 求平方根的迭代公式为x=...
下面是一个示例代码,它实现了用迭代法求解x-sinx-0.5=0的方程,并使用输入的初值1进行求解。include <stdio.h> include <math.h> int main(void) { \/\/ 定义迭代次数 int num_iterations = 100;\/\/ 定义初值x0 double x0 = 1.0;\/\/ 定义接受迭代结果的变量x1 double x1;\/\/ 开始迭代 for...

...x³+2x²+3x+4=0在1附近的一个实根(c语言)
return x*x*x+2*x*x+3*x+4;} double f1(double x){ return 3*x*x+4*x+3;} double outqs(double x,double eps) { double f0=f(x)\/f1(x);if(fabs(f(x))<eps)return x;outqs(x-f0,eps);} int main(){ double x=1,eps=0.0001;cin>>x>>eps;cout<<outqs(x,eps)<...

二.用Newton 选代法求方程 cosx-xe^x=0 的最小正根,取初值 x0=0...
使用牛顿迭代法求解方程 cosx - xe^x = 0 的最小正根,步骤如下:步骤1:定义方程 f(x) = cosx - xe^x 和其导数 f'(x) = -sinx - e^x - xe^x。步骤2:取初始值 x0 = 0。步骤3:计算下一个近似值 x1,使用公式 x1 = x0 - f(x0)\/f'(x0)。计算 f(0) = cos(0) -...

cosx=x的精确解
牛顿迭代法:令f(x)=cosx-x=0 f'(x)=-sinx-1 先令x=1 x=1-(cos1-1)\/(-sin1-1)=0.750363867843 第二次迭代:x=0.750363867843-(cos0.750363867843-0.750363867843)\/(-sin0.750363867843-1)...经多次迭代,得x=0.739085133216,误差小于1e-10 参考资料:http:\/\/baike.baidu.com\/view...

x-sinx=0.5 用牛顿迭代法求根
5=0.5087 X1=0.5+sin0.5087=0.5088 X1=0.5+sin0.5088=0.5088 如果取万分之一精度:X=0.5088 如取 0.000001 的精度:取:Xo=0.508866 解出:X1=0.5+sin0.508866=0.508881 X1=0.5+sin0.508881=0.508881 若取 10^(-6) 精度,牛顿迭代法的根为:X = 0.508881.

相似回答