matlab牛顿法求区间根程序,MATLAB用二分法、不动点迭代法及Newton迭代(切线)法求非线性方程的根...
一、实验原理
二、实验步骤
三、实验过程
1.(程序)
(1)二分法:求
在区间(1,2)之间的根,取
(a)bipart.m:
function [x,m]=bipart(fun,a0,b0,tol)
a=a0;b=b0;
m=1+round(round(log((b-a)/tol))/log(2));
for k=1:m
p=(a+b)/2;
if fun(p)*fun(b)<0
a=p;
else
b=p;
end
x=p;
end
end
(b)fun1.m:
function f=fun1(x)
f=x^3+10*x-20;
(2)不动点迭代法:求方程
在
附近的根,取
(a)budong.m:
function [x,k]=budong(fun,x0,tol,m)
for k=1:m
x=fun(x0);
if abs(x-x0)
break;
end
x0=x;
end
x=vpa(x,8);
(b)fun.m
function t=fun(x1)
syms x;
f=x^3-2*x-5;
s=subs(diff(f,x),x,x1);
x=x1;
f=x^3-2*x-5;
t=x-f/s;
(3)牛顿迭代法:求方程
在
附近的根,取
newton.m:
function x1=newton(t1,esp,m)
syms x;
fun=x^3+2*x-5;
for k=1:m
if abs(subs(diff(fun,‘x‘),x,t1))
x1=t1;
break;
else
if subs(diff(fun,‘x‘,2),x,t1)==0
break;
disp(‘解题失败!‘)
else
t0=t1;
t1=t0-subs(fun,x,t0)/subs(diff(fun,‘x‘),x,t0);
if abs(t1-t0)
x1=t1;
break;
end
end
end
end
x1=vpa(x1,8);
2.(运算结果)
(1)二分法:
>> [x,m]=bipart(@fun1,1,2,0.0001)
x =
1.5945
m =
14
(2)不动点迭代法:
>> [x,k]=budong(@fun,2,1e-5,100)
x =
2.0945515
k =
4
(3)牛顿迭代法:
>> x1=newton(2,1e-4,20)
x1 =
1.3282689
3.(拓展(方法改进、体会等))
对于方程的根为重根的情形,newton法求重根只是线性收敛,迭代缓慢,如果对于求重根的情形,对newton法进行改进,取
,
则
。用迭代法
求m重根,则具有二阶收敛性,但要知道的重数m。
计算方程
的根
是二重根,用newton法与改进方法求根。
源程序:
newton_biroot.m:
function t=newton_biroot(x1)
syms x;
f=x^4-4*(x^2)+4;
s=subs(diff(f,x),x,x1);
x=x1;
f=x^4-4*(x^2)+4;
t=x-f/s;
biroot1.m:
function t=biroot1(x1)
syms x;
f=x^4-4*(x^2)+4;
s=subs(diff(f,x),x,x1);
x=x1;
f=x^4-4*(x^2)+4;
t=x-2*f/s;
budong.m:
function [x,k]=budong(fun,x0,tol,m)
for k=1:m
x=fun(x0);
if abs(x-x0)
break;
end
x0=x;
x=vpa(x,8)
end
x=vpa(x,8);
运行结果:取初值为2
k
xk
newton法
改进方法
1
x1
1.75
1.5
2
x2
1.5982143
1.4166667
3
x3
1.5115099
1.4142157
4
x4
1.4644275
1.4142157
计算4步,改进方法就已经收敛,而newton法只是线性收敛,要达到同样精度需迭代17次。
附结果:
>> [x,k]=budong(@biroot1,2,1e-5,3)
x =
1.5
x =
1.4166667
x =
1.4142157
x =
1.4142157
k =
3
>> [x,k]=budong(@biroot1,2,1e-5,10)
x =
1.5
x =
1.4166667
x =
1.4142157
x =
1.4142136
k =
4
>> [x,k]=budong(@newton_biroot,2,1e-5,50)
x =
1.75
x =
1.5982143
x =
1.5115099
x =
1.4644275
x =
1.439751
x =
1.4270955
x =
1.4206836
x =
1.4174559
x =
1.4158366
x =
1.4150256
x =
1.4146197
x =
1.4144166
x =
1.4143151
x =
1.4142643
x =
1.414239
x =
1.4142263
x =
1.4142199
k =
17
原文:http://www.cnblogs.com/kailugaji/p/6920975.html
matlab牛顿法求区间根程序,MATLAB用二分法、不动点迭代法及Newton迭代(切线)法求非线性方程的根...相关推荐
- 重根的二阶迭代法matlab,MATLAB用二分法、不动点迭代法及Newton迭代(切线)法求非线性方程的根...
作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 一.实验原理 二.实验步骤 三.实验过程 1.(程序) (1)二分法:求 在区间(1,2)之间的根,取 ...
- matlab求曲线极值程序,matlab函数求极值matlab函数求极值.ppt
matlab函数求极值matlab函数求极值 * * 函数的极值 1.一元函数的极值 函数命令:fminbnd 调用格式:[x,feval,exitflag,output]=fminbnd(fun,x ...
- matlab用while循环编写程序,MATLAB程序设计
MATLAB 程序设计 1. 编写M 主程序文件,分别使用for 和while 循环语句计算sum=∑=101i i i 的程序. 方法一: sum=0; i=1; while i<11 sum ...
- matlab中运用demod解调程序,matlab调制解调源码有代码解释原理分析
解调程序\am\am模拟信号调制解调\am.m .............\..\..................\am_demod.m .............\..\............ ...
- matlab 累积和,区间累积求和 – MATLAB
diff和cumum的一种方法 – %// Setup few arrays: cx = cumsum(x) %// Continuous Cumsumed version reset_mask = ...
- 数值分析方程求根实验matlab,数值分析实验之非线性方程求根(MATLAB实现)
一.实验目的 1. 了解一般非线性方程的求根是比较复杂的事情:要讨论(或知道)它有无实根,有多少实根:知道求近似根常用的几种方法,每种方法的特点是什么. 2. 用通过二分法(区间半分法).不动点(也P ...
- matlab 计算变异系数,变异系数法求权重matlab代码
<变异系数法求权重matlab代码>由会员分享,可在线阅读,更多相关<变异系数法求权重matlab代码(1页珍藏版)>请在读根文库上搜索. 1.变异系数 法求权重 matlab ...
- matlab画气温和地表温度关系图,matlab三维温度分布图
传热学MATLAB温度分布大作业完整版_物理_自然科学_专业资料.东南大学能源与环境学院课程作业报告作业名称:传热学大作业--利用 matlab 程序解决热传导问题院系:能源...... #MATLA ...
- 【牛顿迭代逼近】求根号2的快速方法
如果要求根号2,比较快的方法有:1)二分法:2)牛顿迭代逼近法 二分法不多说了,很简单.下面介绍牛顿迭代逼近法. 原理:X(n+1) = ( X(n) + P/X(n) ) / 2 (P为待 ...
最新文章
- python爬虫科研数据提取_python爬虫数据提取四之pyquery
- 任务记录:OEA 框架中的多类型树控件
- android 应用模式之mvp
- 项目合作需求、数据集合作需求
- 通力法评 | 简评中国证监会关于MOM产品的征求意见稿
- 机械设计(机电)_简要问答_复习笔记
- WPS或Excel将姓名变为拼音
- Java 读取Word中的脚注、尾注
- 彩球滑梯java_玩过这些手机游戏的人都老了 那些曾经风靡一时的手机游戏大盘点(二)...
- 微信实现qq群的qq小冰功能
- 【备品备件】入库流程--采购入库--0180363009
- 第七十七篇:车辆安全-车载软件C++语言开发指南(AUTOSAR C++)
- android图片异步加载图片,Android 异步加载图片分析总结
- Android EditText密码显示隐藏和全部属性的介绍
- 计算机网络-谢希仁-第7版 第6章 应用层
- 离线安装vs2019
- 滴答清单支持订阅哪些日历?
- 编译原理(十八)——运行时存储空间管理
- Java的多态到底是什么意思?-sunziren
- 加速度传感器安装注意事项
热门文章
- vue中activated和deactivated是什么
- java开发自我介绍范文(合集)
- 一台服务器控制上百个抖音账号,怎么批量管理上百个抖音,抖音mcn一键高效运营软件...
- js快速获取当前链接和域名
- 对JRTPLIB的学习
- Oracle 数据压缩(Compression) 技术 说明
- FFmpeg av_frame_free崩溃可能原因
- 双机(51单片机)串行通信最基本的方法
- Bootstarp:网站导航栏的编写设计
- ORACLE修改processes和sessions参数