C语言之基本算法25—牛顿迭代法求方程近似根
2015-07-10 12:07
645 查看
//牛顿迭代法!
/*
============================================================
题目:用牛顿迭代法求解3*x*x*x-2*x*x-16=0的近似解。
============================================================
*/
#include<stdio.h>
#include<math.h>
#define E 1e-8
double hs(double x)
{
return(3*x*x*x-2*x*x-16);
//原函数
}
double dhs(double x)
{
return(9*x*x-4*x);
//导函数
}
void main()
{
double x1=1.0,x2;
x2=x1+1.0;
while(fabs(x2-x1)>E)
//无论怎么变,只要x1和x2能进入循环,就可以完成求解,即x2!=x1.
{
x1=x2;
x2=x1-hs(x1)/dhs(x1);
//此处是用泰勒展式保留前两项推倒得出的。读者可查找相关文献详细理解之。
}
printf("方程:3*x*x*x-2*x*x-16=0\n");
printf("解得:x=%.4lf\n",x2);
}
/*
============================================================
评: 牛顿迭代法很好掌握,实用性较强!编程时只需求得导函数, 将原函数和
导函数在程序中替换,即可求得方程的解!
============================================================
*/
/*
============================================================
题目:用牛顿迭代法求解3*x*x*x-2*x*x-16=0的近似解。
============================================================
*/
#include<stdio.h>
#include<math.h>
#define E 1e-8
double hs(double x)
{
return(3*x*x*x-2*x*x-16);
//原函数
}
double dhs(double x)
{
return(9*x*x-4*x);
//导函数
}
void main()
{
double x1=1.0,x2;
x2=x1+1.0;
while(fabs(x2-x1)>E)
//无论怎么变,只要x1和x2能进入循环,就可以完成求解,即x2!=x1.
{
x1=x2;
x2=x1-hs(x1)/dhs(x1);
//此处是用泰勒展式保留前两项推倒得出的。读者可查找相关文献详细理解之。
}
printf("方程:3*x*x*x-2*x*x-16=0\n");
printf("解得:x=%.4lf\n",x2);
}
/*
============================================================
评: 牛顿迭代法很好掌握,实用性较强!编程时只需求得导函数, 将原函数和
导函数在程序中替换,即可求得方程的解!
============================================================
*/
相关文章推荐
- Artistic Style在windows下的使用(C/C++)
- Artistic Style在windows下的使用(C/C++)
- 在c++中调用c函数
- c语言 快速排序 和 二分 查找 模型
- C++运算符重载(友元函数方式)
- C语言之基本算法24—黄金分割法求方程近似根
- C++ Socket编程步骤
- C++ 对进程各种操作函数
- C++MFC编程笔记day06 MFC向导、MFC绘图类使用
- C语言之基本算法23—二分法求方程近似根
- 实例分析用指针访问二维数组的几种方法
- c++primer要点-表达式
- C++中公有继承、保护继承、私有继承的区别
- chapter17test1
- c++primer要点-字符串、向量和数组
- C语言实现二叉树的递归遍历和非递归遍历
- C语言中结构体内存分配机制
- [转] 值得推荐的C/C++框架和库
- C++中关于使用到CString的若干问题
- C语言之基本算法22—穷举法求方程近似根