牛顿迭代法(用c语言实现)
2009-10-16 10:43
190 查看
#include<stdio.h>
#include<math.h>
double f(double x)
{
double fx;
fx=cos(x)-x;
return fx;
}
double Df(double x)
{
double fx;
fx=-sin(x)-1;
return fx;
}
main()
{
double epsilon1,epsilon2,alpha;
int N,n;
double root;
double x0,x1,F,DF,tol,k;
printf("请输入初值alpha:");
scanf("%lf",&alpha);
printf("请输入精度epsilon1:");
scanf("%lf",&epsilon1);
printf("请输入精度epsilon2:");
scanf("%lf",&epsilon2);
printf("请输入最大迭代次数N:");
scanf("%d",&N);
x0=alpha;
for(n=1;n<=N;n++)
{
F=f(x0);
DF=Df(x0);
if(abs(F-x0)<epsilon1)
{
printf("%lf",&x0);
goto end;
}
else if(abs(DF)<epsilon2)
{
printf("失败!");
goto end;
}
else
{
x1==x0-F/DF;
tol=abs(x1-x0);
if(tol<epsilon1)
{
printf("%lf",&x1);
goto end;
}
}
x0=x1;
k=k+1;
}
end:
printf("结束!");
}
#include<math.h>
double f(double x)
{
double fx;
fx=cos(x)-x;
return fx;
}
double Df(double x)
{
double fx;
fx=-sin(x)-1;
return fx;
}
main()
{
double epsilon1,epsilon2,alpha;
int N,n;
double root;
double x0,x1,F,DF,tol,k;
printf("请输入初值alpha:");
scanf("%lf",&alpha);
printf("请输入精度epsilon1:");
scanf("%lf",&epsilon1);
printf("请输入精度epsilon2:");
scanf("%lf",&epsilon2);
printf("请输入最大迭代次数N:");
scanf("%d",&N);
x0=alpha;
for(n=1;n<=N;n++)
{
F=f(x0);
DF=Df(x0);
if(abs(F-x0)<epsilon1)
{
printf("%lf",&x0);
goto end;
}
else if(abs(DF)<epsilon2)
{
printf("失败!");
goto end;
}
else
{
x1==x0-F/DF;
tol=abs(x1-x0);
if(tol<epsilon1)
{
printf("%lf",&x1);
goto end;
}
}
x0=x1;
k=k+1;
}
end:
printf("结束!");
}
相关文章推荐
- 牛顿迭代法 c语言实现
- 牛顿迭代法 一元非线性方程求根 C语言实现
- 一个使用纯Win32 SDK和C语言实现的五子棋游戏
- C语言实现链表
- 【C语言】模拟实现链表
- c语言实现皇帝翻牌游戏
- c语言实现快速排序
- C语言 迷宫(栈实现)
- 【摘录】高斯滤波的C语言实现
- c语言:编写一个简易计算器,打印菜单界面,实现加减乘除运算,可以退出菜单界面
- 几种常见的排序方法(C语言实现)
- C语言实现一个自动刷弹幕的程序
- 几种常见排序算法的c语言实现
- C语言——常见的几种排序的实现
- C语言实现两数交换
- 归并排序--C语言实现
- C语言实现使用静态数组来构造栈结构
- 基于数组的队列实现(C语言)
- c语言实现通用数据结构(一):通用链表
- C语言实现简单文件加密解密