一、实验目的

1. 了解一般非线性方程的求根是比较复杂的事情:要讨论(或知道)它有无实根,有多少实根;知道求近似根常用的几种方法,每种方法的特点是什么。

2. 用通过二分法(区间半分法)、不动点(也Picard)迭代法及Newton迭代(切线)法求其它非线性方程的根,并尽可能估计误差。

二、实验原理

三、实验程序

四、实验内容

1. 用二分法求方程x3-3x-1=0在的所有根.要求每个根的误差小于0.001.

提示与要求: (1) 利用精度找到迭代次数;

(2) 由f(x)=3(x2-1)可取隔根区间[-2,-1].[-1,1].[1,2]);

(3) 用程序求各隔根区间内的根.

2. 用不动点迭代求: (1)x3+2x2+10x-20=0的所有根.

或: (2)9x2-sinx-1=0在[0,1]上的一个根.

3. 用Newton迭代法求解下列之一,准确到10-5:

(1) x3-x-1=0的所有根;

(2) ex+2-x+2cosx-6=0位于[0,2]上的根.

五、实验程序

• 二分法:

文件代码:

function y = f(x)

y=x^3-3*x-1;

end

程序代码:

function Bipart(a0,b0,tol)

%a0为左区间,b0为右区间,tol为区间误差限

a=a0;b=b0;

m=ceil(log((b-a)/tol)/log(2));

for k=1:m

p=(a+b)/2;

if f(p)*f(b)<0

a=p;

else

b=p;

end

end

disp(['经过二分法求得的跟为:x=',num2str((a+b)/2,'%.6f')])

disp(['共经过',num2str(k),'次计算'])

命令窗口:

Bipart(-2,-1, 0.001)

Bipart(-1, 1, 0.001)

Bipart (1,2, 0.001)

运行结果:

• 不动点法:

文件代为:

function y = f(x)

y=9*x^2-sin(x)-1;

end

程序代码:

function Budongdian(x0,tol,m)

%x0为初始值,tol为误差容限,m为最大迭代次数

syms x

F(x)=sqrt(sin(x)+1)/3;

m=m;

text='';

x=[];

x(1)=x0;

for k=1:m

x(k+1)=F(x(k));

if (abs(x(k+1)-x(k))<=tol)==1

text='迭代成功';

disp(text);

disp(['经过不动点迭代法求得的跟为:x=',num2str(x(k+1),'%.7f')]);

disp(['共经过',num2str(k),'次计算'])

break

end

end

if isempty(text)==1

disp('Method failed')

end

命令窗口:

Budongdian(1, 0.00001, 100)

运行结果:

• 牛顿迭代法:

文件代码:

function y = f(x)

y=exp(x)+2^(-x)+2*cos(x)-6;

end

程序代码:

function Newton_gen(x0,tol,m)

%x0为初始值,tol为误差容限,m为最大迭代次数

syms x

F(x)=x-f(x)/diff(f(x));

m=m;

text='';

x=[];

x(1)=x0;

for k=1:m

x(k+1)=F(x(k));

if (abs(x(k+1)-x(k))<=tol)==1

text='迭代成功';

disp(text);

disp(['经过Newton迭代法求得的跟为:x=',num2str(x(k+1),'%.7f')]);

disp(['共经过',num2str(k),'次计算'])

break

end

end

if isempty(text)==1

disp('Method failed')

end

命令窗口:

Newton_ .gen(2, 0.00001, 100)

运行结果:

另解:

• 二分法:

定义函数:

function Bipart_2(a0,b0,tol,Tol)

%a0为左区间,b0为右区间,tol为区间误差限,Tol为f误差限

a=a0;b=b0;

m=ceil(log((b-a)/tol)/log(2));

for k=1:m

p=(a+b)/2;

if f(p)*f(b)<0

a=p;

else

b=p;

end

if abs(f((a+b)/2))

break;

end

end

disp(['经过二分法求得的跟为:x=',num2str((a+b)/2,'%.6f')])

disp(['共经过',num2str(k),'次计算'])

命令窗口:

Bipart. .2(-1, 1,0.001,0.1)

Bipart_ .2(-1, 1, 0.001, 0.000001)

运行结果:

• 不动点法:

定义函数:

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);

function t=fun(x1)

syms x;

f=9*x.*x-sin(x)-1;

s=subs(diff(f,x),x,x1);

x=x1;

f=9*x.*x-sin(x)-1;

t=x-f/s;

命令行窗口输入:

[x,k]=budong(@fun,0.5,1e-5,100)

运行结果:

