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

一、实验目的

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

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

二、实验原理

20200520001736813ppf94pp2qjl94c8_5.png

三、实验程序

20200520001736813ppf94pp2qjl94c8_4.png

四、实验内容

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)

运行结果:

20200520001736813ppf94pp2qjl94c8_6.png

• 不动点法:

文件代为:

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)

运行结果:

20200520001736813ppf94pp2qjl94c8_0.png

• 牛顿迭代法:

文件代码:

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)

运行结果:

20200520001736813ppf94pp2qjl94c8_1.png

另解:

• 二分法:

定义函数:

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)

运行结果:

20200520001736813ppf94pp2qjl94c8_3.png

• 不动点法:

定义函数:

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)

运行结果:

20200520001736813ppf94pp2qjl94c8_2.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/534815.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python多线程输出_萌新python多线程

刚开始学习多线程的时候闹了个笑话在使用python线程打印东西的时候发现自己定的的线程数据没有打印,找半天都没有找到问题,也没好意思问,自己憋了半天才发现问题!代码如下:import threadingdef SayHi():print(say hi !)def SeyHello():print(say hello !)print(start)threading…

php5.6扩展编写,php 5.6版本中编写一个PHP扩展的简单示例

php 5.6版本中编写一个PHP扩展的简单示例这篇文章主要介绍了php 5.6版本中编写一个PHP扩展的简单示例,本文给出扩展实现代码、编译方法、配置方法和使用例子等内容,需要的朋友可以参考下有时候在php本身没有满足需求的api时候&#xff0c;需要自己写相应的扩展&#xff0c;扩展…

iis php 数据库乱码,如何解决php插入数据乱码问题

php插入数据乱码的解决办法&#xff1a;首先要设置数据表的字符集为utf8&#xff1b;然后修改字符集格式&#xff1b;接着建立字符集为utf-8的数据库&#xff1b;最后通过php mysql语句插入数据即可。mysql数据库乱码问题解决办法我们在使用数据库(mysql)的时候最怕的就是数据库…

python 文档字符串_新款Python文档字符串生成器来了

又一款懒人神器问世了&#xff1a;Visual Studio Code的扩展&#xff0c;基于CodeBERT的Python文档字符串生成器。看来现在&#xff0c;这群偷「懒」的程序员们连文档字符串都不想自己写了。基于CodeBERT的生成器跟正常的DocStrings用法一样&#xff0c;你只需要输入三引号「“…

php 栈实现历史记录后退,栈:如何实现浏览器的前进和后退功能

