牛顿法求解
#include<stdio.h>#include<math.h>
#define PI 3.1415
double f(double x0)
{
double x1;
x1=(cos(x0)-x0)/(sin(x0)+1);
x1=x1+x0;
return x1;
}
int main()
{
int t=0,k=100,n=0;
double x0=PI/4,x1;
while(n<k)
{
x1=f(x0);
if(fabs(x0-x1)<0.001)
{
t=1;
break;
}
else
{
x0=x1;
n=n+1;
}
if(t==1)
printf("%10.5f",x1);
else
printf("not found");
return 0;
}
}
这个答案是不是有问题啊,中间符号都不对 本帖最后由 jackz007 于 2022-11-23 17:36 编辑
验证计算结果是否正确的方法很简单,在输出 x1 的值后,多添加一句:
printf("%.4f\n" , x1 - cos(x1)) ;// 看看输出是不是 0 值就可以了。
这是我写的代码
#include <stdio.h>
#include <math.h>
#define PI 3.1415
double f(double x)
{
return x + (cos(x) - x) / (sin(x) + 1) ;
}
int main(void)
{
int t = 0 , k = 100 , n = 0 ;
double x0 = PI / 4 , x1 ;
while(n < k) {
x1 = f(x0) ;
if(fabs(x0 - x1) < 1e-14) {
t = 1 ;
break ;
} else {
x0 = x1 ;
n = n + 1 ;
}
}
if(t == 1) printf("\nFengcheng geng is %10.5f\n" , x1) ;
else printf("\nSorry,not found!\n") ;
}
编译运行实况:
D:\\C>g++ -o x x.c
D:\\C>x
Fengcheng geng is 0.73909
D:\\C>
页:
[1]