第十一周OJ(6)牛顿迭代公式
2016-11-26 14:59
651 查看
*\
烟台大学计算机与控制工程学院
All rights reserved.
作者:汪莹莉
完成日期:2016年11月26日
由主函数输入。求x在1附近的一个实根。求出根后由主函数输出。结果保留两
位小数。
#include<stdio.h>
#include<math.h>
int main()
{
double solut(double,double,double,double );
double a,b,c,d;
scanf("%lf%lf%lf%lf",&a,&b,&c,&d);
printf("%.2f",solut(a,b,c,d));;
return 0;
}
double solut(double a,double b,double c,double d)
{
double x,x0;
double x=1;//求在几周围的实根
do
{
x0=x;
x=x0-(((a*x+b)*x+c)*x+d)/((3*a*x+2*b)*x+c);
}
while(fabs(x-x0)>=1e-5);//函数fabs求x的绝对值,计算|x|, 当x不为负时返回 x,否则返回 -x
return x;
}
运行结果:
知识点总结;牛顿迭代法,也称牛顿切线法:先任意设定一个与真实的根接近的值x0作为第一次近似根,由x0求出f(x0),过(x0,f(x0))点做f(x)的切线,交x轴于x1,把它作为第二次近似根,再由x1求出f(x1),过(x1,f(x1))点做f(x)的切线,交x轴于x2,……如此继续下去,直到足够接近(比如|x- x0|<1e-6时)真正的根x*为止。
而f '(x0)=f(x0)/( x1- x0)
所以 x1= x0- f(x0)/ f ' (x0)。
牛顿迭代公式:x0-f(x0)/f'(x0)>=x1;
学习心得:明确什么是牛顿迭代公式,并且掌握运算公式
烟台大学计算机与控制工程学院
All rights reserved.
作者:汪莹莉
完成日期:2016年11月26日
题目描述
用牛顿迭代法求根。方程为ax3+bx2+cx+d=0。系数a,b,c,d的值一次为1,2,3,4,由主函数输入。求x在1附近的一个实根。求出根后由主函数输出。结果保留两
位小数。
输入
系数a,b,c,d的值输出
x在1附近的一个实根样例输入
1 2 3 4
样例输出
-1.65
主函数已给定如下,提交时不需要包含下述主函数 /* C代码 */ int main() { double solut(double ,double ,double ,double ); double a,b,c,d; scanf("%lf%lf%lf%lf",&a,&b,&c,&d); printf("%.2f",solut(a,b,c,d));; return 0; } /* C++代码 */ int main() { double solut(double ,double ,double ,double ); double a,b,c,d; cin>>a>>b>>c>>d; cout<<setiosflags(ios::fixed); cout<<setprecision(2); cout<<solut(a,b,c,d)<<endl; return 0; }
编译程序:
#include<stdio.h>
#include<math.h>
int main()
{
double solut(double,double,double,double );
double a,b,c,d;
scanf("%lf%lf%lf%lf",&a,&b,&c,&d);
printf("%.2f",solut(a,b,c,d));;
return 0;
}
double solut(double a,double b,double c,double d)
{
double x,x0;
double x=1;//求在几周围的实根
do
{
x0=x;
x=x0-(((a*x+b)*x+c)*x+d)/((3*a*x+2*b)*x+c);
}
while(fabs(x-x0)>=1e-5);//函数fabs求x的绝对值,计算|x|, 当x不为负时返回 x,否则返回 -x
return x;
}
运行结果:
知识点总结;牛顿迭代法,也称牛顿切线法:先任意设定一个与真实的根接近的值x0作为第一次近似根,由x0求出f(x0),过(x0,f(x0))点做f(x)的切线,交x轴于x1,把它作为第二次近似根,再由x1求出f(x1),过(x1,f(x1))点做f(x)的切线,交x轴于x2,……如此继续下去,直到足够接近(比如|x- x0|<1e-6时)真正的根x*为止。
而f '(x0)=f(x0)/( x1- x0)
所以 x1= x0- f(x0)/ f ' (x0)。
牛顿迭代公式:x0-f(x0)/f'(x0)>=x1;
学习心得:明确什么是牛顿迭代公式,并且掌握运算公式
相关文章推荐
- 第十一周:C语言:牛顿迭代求根
- 泰勒级数+牛顿迭代公式+最简单的C语言求根号的值
- 牛顿迭代公式
- 牛顿迭代公式求根式
- 牛顿迭代公式计算平方根立方根
- 开方 牛顿迭代公式
- 牛顿迭代公式
- wmjxoj - 1050: QAQ的公式求解(二)【快速幂 + 矩阵】
- 第十一周OJ(2)判断三角形
- 第十一周 oj平台 项目一求最大公约数
- 牛顿迭代
- OJ---数组计算公式java
- 一张表总结机器学习/深度学习常用权重学习优化算法的迭代公式
- 牛顿迭代例子Newton-Raphson Method
- 【XSY2680】玩具谜题 FFT什么的 牛顿迭代
- 第十一周OJ-Q50解题方法
- c语言:用迭代法求x=a^0.5,迭代公式为x1 = (x0 + a / x0) / 2;前后两次求出的x的差的绝对值小于10^-5
- 第十一周OJ项目D测星座
- 10个重要的算法C语言实现源代码:拉格朗日,牛顿插值,高斯,龙贝格,牛顿迭代,牛顿-科特斯,雅克比,秦九昭,幂法,高斯塞德尔
- 逻辑回归迭代公式推导