MATLAB-非线性方程(组)求解

news2024/11/20 1:54:44

求非线性方程或方程组解的问题也就是求函数零点的问题。对于任意函数,在求解范围内可能有零点,也可能没有;可能只有一个零点,也可能有多个甚至无数个零点。MATLAB没有可以求解所有函数零点的通用命令,下面将分别讨论一元函数和多元函数零点的求解问题。

一元函数的零点

在所有函数中,一元函数是最简单的。在MATLAB中,可以使用fzero 函数来计算一元函数的零点,具体调用方法如下。

x =fzero( fun, x0) %在x0点附近寻找函数fun的零点

x =fzero( fun , x0 , options) %options为使用optimsect 函数设定优化器参数的选项

x =fzero( fun ,[ x0,x1]) %在[ x0,x1]区间寻找函数fun的零点

optimset 函数的具体调用方法如下。

optimset%显示优化器的现有参数名及其参数值

options = optimset( " paraml',value1 ,' param2 ' ,value2,...)%使用参数名和参数值设定优化器的参数

options = optimset( oldopts, ' paraml ' ,value1,...)%在现有优化器oldopts的基础上,使用参数名和参数值变更优化器参数

optimset 函数中可以设置的主要优化器参数见表。

例:计算一元函数fx )= (x^2)*cosx一x+1在[-3,3]区间上的零点。

首先绘制函数的曲线,在命令行窗口中输入如下语句。

>>x=-3:0.1:3;

y =x.*x.*cos( x)-x+1;

plot(x,y,'r ')

xlabel( 'x ');ylabel('fx)');

title( 'The zero of function ')

hold on

h=line([-3,3],[0,0]);

set( h, 'color '.'g')

grid;

图形窗口中的输出结果如图所示。

在求解函数零点之前,先绘制函数的图形,这样在后面的步骤中使用fzero命令时,方便选择初始数值x0。由上图不难看出,曲线在[ -3,3]区间内包含2个零点。

计算函数在某点附近的零点,在命令窗口中输入如下语句。

>>f=@(x)x*x * cos(x)-x+1;

X1 =fzero(f,-2)

X2=fzero(f,1)

命令行窗口中的输出结果如下所示。

X1=

-2.2621

X2=

1.3719

多元函数的零点

非线性方程组的标准形式为F(x)=0,其中x为向量,F(x)为函数向量。在MATLAB中,使用fsolve命令求解多元函数,具体调用方法如下。

X=fsolve( fun,xo) %在向量x附近寻找函数fun的解

X=fsolve( fun,xo , options) %使用options设定优化器参数

例:求解二元方程组的零点。

首先绘制函数的曲线,在命令行窗口中输人如下语句。

>>x=[-5:0.1:5];

y=x;

[X,Y] = meshgrid(x,y);

Z=2*X-Y-exp( -X);

surf(X,Y,Z)

xlabel( 'x ')

ylabel( 'y')

zlabel('z ')

title( 'The figure of the function ')

图形窗口中的输出结果如图所示。

编写对非线性方程组进行函数描述的M文件,输人代码如下。

function F= fsolvefun(x)

F=[2*x(1)-x(2)-exp(-x(1));-x(1)+2*x(2)-exp( -x(2))];

将上述程序代码保存为fsolvefun. m文件。

下面求解二元函数的零点,在命令行窗口中输人如下语句。

>>x0=[-5;-5];

options =optimset( 'Display ','iter ');

x= fsolve( @ fsolvefun, x0 ,options)

命令行窗口中的输出结果如下所示。

例:求解

编写对非线性方程组进行函数描述的M文件,并保存为myfun6. _8. m,如下所示。

function T= myfun6_ 8(x)

T=x^4-[2,5;-8,7];

然后求解非线性方程组,在命令行窗口中输人如下语句。

>>x0=[3 1;2 1];

options= optimset( 'Display',' of');

X= fsolve( @ myfun6 8, x0 options)

命令行窗口中的输出结果如下所示。

X=

1.4438 0.3202

-0. 5123 1.7640

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

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

相关文章

Nginx入门知识

一、什么是NginxNginx (engine x) 是一个高性能的HTTP和反向代理web服务器,Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强&am…

JavaScript 字符串

文章目录JavaScript 字符串JavaScript 字符串字符串长度特殊字符字符串可以是对象字符串属性和方法字符串属性字符串方法JavaScript 字符串 JavaScript 字符串用于存储和处理文本。 JavaScript 字符串 字符串可以存储一系列字符,如 “John Doe”。 字符串可以是插…

如何连接远程mysql数据库(原创)

一、连接远程数据库:(前提本地也有mysql的客户端) 1、显示密码 如:MySQL 连接远程数据库(192.168.5.116),端口“3306”,用户名为“rfid_hh”,密码“123456” C:/>mysq…

20230107报警器的测试

20230107报警器的测试 2023/1/7 13:01 新款夹子户外报警器防盗报警器果园自动打电话无线距离防水报警器 拼多多的货。不到30¥,也就那么回事了,没有太高期望。 需要在微信公众号注册。 拿掉强磁铁之后,GSM模块通电了!…

英国学校遭遇机密数据大规模泄露

在 2022 年发生攻击事件后,来自 14 所英国学校的机密数据已被黑客在线泄露。 泄露的文件包括孩子的 SEN 信息、学生护照扫描件、员工工资表和合同细节。在受影响的学校拒绝支付攻击者的赎金要求后,信息被泄露。 据报道,攻击和泄密是由威胁行…

