MATLAB进阶:函数和方程

news2025/2/22 0:54:39

 经过前几天的学习,matlab基础我们已经大致了解,现在我们继续学习matlab更进一步的应用。

常用函数

在求解有关多项式的计算时,我们无可避免的会遇到以下几个函数

  1. y=polyval(p,x):求得多项式p在x处的值y,x可以是一个或多个点。
  2. p3=conv(p1,p2):返回多项式p1和p2的乘积。
  3. [p3,r]=deconv(p1,p2):p3返回多项式p1除以p2的商,r返回余项。
  4. x=roots(p)求得多项式p的所有复根。
  5. p=polyfit(x,y,k)用k次多项式拟合向量数据(x, y),返回多项式的降幂系数。

多项式p

多项式p以一个向量形式表示,形式为各个项的系数组成的集合

如:

代码为

p=[1 2 0 -5]; x=roots(p), polyval(p,x)

可以看出,多项式中三次方项,二次方项,一次方项,常数项的系数依次为1,2,0,-5。

所以,p向量就表示为[1 2 0 -5]。以上代码中,roots(p)表示求根,polyval(p,x)表示将结果x代入多项式p中验算求解答案近似接近于0,则说明答案准确。

非线性函数求零点

一元函数

x=fzero(Fun,x0)

其中x0为初始猜测值。当x0为标量时,函数返回函数在x0附近的零点;

当x0为向量[a,b]时,函数返回在[a,b]中的零点(两端函数异号)

其中,两端函数异号的要求显然非常鸡肋。

例如:

求在区间(-2,-0.1)内求函数的零点

​fun=@(x)x*sin(x^2-x-1)
fzero(fun,[-2 -0.1])

函数报错,原因是两端函数同号

我们画图来看:

fplot(fun,[-2,-0.1]),grid on;

 

我们看到函数在-2到-0.1的值均为正数,加上上述鸡肋的限制,故报错。

我们如果想解决这个问题,可以做以下修改:

方案一
fzero(fun, [-2, -1.2]);
fzero(fun, [-1.2, -0.1]);
方案二
fzero(fun, -1.6);
fzero(fun, -0.6);

也就是说,将初始迭代值分别放在答案附近,或将答案分别放在迭代区间内以保持其准确性,但是要依赖画图来确定答案的具体区间。

多元函数

[x,f,h] = fsolve(Fun, x0)。

  • x:返回多元函数 Fun 在x0附近的一个零点,其中x,x0均为向量;
  • f:返回Fun在零点的函数值,应该接近0;
  • h:返回值如果大于零,说明计算结果可靠,否则计算结果不可靠。
  • Fun:预求函数
  • x0:初始值

下面举例演示此函数的用法:

首先,我们需要将此多项式转换为一边等于零的形式,

即:

f(1)=4*x(1)-x(2)-1+exp(x(1));
f(2)=-x(1)+4*x(2)+x(1)^2/8;

我们再将其写入脚本文件中

[x,f,h]=fsolve(@fun,[0 0]);
function f=fun(x)
f(1)=4*x(1)-x(2)-1+exp(x(1));
f(2)=-x(1)+4*x(2)+x(1)^2/8;
end

运行

得到在x=0,y=0处有解,

其中h>1说明结果可信。

函数极值

min(y) 返回向量y的最小值

max(y) 返回向量y的最大值

fminbnd(fun,a,b)

找到函数 fun 在区间 [a, b] 上的局部最小值点

用法

x = fminbnd(fun,a,b)

fun 是一个函数句柄,代表你想要找到最小值点的函数。a 和 b 是区间的边界点,x 是局部最小值点

fminsearch(fun, x0)

找到多元函数 fun 在初始猜测值 x0 附近的局部极小值点

用法:

[x,f] = fminsearch(fun,x0)

fun 是一个函数句柄,代表你想要找到局部最小值点的函数。x0 是初始猜测值,它是一个包含多个元素的向量,代表函数的多个变量。x 返回的是局部极小值点,f 返回的是局部极小值点处的函数值。

今天关于matlab函数方面的知识就学到这里,明天我们继续学习。

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

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

相关文章

ComfyUI反推提示词节点报错:Load model failed

🎠报错现象 反推提示词的时候会提示报错: Error occurred when executing WD14Tagger|pysssss: [ONNXRuntimeError] : 3 : NO_SUCHFILE : Load model from F:\ComfyUI-aki\custom_nodes\ComfyUI-WD14-Tagger\models\wd-v1-4-convnext-tagger-v2.onnx fa…

创建mysql库,及webserver使用编译

首先安装mysql sudo apt update sudo apt install mysql-server sudo systemctl status mysql #检查mysql是否安装成功 sudo mysql #进入mysqlSHOW DATABASES; create database yourdb; #创建一个名为yourdb的数据库USE yourdb; #使用刚才创建好的数据库 CREATE TABLE …

Go语言----reflect.DeepEqual函数

在使用go语言进行编程的时候,我们通常会对模块进行测试,在测试的过程中,经常会使用reflect.DeepEqual函数,这个函数是在reflect包中,其提供了运行时反射机制的标准库。其中的reflect.DeepEqual()函数是用来比较两个值是…

【知识梳理】Shell的变量计算

转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。 Shell中有很多变量的计算,会用到多种运算符。例如这几种: 1. Shell中常见的算术运算符 运算符意义&…

