牛顿迭代法、双点割线法及改进的双点割线法的比较

本文对比了牛顿迭代法、双点割线法及其改进版在求解方程f(x)=0时的计算结果与分析。尽管牛顿迭代法在初始值不满足特定条件时仍能收敛,但改进的双点割线法并未显著提高收敛速度。
摘要由CSDN通过智能技术生成

牛顿迭代法、双点割线法及改进的双点割线法的比较

1 题目:

wps_clip_image-71=0的根。

2 算法组织:
2.1 牛顿迭代法

算法原理见《计算方法教程(第2版)》,凌永祥、陈明奎编著,西安交通大学出版社,2005年4月第2版,第194至第195页。

代码:(C代码,运行环境为VC++6.0)

//牛顿迭代法解非线性方程

//---------------------Include Files-------------

#include

#include

//-----------------end Include Files-------------

#define M 10//迭代次数

double f(double x);//f(x)函数

double df(double x);//f(x)的导数

int main()

{

double x[100];

int i = 1;

x[0] = 1;

for(; i < M; i++)

{

x[i] = x[i-1] - f(x[i-1]) / df(x[i-1]);

printf("x[%d] = %.7lf/n", i, x[i]);

}

return(0);

}

double f(double x)

{

return  (pow(x,3)-4);

}

double df(double x)

{

return (3*pow(x,2));

}

2.2 双点割线法

算法原理见《计算方法教程(第2版)》,凌永祥、陈明奎编著,西安交通大学出版社,2005年4月第2版,第197至第199页。

代码:(C代码,运行环境为VC++6.0)

//双点割线法

//---------------------Include Files-------------

#include

#include

//-----------------end Include Files-------------

#define M 10//迭代次数

double f(double x);//f(x)函数

int main()

{

double x[100

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实验目的: 通过在MATLAB中实现牛顿迭代法割线法解非线性方程,比较两种方的精度和收敛速度。 实验原理: 牛顿迭代法割线法都是解方程的迭代方牛顿迭代法是利用函数的导数信息,通过不断线性化函数来逼近方程的根,得一个更好的近似值。具体步骤如下: 设f(x) = 0,选定一个初始值x0; 出函数f(x)在x0处的导数f`(x0); 利用切线公式出下一个近似值x1,即x1 = x0 – f(x0) / f`(x0); 重复以上步骤,直到精度满足要割线法是在牛顿迭代法的基础上,利用两个不同的点来线性化函数,从而更好地逼近方程的根。具体步骤如下: 设f(x) = 0,选定初始值x0和x1; 利用两点式出直线L,即L:y = f(x0) + [f(x1) – f(x0)] / (x1 – x0) * (x – x0); 计算直线L与x轴的交点x2,即x2 = x1 – f(x1) * (x1 – x0) / (f(x1) – f(x0)); 将x1设置为x0,将x2设置为x1,重复以上步骤,直到精度满足要。 实验步骤: 1. 在MATLAB中定义需要解的非线性方程f(x) = x^3 – 2x – 5,以及其导函数。 2. 编写牛顿迭代法的MATLAB代码。 3. 在牛顿迭代法中设置初始值x0 = 2,精度tol = 1e-6。 4. 运行牛顿迭代法,输出每次迭代的结果,并记录总迭代次数和误差。 5. 编写割线法的MATLAB代码。 6. 在割线法中设置初始值x0 = 2,x1 = 3,精度tol = 1e-6。 7. 运行割线法,输出每次迭代的结果,并记录总迭代次数和误差。 8. 比较两种方的精度和收敛速度。 实验结果: 牛顿迭代法: 初值x0 = 2,精度tol = 1e-6 迭代次数:8 最终解x = 2.094551481542327 误差:4.193

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值