前端开发--JavaScript高级

JavaScript高级这一篇就够了JavaScript高级1、基础总结深入1.1 数据类型的分类和判断1.2 数据,变量, 内存的理解1.3 对象的理解和使用1.4 函数的理解和使用2、函数高级2.1 原型与原型链2.2 执行上下文与执行上下文栈2.3 作用域与作用域链2.4 闭包2.5 内存溢出与内存泄露3、对象…

DC-1靶场实操

靶场部署 下载网址:Vulnerable By Design - Search: DC- ~ VulnHub tips:强烈建议各位师傅们使用迅雷或idm要不然下载靶场将是一个十分痛苦的环节 之后环境搭建操作步骤一致故此处搭建环境以DC-1为例 将下好的压缩包解压,你就会看到一个.…

2023春招面试专题:高并发解决方案

如何理解高并发? 高并发意味着大流量,需要运用技术手段抵抗流量的冲击,这些手段好比操作流量,能让流量更平稳地被系统所处理,带给用户更好的体验。 我们常见的高并发场景有:淘宝的双11、春运时的抢票、微…

kaggle平台学习复习笔记 | 计算机视觉

目录1.The Convolutional Classifier2.Convolution and ReLU3.Maximum Pooling4.The Sliding Window5.Custom Convnets6.Data Augmentation1.The Convolutional Classifier 使用Keras创建第一个计算机视觉模型。 用于图像分类的网络由两部分组成:卷积层和密集层 卷…

华为云服务器无法正常访问端口

出错场景: 2023年1月7日22:05:32 在新服务器上运行自己服务端软件,其他客户端无法访问端口 进行连接。 服务端的程序启动了,客户端无法交互,连接失败。 首先检查能不能ping通 ping IP地址–发现是可以ping通的,再测…

活动星投票国风正当红网络评选微信的投票方式线上免费投票

“国风正当红”网络评选投票_第三方投票平台_优秀微信小程序_小程序投票优势近些年来,第三方的微信投票制作平台如雨后春笋般络绎不绝。随着手机的互联网的发展及微信开放平台各项基于手机能力的开放,更多人选择微信投票小程序平台,因为它有非…

python小游戏————兔子

♥️作者:小刘在这里 ♥️每天分享云计算网络运维课堂笔记,疫情之下,你我素未谋面,但你一定要平平安安,一 起努力,共赴美好人生! ♥️夕阳下,是最美的,绽放,…

【宝典】OpenStack集群、k8s集群与docker等集群综合巡检shell脚本

目标:学会编写高质量脚本的方法 高质量脚本应该至少满足两点: 1、当前最优 学会根据架构,设计出符合要求又便于理解的shell脚本 2、后期更新方便 优秀的shell脚本,具备伸缩性,既适用当前平台状态,又可以保证后期增加或下线哪个服务,脚本里增加代码不用改整体代码逻辑的…

JAVAEE-多线程(3)

volatile关键字 volatile禁止了编译器优化,还可以禁止指令重排序,避免了直接读取CPU寄存器中的缓存数据,而是每次都重新读内存。 因为编译器每次正常执行都是把主内存的数据加载到工作内存中,再进行计算处理。volatile即使保证每…

梦想cms1.4代码审计

目录 一、环境配置 二、代码审计 1、后台漏洞 (1)BookAction.class.php (2)BackdbAction.class.php任意文件删除 2、前台漏洞 (1)TagsAction.class.php (2)BookAction.cla…

深入理解数据结构 —— 树状数组

什么是树状数组 我们知道,前缀和数组能解决任意一段区间的累加和问题 但这建立在数组中的元素不发生变化的情况,如果可以修改原始数组中的某个元素,为了让前缀和数组正确,就需要在前缀和数组中修改该元素位置后面的所有的数&…

数组模拟实现单链表、双链表、栈、队列

文章目录 前引 一、数组模拟实现单链表 1、1 数组模拟的单链表解析 1、2 数组模拟实现单链表例题 二、数组模拟实现双链表 2、1 数组模拟实现双链表解析 2、2 数组模拟实现双链表例题 三、数组模拟实现栈 3、1 数组模拟实现栈解析 3、2 数组模拟实现栈例题 四、数组模拟实现队…

【C++学习】基础语法(一)

1、背景知识 1.1 什么是C C语言是结构化和模块化的语言,长用于处理较小规模的程序;对于规模较大、问题复杂的程序,则需要高度的抽象和建模,此时C语言不合适处理这类问题。为了解决此类影响软件的问题,20世纪80年代&am…

Python | Matplotlib | 不完全总结

本文对 Matplotlib 的用法进行不完全总结。 更新: 2023 / 1 / 4 Python | Matplotlib | 不完全总结ImageMagick导库画布创建多子图动图2D柱状图基本:水平 / 垂直柱形主题:颜色、文字、网格线动图线图基本动图3D柱状图基本线图动图参考链接Im…

Web文件操作:上传与下载

文件上传与下载文件上传文件上传的实现表结构设计UploadFileServiceImpl的实现上传文件遇到的问题与解决文件下载文件上传 文件上传的表单中,需要注意的三个地方: 1.表单的请求方式必须为post; 2.表单域必须有file类型; 3.表单的e…