matlab使用教程(23)—优化函数的参数

        本博客向您介绍如何存储或访问向 MATLAB 复合函数(如 fzero integral)传递的数学函数的额外参数。
        MATLAB 复合函数基于某个值范围计算数学表达式。这些函数之所以称为复合函数是因为它们是接受函数句柄(函数的指针)作为输入的函数。这些函数的每一个都要求目标函数具有特定数量的输入变量。例如, fzero integral 接受恰好具有一个输入变量的函数的句柄。
        假设您需要在系数 b 和 c 具有不同的值时,计算三次多项式 x3 + bx + c 的零点。尽管您可以创建接受三个输入变量(x、b 和 c)的函数,但无法将需要所有这三个输入的函数句柄传递给 fzero。不过,您可以利用匿名函数或嵌套函数的属性来定义其他输入的值。

1.使用嵌套函数参数化

        定义参数的一种方法是使用嵌套函数 - 完全包含于程序文件中另一个函数内的函数。对于此示例,将创建一个名为 findzero.m 的文件,该文件包含父函数 findzero 和嵌套函数 poly
function y = findzero(b,c,x0)
y = fzero(@poly,x0);
function y = poly(x)
y = x^3 + b*x + c;
end
end
        该嵌套函数定义具有一个输入变量 x 的三次多项式。父函数接受参数 b c 作为输入值。将 poly 嵌套于findzero 内的原因是,嵌套函数共享其父函数的工作区。因此, poly 函数可以访问您传递给 findzero b c 的值。
        要求 b = 2 c = 3.5 时多项式的零点,如果使用开始点 x0 = 0 ,则可以从命令行调用 findzero
x = findzero(2,3.5,0)
x =
-1.0945

2.使用匿名函数进行参数化

        访问额外参数的另一种方法是使用匿名函数。匿名函数是可以在单个命令中定义而无需创建一个单独程序文件的函数。这些函数可以使用当前工作区中可用的任何变量。例如,创建用于描述三次多项式的匿名函数的句柄并求零点:
b = 2;
c = 3.5;
cubicpoly = @(x) x^3 + b*x + c;
x = fzero(cubicpoly,0)
x =
-1.0945
        变量 cubicpoly 是具有一个输入 x 的匿名函数的函数句柄。匿名函数的输入以包含在括号中的形式显示,并紧跟用于创建函数句柄的 @ 符号之后。由于在您创建 cubicpoly b c 位于工作区中,因此匿名函数不需要这些系数的输入。无需为匿名函数创建中间变量 cubicpoly 。可以将函数句柄的整个定义包含在对 fzero 的调用中:
b = 2;
c = 3.5;
x = fzero(@(x) x^3 + b*x + c,0)
x =
-1.0945
        您也可以使用匿名函数调用在函数文件中定义的更复杂的目标函数。例如,假设存在具有以下函数定义的名为 cubicpoly.m 的文件:
function y = cubicpoly(x,b,c)
y = x^3 + b*x + c;
end
        在命令行上,定义 b c ,然后使用调用 cubicpoly 的匿名函数调用 fzero
b = 2;
c = 3.5;
x = fzero(@(x) cubicpoly(x,b,c),0)
x =
-1.0945
        注意 要更改参数的值,必须创建一个新匿名函数。例如:
b = 10;
c = 25;
x = fzero(@(x) x^3 + b*x + c,0);

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

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

相关文章

Qt 自定义提示框 右下角冒泡