springboot-定时任务源码分析

springboot-定时任务源码分析 前言我们都知道开启 springboot的定时任务需要先使用 EnableScheduling 注解,在可以开启,那么 EnableScheduling 就是定时任务的源头,所以先从 EnableScheduling 开始分析 EnableScheduling 这个注解核心就是…

基于cubeMX的STM32的定时器使用

1、设置cubeMX 这里使用STM32F103RCT6芯片,以定时器2为例,时钟源选择内部时钟 参数设置,预分频7200,定时器周期10000,则表示定时1秒钟 打开定时器2通用中断 其他设置不用修改。时钟页面配置如下 最后生成代码。 2、在…

05.java中常用的类

1.包装类 基本类型包装类booleanBooleancharCharacterbyteByteintIntegerlongLongfloatFloatdoubleDoubleshortShort 从byte开始的包装类都是继承的Number,然后Number继承的object 从byte上面的都是直接继承的oblect (1).装箱和拆箱 装箱:基本类型--…

DSP教学实验箱_数字图像处理操作_案例分享:5-13 灰度图像二值化

一、实验目的 学习灰度图像二值化的原理,掌握图像的读取方法,并实现在LCD上显示二值化前后的图像。 二、实验原理 图像二值化 图像的二值化处理就是将图像上的点的灰度置为 0 或 255,也就是将整个图像呈现出明显的黑白效果。即将 256 个亮…

JAVA零基础学习3(Scanner类,字符串,StringBuilder,StringJoinder,ArrayList成员方法)

JAVA零基础学习3 Scanner类输入示例代码代码解释完整代码1. 读取字符串2. 读取整数3. 读取浮点数4. 读取布尔值5. 读取单个单词6. 读取长整型数7. 读取短整型数8. 读取字节数注意事项总结 API 字符串解释示例解释解决方法示例:使用 StringBuilder String…

阻塞队列-PriorityBlockQueue

PriorityBlockingQueue 优先级队列不满足FIFO原则它将插入元素进行排序排序的实现是基于数组结构实现的二叉堆排序 二叉堆 在分析优先级别队列时候,需要了解一下二叉堆是什么 二叉堆是一种完全二叉树,除了最底层外,其它层被完全填充。二叉堆…

【AI学习指南】轻量级模型-用 Ollama 轻松玩转本地大模型

目录 探索 最小的AI模型 发现 其他轻量级模型 用 Ollama 轻松玩转本地大模型 本地大模型 Ollama 快速上手 安装 手动安装 下载ollama二进制文件 添加 Ollama 作为启动服务(推荐) 安装 CUDA 驱动程序(可选 - 适用于 Nvidia GPU) 安装 ROCm(可选 - 对于 Radeo…

飞腾2000+/64核芯片ECC功能验证

1、背景介绍 为了排查全国产飞腾计算模块的一个外场问题,需要验证飞腾2000/64核这个处理器的DDR控制器是否支持ECC功能,即在异常情况下能纠错。ECC纠错原理如下,目前飞腾2000/64 DDR控制器就是纠一检二: 2、寄存器说明 目前飞腾…

【学习过程总结】

一、二进制和十进制的转化 1、十进制转化为二进制 2、二进制转化为十进制 二进制转化为十进制这个,对于二进制的数,得从右往左看(1《0《1《1)。对于下面的转换过程得从下往上看 (0、1、2、3) 二、按位-异…

原理图----备份

从公司学到的电路图,做一个备份:

用Python做一个翻译软件,比上浏览器快100倍

简单的用Python来做一个翻译软件 开发环境 Python 3.10 Pycharm模块使用 requests -> pip install requests hashlib tkinter案例分为三部分: 1. 爬虫: 获取翻译接口, 请求获取翻译结果问题1: 接口抓包分析问题2: 请求需要写cookie问题3: 不同文本翻译, s加密参数2. 界面…

昇思25天学习打卡营第3天|基础知识-数据集Dataset

目录 环境 环境 导包 数据集加载 数据集迭代 数据集常用操作 shuffle map batch 自定义数据集 可随机访问数据集 可迭代数据集 生成器 MindSpore提供基于Pipeline的数据引擎,通过数据集(Dataset)和数据变换(Transfor…

小模型狂飙!6家巨头争相发布小模型,Andrej Karpathy:大语言模型的尺寸竞争正在倒退...

过去一周,可谓是小模型战场最疯狂的一周,商业巨头改变赛道,向大模型say byebye~。 OpenAI、Apple、Mistral等“百花齐放”,纷纷带着自家性能优越的轻量化小模型入场。 小模型(SLM),是相对于大语言模型(LLM…

微信小游戏之三消(二)主要游戏控制方法

设计一个 game class。负责了游戏的核心控制逻辑,包括游戏状态管理、方块和道具的生成与效果处理,以及游戏的重新开始和复活流程。通过这些方法,脚本实现了游戏的基本玩法和用户交互。 主要游戏控制方法 gameStart():开始游戏&am…

如何从网站获取表格数据

1.手动复制粘贴 最简单的方法是直接在网页上手动选择表格内容,然后复制粘贴到Excel或其他表格处理软件中。这种方法适用于表格较小且不经常更新的情况。 2.使用浏览器插件 有许多浏览器插件可以帮助从网页中提取表格数据,例如: -TableCapt…