一、实验目的
1、掌握非线性方程的各种解法,包括二分法、牛顿迭代法、弦截法等,并通过编程练习与上机运算,体会牛顿迭代法、弦截法的不同特点;
2、掌握解非线性方程的弦截法,并与牛顿迭代法作比较;
3、了解各种方法的收敛速度。
二、实验题目(共100分)
已知有一个粮仓,其顶部是半球形,下半部分是高为10米的圆柱形,粮仓的容积是400立方米。
- 用牛顿法求粮仓的底半径,精确到4位有效小数。(30分)
- 迭代收敛的快慢与初值的选取是否有关,通过数值试验来回答这个问题。(20分)
- 用弦截法求粮仓的底半径,精确到4位有效小数。(30分)
- 比较牛顿法与弦截法的优缺点。(20分)
三、实验原理
1、牛顿法
四、实验内容与结果
- 用牛顿法求粮仓的底半径,精确到4位有效小数。(30分)
/**
* @program: shiyan1
* @Package: PACKAGE_NAME
* @Description: TODO
* @author: Mr.John
* @date: 2020/3/19 18:54
*/
public class Newton {
public static void main(String[] args) {
double PI = 3.1416; //圆周率
double R = 4.0; //初始化半径
double R_new; //迭代后的半径
double f_R; //仓库体积计算函数
double f_R_D1; //一阶导数
double f_R_D2 = (double)4*PI*R+(double)20*PI; //二阶导数
double[] range = {
1,4}; //定义自变量区间
double error; //误差
double precision = 0.5*Math.pow(10,-4); //精度
int i=0;
// 进行Newton迭代
do {
i++