受限制的线性表先进后出实现一个栈数组实现叫顺序栈public class ArrayStack {private String[] items;//存储数据的数组private int count;//栈中的元素private int n;//栈的大小public ArrayStack(int n){this.items new String[n];this.n n;this.count 0;}//入栈操作publ…

vc 通过句柄修改窗口大小_VC应用(1)通过VC修改销售订单行项目的字段

VC是SAP中非常重要的功能&#xff0c;过去多年来&#xff0c;我参与了不少使用VC的项目&#xff0c;我将通过多篇文章介绍VC的一些应用&#xff0c;本文介绍通过VC修改销售订单行项目的字段01 概览在销售订单创建时&#xff0c;对于可配置物料来说&#xff0c;不同的配置可能会…

mysql增加实例,MySQL的简单使用笔记:增加实例以及启动

增加实例增加实例这里指的的在源码编译安装完MySQL之后建立一个初始的数据库实例&#xff0c;占用某一端口&#xff0c;或者是使用新端口启动新的mysqld进程。MySQL需要一些基础的数据库以及表来完成基本的设定&#xff0c;比如控制连接的mysql.user表&#xff1a;123456789101…

springboot starter工作原理_98,谈谈SpringBoot的工作原理

对技术的探索&#xff0c;一切源于好奇心&#xff0c;保持好奇心&#xff0c;才能让人更年轻。至今&#xff0c;我们已经有了很多创建SpringBoot项目的经验&#xff0c;比如我们要创建一个支持web开发的项目&#xff0c;我们只需要引入web-starter模块即可。那么&#xff0c;Sp…

精英主义 遗传算法 matlab,遗传算法优化 - osc_lfs4vsih的个人空间 - OSCHINA - 中文开源技术交流社区...

1.遗传算法简介遗传算法是一种基于自然选择和群体遗传机理的搜索算法,它模拟了自然选择和自然遗传过程中的繁殖、杂交和突变现象.再利用遗传算法求解问题时,问题的每一个可能解都被编码成一个“染色体”,即个体,若干个个体构成了群体(所有可能解).在遗传算法开始时,总是随机的产…

python 类静态属性_如何从Python中的类中引用静态属性?

您面临的问题是因为您不了解类声明的作用域是如何工作的。类声明在其自己的作用域内执行。执行完成后&#xff0c;将创建一个新的类对象&#xff0c;并将获得的范围作为其__dict__附加到该类。在注意&#xff1a;类范围是从方法范围内搜索的而不是&#xff01;这意味着当在方法…

php后台管理员登录密码错误,如果后台管理员的密码错误,我该怎么办,还有两种找回密码的方法...

Dedecms是中国著名的网站管理核心. 由于编织梦想简单易用&#xff0c;因此可以进行二次开发&#xff0c;并且可以实现各种网站. 在使用dedecms的过程中&#xff0c;如果忘记了梦想管理后台的密码怎么办&#xff1f;神山个人博客分享了两种修改(重置)管理员密码的方法.1. 下载织…

python logging模块 默认_python logging模块

函数式简单配置importlogginglogging.debug(debug message) #计算或者工作的细节logging.info(info message) #记录一些用户的增删改查的操作logging.warning(warning message) #警告操作logging.error(error message) #警告操作logging.critical(critical message) #批判的 直…

mac安装多php环境变量配置,Mac如何安装多个php版本

Mac安装多个php版本的方法&#xff1a;首先打开Mac上的终端工具&#xff0c;并确认安装Homebrew&#xff1b;然后安装【php5.5】及对应扩展&#xff1b;最后执行指令【brew unlink php55】删除brew中php的软链即可。Mac安装多个php版本的方法&#xff1a;1、打开Mac上的终端工具…

phpexcel 获取工作簿名称_工作分享 | Excel快速汇总考勤

点击蓝字关注我们每月月底&#xff0c;各位同事把考勤表报到部门后&#xff0c;检查核对再汇总一份总考勤表上报&#xff0c;传统的复制粘贴总是占用不少时间&#xff0c;还容易出错。为提高工作效率&#xff0c;现利用Excel实现考勤快速汇总。01 统一考勤模板&#xff0c;每个…

php进程通讯方式,PHP进程模型、进程通讯方式、进程线程的区别分别有哪些?

PHP进程模型是一个正在执行的程序&#xff0c;可以分配给处理器并由处理器执行的一个实体&#xff1b;PHP进程通讯方式有管道及有名管道&#xff0c;信号&#xff0c;共享内存等&#xff1b;PHP进程线程的区别有进程是资源的分配和调度的一个独立单元&#xff0c;而线程是CPU调…

iphone怎样关闭副屏_小米新设计专利曝光:“Z”型折叠屏手机

折叠屏手机可以说是最近几年的热门话题&#xff0c;虽然并未大面积普及&#xff0c;但已有多家厂商量产上市了旗下的折叠屏手机。同样作为知名厂商的小米&#xff0c;曾在此前展示过旗下的折叠屏手机视频&#xff0c;但并未真正发布。而近日曝光的一份小米旗下专利设计则表明小…

php socket开发斗地主,基于状态机模型的斗地主游戏(NodeJsSocketIO)

1. 系统结构系统考虑使用Nodejs和SocketIo实现服务器端逻辑&#xff0c;前端使用HTML5。2. 逻辑流程1 . 主要逻辑包括用户进入游戏、等待对家进入游戏、游戏过程、结束统计这4个过程。2 . 游戏过程的逻辑具体如下3 . 服务器-客户端通讯逻辑如下3. 客户端界面设计1 . 登录界面2 …

python几何拼贴画_图形几何图形拼贴画

四边形教学内容:教材第34页?——36页教学目标:1.直观感知四边形,能区分和辨认四边形,知道四边形的特征.进一步认识长方形和正方形,知道它们的角都是直角.2.通过画一画、找一找、拼一拼等活动,培养学生[此文转于斐斐课件园?FFKJ.Net]的观察比较和概括抽象的能力,发展空间想象能…

wgs84转经纬度_wgs84经纬度转为cgcs2000平面坐标

航拍测绘中,pos数据多数是wgs84&#xff0c;而GCP坐标是2000或者80坐标。有如下2情况需要转换坐标&#xff0c;1.不同坐标系刺点时&#xff0c;位置相差较远&#xff0c;影响工作效率。2.该软件不支持wgs84转国家2000&#xff0c;比如photoscan。所以需要把pos数据转为跟像控点…

php system 255,GitHub - dwg255/OA-SYS: OA办公系统开源项目

OA-SYSOA办公系统开源项目这是一套主要用于演示、学习为目的OA办公自动化系统。该系统具备基本的自动化办公功能。在使用前请确保您已阅读本系统协议部分内容。主要功能列表用户和用户组、权限管理个人网盘和分享文件生产计划任务和业绩考评通讯录和内部短消息公告系统个人工作…