数值分析方程求根实验matlab,数值分析实验之非线性方程求根(MATLAB实现)相关推荐

  1. 数值分析方程求根实验matlab,基于matlab的数值分析( 非线性方程求根)上机实验报告1...

    数值分析试验报告 非线性方程求根 二分法解方程 1. 题目:用二分法求方程0133 =--x x 的所有根 2. 方法:二分法 3. 程序 function x=erfenfa(a,b) if (a* ...

  2. 计算物理学(数值分析)上机实验答案6、非线性方程求根

    实验六.非线性方程求根 ​ 在科学研究与工程技术中常会遇到求解非线性方程的问题.二分法简单易行, 但收敛较慢,仅有线性收敛速度.而且该方法不能用于求偶数重根或复根,但可 以用来确定迭代法的初始值.牛顿 ...

  3. 阿当姆斯校正程序代码MATLAB,数值分析实验教程.doc

    数值分析实验教程.doc 第二篇数值分析3第1章绪论4112的平方根计算412计算效率探讨5实验题7第2章插值法821拉格朗日插值多项式的存在性822利用拉格朗日插值多项式计算函数值823差商表构造1 ...

  4. 数值分析sor精确值matlab,数值分析实验报告Sor法分析.doc

    数值分析实验报告Sor法分析 数值分析实验报告 实验目的 会使用Sor法求解一个线性方程组 熟悉matlab语言并结合原理编程求方程组 改变的值观察实验结果 会分析实验结果 二.实验题目 编制Sor迭 ...

  5. 数值分析复化求积matlab,MATLAB数值分析实验二(复合梯形、辛普森和龙贝格求积,以及二重积分计算等)...

    1.理解如何在计算机上使用数值方法计算定积近似值; 2.学会复合梯形.复合Simpson和龙贝格求积分公式的编程与应用. 3.探索二重积分在矩形区域的数值积分方法. 佛山科学技术学院 实 验 报 告 ...

  6. 2021-01-07 matlab数值分析 非线性方程求根 牛顿法

    matlab数值分析 非线性方程求根 牛顿法 %牛顿法求非线性方程的根: % 输入:fun--非线性函数:dfun--非线性函数导数:x0--初始值:tol--精度: % 输出:x--非线性方程数值根 ...

  7. matlab武汉理工大学数值分析线性函数拟合实验_10数值分析第七章数值微积分大学数学云课堂...

    相关内容 1第二章数值分析的基本概念之有效数字与秦九韶算法 1数值分析第二章基本概念作业答疑大学数学云课堂 2数值分析第三章线性代数方程组的直接法大学数学云课堂 2数值分析第三章线性方程组直接法解题注 ...

  8. matlab武汉理工大学数值分析线性函数拟合实验_11数值分析第七章数值微积分龙贝格积分大学数学云课堂...

    数值分析基础入门所有知识点相关内容,请按照前面数字依次学习 1第二章数值分析的基本概念之有效数字与秦九韶算法 1数值分析第二章基本概念作业答疑大学数学云课堂 2数值分析第三章线性代数方程组的直接法大学 ...

  9. 数值分析复化求积matlab,数值分析实验指导-7积分

    内江师范学院 数 值 分 析 实 验 报 告 册 编制 张莉 审定 牟廉明 专业: 班级:级 学号: 姓名: 数学与信息科学学院 2013年9月 说 明 一.学生在做实验之前必须要准备实验,主要包括预 ...

最新文章

  1. 几行代码搞定ML模型,低代码机器学习Python库正式开源
  2. 查看mysql的启动日志目录下_mysql诊断启动问题、查看日志文件详解
  3. How change in Console is rendered back into UI
  4. CAP带你轻松玩转ASP.NETCore消息队列
  5. leetcode 1482. 制作 m 束花所需的最少天数(二分查找)
  6. (一)卷积网络之基础要点
  7. Java技术依然备受追捧,主要学习内容有哪些?
  8. OJ1075: 聚餐人数统计(C语言)
  9. 不聊webpack配置,来说说它的原理
  10. (Leetcode)买股票的最佳时机
  11. silverlight计时器
  12. dubbo-monitor-simple-2.5.3-assembly 简易监控中心安装
  13. 税友软件公司java面试_税友集团java面试题
  14. Angular使用echarts
  15. oracle标准成本的维护,Oracle标准成本计算和平均成本计算比较
  16. layer进度条ajax,layui动态进度条详细。
  17. 如何将微商相册上的所有图片和小视频快速下载和保存
  18. 病案归档管理系统_ER图_功能图_数据字典_数据库脚本
  19. ddos攻击怎么防?防御ddos的几种方法
  20. RFID固定资产管理系统更好更快捷的掌握资产情况 资产盘查好帮手

热门文章

  1. arp 华为 查看 路由器_华为路由器运行状态查看-路由器
  2. 设计java application程序_下面哪些步骤是Java Application程序的建立及运行的步骤( )...
  3. java对mysql读写权限设置_Java学习笔记——MySQL开放3306接口与设置用户权限
  4. C语言 const 和 define 区别 - C语言零基础入门教程
  5. C语言 数组长度计算 - C语言零基础入门教程
  6. matlab 打开软件报错,matlab程序错误,提示如下【弄了半夜还是不行】 - 数学 - 小木虫 - 学术 科研 互动社区...
  7. centos7 oracle_Centos7主机名变成bogon的原因及解决方法
  8. python求图形面积_求高效的,计算两多边形重叠面积的算法,python实现
  9. 的表格点击全选_“逼死”强迫症的杂乱表格,原来3秒就能整理好!(必学)...
  10. php io流 读取wav,记php中的io流---帮助理解