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

news/2024/11/8 16:42:17/
        本博客向您介绍如何存储或访问向 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.ppmy.cn/news/1059844.html

相关文章

Postgres数据库,使用序列时,没有按自增序列,而且数值很大

文章目录 前言处理前现象原因如何配置序列搞定,再见 前言 最近写了个全局获取操作日志的注解,写在了一个公共模块。但是奇怪的是在有的服务可以自增,而有的不可以。这回中间的过程咱就不过多描述了。 处理前现象 会生成这种id贼大的 原因…

Python自动化小技巧21——实现PDF转word功能(程序制作)

案例背景 为什么这个年代PDF转word,某wps居然还要收费.....很多软件都可以实现这个功能,但是效果都有好有坏,而且有的还付费,很麻烦。 那就用python实现这个功能吧,然后把代码打包为.exe的程序,这样随便在…

达梦数据库物化视图介绍

概述 本文将介绍达梦数据库物化视图,给出其概念及相关创建、使用示例。 1.物化视图概念 物化视图 (MATERIALIZED VIEW) 是目标表在特定时间点上的一个副本,占用存储空间,即将查询出来的数据存储在数据库中。当所依赖的一个或多个基表的数据…

RTSP/Onvif视频服务器EasyNVR安防视频云服务调用接口录像会被自动删除的问题解决方案

EasyNVR安防视频云服务是基于RTSP/Onvif协议接入的视频平台,可支持将接入的视频流进行全平台、全终端的分发,分发的视频流包括RTSP、RTMP、HTTP-FLV、WS-FLV、HLS、WebRTC等。平台丰富灵活的视频能力,可应用在智慧校园、智慧工厂、智慧水利等…

AWS 提示证书签名过期无法自动更新

如果域名没有通过验证的话,证书的过去是没有办法自动更新的。 验证的方式也非常简单,通过下面的配置,把 CNAME添加到你的域名上面,AWS 就可会自动完成验证了。 当添加完成后,AWS 验证需要的时间大致在 30 分钟到 1 个…

鲁棒优化入门(5)—Matlab+Yalmip求解鲁棒优化编程实战

之前的博客:鲁棒优化入门(二)——基于matlabyalmip求解鲁棒优化问题 去年发布了使用Yalmip工具箱求解鲁棒优化问题的博客之后,陆陆续续有朋友问我相关的问题,有人形容从学习这篇博客到求解论文中的鲁棒优化问题&#x…

算法:modus的acsii码的LRC校验位的计算

1.LRC校验算法C语言程序 序言 近日用到关于LRC检验算法,网上找了很多资料,其描述方式实在不敢恭维,为方便使用者特写下详细的计算过程,希望对你有所帮助。 By 厦大 Jacky 20120814 LRC校验的数据发送格式 起始字符(1个字符)+数据(2n个字符)+校验值(2个字符)+结束字符(…

如何使用海艺人工智能生成创意汉字

1、用某种字体生成文字。 jf storehttps://store.justfont.com/fonts 2、打开seaart。ai网站。https://www.seaart.ai/home 3、效果如下。 4、右键保存图片。