MATLAB弦截法求解非线性方程

用Newton法解非线性方程时,当f比较复杂时就比较难以实现了,弦解法的好处可以用f(x)在两点上的值构造一次插值函数来回避微商的计算。其迭代格式:

1.弦截法的MATLAB实现

按照弦截法的原理进行程序的编写:

!!!!!!!!!!对于小白,千万别直接复制后放在matlab中运行,应该新建一个脚本,文件名建议为secant.m。

function [pl,err,k,y]=secant(f,p0,p1,delta,max1)
%f是给定的非线性函数
%p0,p1为初始值(可以理解为选取的x(k),x(k-1)两点)
%delta为给定误差界限
%max1为迭代的误差上限
%p1为所求的方程的近似解(这里是function中的pl)
%err为p1-p0的绝对值
%k为所需需要的迭代次数
%y=f(pl)
k=0,p0,p1,feval('f',p0),feval('f',p1)
for k=1:max1p2=p1-feval('f',p1)*(p1-p0)/(feval('f',p1)-feval('f',p0));err=abs(p2-p1);p0=p1;p1=p2;p1,err,k,y=feval('f',p1);if (err<delta)|(y==0),break,end
end

2.例题示例:

解线性方程组0.019x^3-0.036x^2-1.973=0

首先用一个名为f.m的文件定义函数f(x)=0.019x^3-0.036x^2-1.973

!!!!!!!!!!对于小白,千万别直接复制后放在matlab中运行,应该新建一个脚本,名为f.m

function y=f(x)
y=0.019*x^3-0.036*x^2-0.049*x-1.973

可以将y=后更改为自己的求解函数

接下来开始求解函数

在MATLAB命令窗口输入,前面两部分是脚本里面,此时脚本完成后关闭,在命令窗口!命令窗口!

开始运行并显示输出结果:

结果表明经过5次迭代得到了满足精度要求的近似解x=5.6295,且f(x)=-3.2285e-3

3.错误解决

我遇到的是问题是:

3.1方法1

确保脚本文件在工作目录:我的存放在此处

3.2方法2

确保函数名与脚本名一致:

假如不一致的情况,错误示例:

正确应该将文件名改为secant.m

3.3方法3

先运行一下脚本secant.m

如何在命令窗口再输入secant('f',5.2,5.21,10^(-6),11)

不足之处还望各位及时指正!!!!!!!!

MATLAB弦截法求解非线性方程相关推荐

  1. 用弦截法求解方程的根

    /* 用弦截法求解方程的根 算法思想 三元方程的函数增减单调特性 定义X1,X2两个坐标 使得F(X1) 与F(X2) 的值相反 这样X1,X2之间必有一跟 由下面的弦截法公式求焦点坐标 当F(X)与 ...

  2. 弦截法c语言程序,用弦截法求解一元三次方程的根(利用c语言实现)

    用弦截法求解一元三次方程的根(利用c语言实现)0 特别v2013.09.24浏览296次分享举报 #include #include float f(x) { float a,b,c,d; float ...

  3. 单点、双点弦截法求解方程根

    弦截法: (a) 用牛顿法解方程f(x)=0,虽然在单根附近具有较快的收敛速度,但它有个明显的缺点,就是需要计算导数f'(x),当f(x)比较复杂时,计算f'(x)可能有困难. (b)弦截法和牛顿迭代 ...

  4. 【数值分析】弦截法求解-Python实现

    本篇为数值分析课程代码实现-两点弦截法的实现 仅供参考 配置环境 Python3.6 matplotlib numpy # -*- coding: utf-8 -*- ""&quo ...

  5. 数值计算大作业:非线性方程求根(二分法、牛顿法、弦截法在Matlab实现)

    作为研究生的入门课,数值计算的大作业算是所有研究生开学的重要编程作业. 我把二分法.牛顿法.弦截法求解非线性方程求根的数值计算作业在MATLAB中编程实现.具体的程序详细标注后放在文章附录了,算法数学 ...

  6. 非线性方程求解——单点弦截法

    单点弦截法是双电弦截法的特殊情况,迭代的情况可能在有根区间的两个端点之间变换.如果迭代的结果始终在一侧的端点,这个端点会收敛于精确根,而有根区间另一个端点固定不变,那么双点弦截法变为单点弦截法. 单点 ...

  7. matlab二分法,单点弦截法,牛顿切线迭代法

    二分法 %p222task2_3 %二分法求f=@(x)1-x-sin(x)零点 clc,clear; f=@(x)1-x-sin(x) b=1;a=0; f(0) f(1) ezplot(f,[0, ...

  8. 用弦截法求方程的根matlab,matlab 语言 用弦截法任意实数方程求实根

    满意答案 dwgg2n0das8 2013.04.26 采纳率:45%    等级:12 已帮助:8202人 弦截法这个方法一般用作学习,实际用的很少.这里我提供一个较完整的弦截法求根的函数.func ...

  9. 牛顿迭代法是一种速度很快的迭代方法,但是它需要预先求得导函数。若用差商代替导数,可得下列弦截法

    牛顿迭代法是一种速度很快的迭代方法,但是它需要预先求得导函数.若用差商代替导数,可得下列弦截法 这一迭代法需要两个初值,迭代过程和牛顿法类似,当时停止迭代.编写程序实现弦截法,要求输出方程的根.函数在 ...

最新文章

  1. 突然发现我还有博客园的博客呢哈哈哈哈
  2. 用GDB调试程序(四)
  3. eclipse项目迁移到Android Studio
  4. 去除dataframe中的空行_Python数据分析中的处理与数值加速技巧简介
  5. linux 查看usb端口_linux开发:Linux下查看端口占用
  6. python装饰器详解-Python装饰器基础详解
  7. SAP NetWeaver Portal 内容导出出错处理
  8. 二、套接字类型与协议设置
  9. 【图像融合】基于matlab高斯金字塔+拉普拉斯金字塔彩色水下图像融合【含Matlab源码 1629期】
  10. java JsonNode 遍历方式
  11. power-law 之Zipf
  12. RCC_APB2Periph_ALL 哪儿里去了?
  13. Android之不须要自己定义View(ViewfindView.java)最简单的二维码扫描
  14. 【论文合集】2022年10月医学影像期刊论文合集
  15. LeetCode 13 罗马符号转化为数字(难度: Easy)
  16. 【算法设计与分析】将数字分解为n个数字之和
  17. [Halcon] WriteImage保存图像崩溃问题
  18. SWUST OJ 574: Renting Boats
  19. MySQL远程连接提示Accesss denied for user 'root'@'此处为你自己的ip'(using password:YES)
  20. Linux 挂载2TB以上硬盘

热门文章

  1. 人工智能在采购中的应用有哪些?
  2. 2022-5-16作业
  3. 最新实用的网页加密源码+附四套模板
  4. 基于JAVA阅读与存储图书网站设计与实现计算机毕业设计源码+数据库+lw文档+系统+部署
  5. https tk6 us
  6. mysql 自动备份发送_MySQL自动备份数据并通过邮箱发送
  7. 将一个只含有大小写字母的字符串大写变成小写,小写变成大写后输出。
  8. 运行项目提示Compilation of JSP File '/xx/xx/xxx.jsp' failed解决办法
  9. 西门子200指针求平均值,最大值,最小值,适用于多种程序要求,注释全面
  10. 奈何本人没文化,一句卧槽行天下