网页右下角上经常会出现一些提示性的信息,B/S有的东西,C/S当然也可以有,就像QQ的消息提示一样! 实现一个类似的东西并不困难,只要想明白原理实现起来就很简单了! 实现原理: (1&#…

在百度地图中添加自定义全屏控件

百度地图中添加全屏控件 前置知识: 进入整个页面的全屏模式 :document.documentElement.requestFullscreen() 进入特定元素的全屏模式 : document.getElementById("ID").requestFullscreen() 退出全屏:document.exitFu…

免费PPT素材网站,我推荐这6个

找PPT素材、模板,就上这6个网站,免费下载,建议收藏~ 菜鸟图库 https://www.sucai999.com/search/ppt/0_0_0_1.html?vNTYwNDUx 菜鸟图库网有非常丰富的免费素材,像设计类、办公类、自媒体类等素材都很丰富。PPT模板种类很多&…

leetcode76. 最小覆盖子串(滑动窗口-java)

滑动窗口 最小覆盖子串滑动窗口代码 上期经典 最小覆盖子串 难度 - 困难 原题链接 - 最小覆盖字串 给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 “” 。 注意: 对于 t…

金额千位符自定义指令

自定义指令文件 moneyFormat.js /*** v-money 金额千分位转换*/export default {inserted: inputFormatter({// 格式化函数formatter(num, util) {if(num null || num || num undefined || typeof(num) undefined){return }if(util 万元 || util 万){return formatMone…

客户案例:高性能、大规模、高可靠的AIGC承载网络

客户是一家AIGC领域的公司,他们通过构建一套完整的内容生产系统,革新内容创作过程,让用户以更低成本完成内容创作。 客户网络需求汇总 RoCE的计算网络RoCE存储网络1.不少于600端口200G以太网接入端口,未来可扩容至至少1280端口1.…

cuda面试准备(一),架构调试

1 cuda架构 硬件方面 SP (streaming Process) ,SM (streaming multiprocessor) 是硬件(GPUhardware) 概念。而thread,block,grid,warp是软件上的(CUDA) 概念 SP:最基本的处理单元,streaming processor,也称为CUDA core,最后具体的指令和任务都是在SP上处理的。GPU进行并行…

实验七 Linux 内核移植

【实验目的】 掌握 Linux 内核配置和编译的基本方法 【实验环境】 ubuntu 14.04 发行版FS4412 实验平台交叉编译工具:arm-none-linux-gnueabi- 【注意事项】 实验步骤中以“$”开头的命令表示在 ubuntu 环境下执行,以“#”开头的命令表 示在开发板下…

Java设计模式之单例模式

单例模式是一种设计模式,它的目的是确保一个类只有一个实例,并提供一个全局访问点来访问该实例。这个模式通常在需要控制资源访问权、限制实例化数量或实现全局共享时使用。 在实现单例模式时,一般会定义一个私有的构造函数,以防…

Docker常用操作命令(二)

Docker常用操作命令(二) 11、进入容器 docker exec -it 容器名称or容器ID /bin/bash [rootzch01 ~]# docker exec -it 973ff3caff19 /bin/bash 退出容器 root973ff3caff19:/# exit 12、查看容器中的进程 docker top 容器名称or容器ID [rootzch01 ~]# docker top 973ff3c…

centos7安装JDK

centos7安装JDK 小白教程,一看就会,一做就成。 1.安装 我这有包,需要了可以私发 #创建/data/jdkmkdir -p /data/jdk#jdk的安装包放到/data/jdk里#进入/data/jdkcd /data/jdk #解压tar -zxvf jdk-8u181-linux-x64.tar.gz #编辑环境变量vim /…

vue3 基础知识 ( webpack 基础知识)05

你好 文章目录 一、组件二、如何支持SFC三、webpack 打包工具四、webpack 依赖图五、webpack 代码分包 一、组件 使用组件中我们可以获得非常多的特性: 代码的高亮;ES6、CommonJS的模块化能力;组件作用域的CSS;可以使用预处理器来…

Oracle的学习心得和知识总结(二十七)|Oracle数据库数据库回放功能之论文一翻译及学习

目录结构 注:提前言明 本文借鉴了以下博主、书籍或网站的内容,其列表如下: 1、参考书籍:《Oracle Database SQL Language Reference》 2、参考书籍:《PostgreSQL中文手册》 3、EDB Postgres Advanced Server User Gui…

JavaWeb-特殊文件(propertis与XML)

目录 Properties文件 一.properties介绍 二.properties使用 三.解决中文乱码问题 XML文件 一.XML介绍 二.XML文件的语法规则 三.XML的使用 Properties文件 一.properties介绍 1.什么是properties文件 Properties文件是一种常用的配置文件格式,用于存储键值…

怎么做用二维码收集数据?问卷码在线生成技巧

在收集用户信息时,一般会通过制作表单的方式,将问题整理处理,让用户选择或者填写,那么现在比较流行的一种方式就是将表单生成二维码,让他人可以通过扫码来填写表单数据。那么使用二维码生成器来制作表单二维码的方法相…

前端面试:【算法与数据结构】常见数据结构解析

在计算机科学中,数据结构是组织和存储数据的方式。精通常见的数据结构对于解决计算机科学和编程问题至关重要。本文将深入探讨常见的数据结构:数组、链表、栈、队列和哈希表,以帮助你建立坚实的数据结构基础。 1. 数组(Array&…

RK3588平台开发系列讲解(AI 篇)RKNN-Toolkit2 模型的加载

文章目录 一、Caffe模型加载接口二、TensorFlow模型加载接口三、TensorFlowLite模型加载接口四、ONNX模型加载五、ONNX模型加载六、PyTorch模型加载接口沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 RKNN-Toolkit2 目前支持 Caffe、TensorFlow、TensorFlowLite、ONN…

Python代理池健壮性测试 - 压力测试和异常处理

大家好!在构建一个可靠的Python代理池时,除了实现基本功能外,我们还需要进行一系列健壮性测试来确保其能够稳定运行,并具备应对各种异常情况的能力。本文将介绍如何使用压力测试工具以及合适的异常处理机制来提升Python代理池的可…

《Java面向对象程序设计》学习笔记——第 12 章 输入流与输出流

​笔记汇总:《Java面向对象程序设计》学习笔记 ​# 第 12 章 输入流与输出流 12.1 File 类 File 对象主要用来获取文件本身的一些信息,例如文件所在的目录、文件的长度和文件的读/写权限等,不涉及对文件的读/写操作。 创建 File 对象的构…

MySQL MVCC的详解之Read View

文章目录 概要一、基于UNDO LOG的版本链1.1、行记录结构1.2、了解UNDO LOG1.3、版本链 二、Read View2.1、判定机制2.2、源码 三、参考 概要 在上文中,我们提到了MVCC(Multi-Version Concurrency Control)多版本并发控制,是通过undo log来实…