牛顿迭代法

作业已超过截止时间,您无法递交本题目。

一、题目描述

1.牛顿法背景知识

非线性方程求解问题可以描述为:求使得非线性方程f(x)=0f(x)=0xx。牛顿迭代法是求解非线性方程的最后一种重要方法。牛顿迭代法是一种在实数域和复数域上通过迭代计算求出非线性方程的数值解的方法。牛顿迭代法本质是用非线性函数f(x)f(x)的泰勒级数展开式的前几项作为它的线性近似表达式,将非线性函数线性化,求一个线性函数的近似解。下面讨论的f(x)f(x)即为需求解的线性函数。
牛顿迭代法也成为切线法,它的基本思想是:利用一个根的猜测值x0x_0作为初始近似值,过函数f(x)f(x)曲线上的f(x0)f(x_0)点作切线交xx轴于x1x_1,曲线在f(x0)f(x_0)点的斜率为:
f(x0)=f(x0)/(x0x1)f'(x_0)=f(x_0)/(x_0-x_1)
可得:
x1=x0f(x0)/f(x0)x_1=x_0-f(x_0)/f'(x_0)
重复上述过程,可得牛顿迭代公式:
xn+1=xnf(xn)/f(xn)x_{n+1}=x_n-f(x_n)/f'(x_n)
得到的x(n+1)x_(n+1)一次比一次更接近方程的根xx^*。当两次求得的根满足精度ηη要求时,即
xn+1xn<η|x_{n+1}-x_n|<η
认为xn+1x_{n+1}时方程f(x)f(x)的近似解。

具体做法请参考《程序设计基础》P27的“牛顿迭代法”。

注意,根据vijos中的方程来做题!(不用书上的方程)

2.程序题目

使用牛顿法求方程:

x320x220x+a=0x^3-20x^2-20x+a=0

x1=5,x2=5,x3=20x_1=-5,x_2=5,x_3=20附近的根,要求的精度为10610^{-6}

二、输入格式

输入为方程中常数: a (要求300<=a<=600)

(限制a的范围是为了保证方程有三个根)

三、输出格式

输出三个数:从小到大依次输出方程的三个根

样例

输入

400

输出

-4.47214
4.47214
20

注意!输出时无需设定数据精确度,直接使用cout即可,否则可能无法正确判分。

四、提示

本题中对 精确度的判断 可能需要用到绝对值

绝对值的实现方法一

使用冒号表达式:

(x1 - x0) > 0 ? (x1 - x0) : -(x1 - x0) < eps

绝对值的实现方法二

使用头文件:

#include<cmath>

然后使用fabs()函数:

fabs(x1 - x0) < eps

第四次作业

未认领
状态
已结束
题目
2
开始时间
2023-10-31 20:30
截止时间
2023-11-07 23:59
可延期
0.0 小时