【MATLAB第106期】#源码分享 | 基于MATLAB的有限差分算法的全局敏感性分析模型

【MATLAB第106期】#源码分享 | 基于MATLAB的有限差分法的全局敏感性分析模型

一、原理

有限差分法是一种数值方法,用于估计函数对输入参数的敏感性。在全局敏感性分析中,这种方法特别有用,因为它可以评估模型输出对所有输入参数变化的整体响应。以下是根据提供的MATLAB代码分析有限差分法实现全局敏感性分析的原理:

1、初始化和参数设置:清除所有变量(clear all),确保没有旧数据干扰。
初始化随机数生成器(rng(‘shuffle’)),确保随机抽样的可重复性。

2、定义样本数量和步长:
N:定义每个参数的样本数量,即要评估的模型运行次数。
h:定义有限差分的步长,即在每个参数上进行微小变化的量。

3、预分配内存:
y:存储模型输出(如增长率)的数组。
y_plus:存储扰动后模型输出的数组。
grad_y:存储模型输出梯度的数组。
Xs:存储归一化参数的数组。

4、设置参数的初始值和变化范围:
setvals:定义参数的初始值。
var:定义参数变化的百分比。
xl和xu:分别计算参数的下限和上限,用于随机抽样。

5、计算基准参数的模型输出:
使用for循环,对每个样本进行迭代。
在每次迭代中,随机抽样参数(Xs(jj,:)),并将其转换为实际参数值(params)。
计算模型输出(y(jj)),通常通过调用一个函数(如func_test1)实现。

6、移除不合理输出(进行约束):
如果模型输出超出预期范围(如大于15),则重新抽样参数并重新计算,直到获得合理的输出。

7、计算扰动参数的模型输出:
对每个参数进行扰动,即在每个参数上增加或减少步长h。
计算扰动后的模型输出(y_plus),并同样移除不物理的输出。

8、计算梯度:
使用有限差分法计算每个参数的梯度(grad_y),即模型输出对每个参数变化的敏感度。梯度计算公式为:
grad

9、奇异值分解(SVD):
对梯度矩阵进行奇异值分解,得到权重(U)、奇异值(S)和特征向量(V)。
第一列权重(w)和第二列权重(w2)分别表示模型输出对每个参数的相对重要性。

10、计算特征值和权重:
计算特征值(evalues),这些值表示模型输出对参数变化的敏感性。
计算权重(W和W2),这些值表示每个参数对模型输出的贡献度。

通过这种方法,可以全面了解模型输出对各个输入参数的敏感性,从而识别出对模型结果影响最大的参数。这对于优化模型参数、理解模型行为以及进行不确定性分析都非常有用。以下为目标函数:

function gamma = func_test1(x)
gamma=x(1)^2 + x(2)^2 + x(3)^2  + x(4)^2 +x(5)^2;                    
end

二 、代码展示

%使用有限差分法计算参数变化的敏感性。通过计算梯度并使用SVD分析结果,可以了解模型输出对每个参数的敏感程度。
clear all;%清除所有变量
rng('shuffle');%初始化随机数生成器:将随机数生成器设置为“shuffle”,以确保每次运行时生成的随机数序列不同。
N = 1000;   %每个参数的样本数量
h = 1e-5;  %有限差分的步长y = zeros(N,1);                        %存储输出数组
Nparams = 5;
y_plus = zeros(N,Nparams);             %存储扰动后输出的数组
grad_y = zeros(Nparams,N);             %存储输出的梯度数组 
Xs = zeros(N,Nparams);                    %存储输出的梯度数组setvals = [1; 0.5; 0.4; 0.3; 1.5]; % 设置参数的初始值
var = 0.05; % 参数变化的百分比  5
xl = (1-var)*setvals;%参数的下限
xu = (1+var)*setvals;%参数的上限tic
%使用for循环计算基准参数和扰动参数的y。
for jj = 1:Njjrng(sum(100*clock)+pi*jj); % 在可接受的范围内随机抽样参数Xs(jj,:) = 2*rand(1,Nparams) - 1;params = 1/2*(diag(xu - xl)*Xs(jj,:)' + (xu + xl));% 计算函数的根,func_test函数用于计算给定参数的函数y。y(jj) = func_test1(params);% 设置阈值移除必要的根,%如果计算得到的y大于15,则重新随机采样参数直到获得合理的y。while y(jj) > 15                                                        Xs(jj,:) = 2*rand(1,Nparams) - 1;params = 1/2*(diag(xu - xl)*Xs(jj,:)' + (xu + xl));y(jj) = func_test1(params);end 
end%扰动参数
%略for jj = 1:N%使用有限差分计算appx梯度,%使用有限差分法计算增长率对每个参数的梯度。grad_y(:,jj) = (y_plus(jj, :) - y(jj))/h;
end
toc% 计算权重和特征值
%计算矩阵C的奇异值分解
[U,S,V] = svd(1/sqrt(N)*grad_y);
w = abs(U(:,1));
W=w/sum(w);
w2 = abs(U(:,2));W2=w2/sum(w2);   
%计算C的特征值
evalues = diag(S.^2);
%使用奇异值分解(SVD)计算grad_y矩阵的权重和特征值。
%找出最大和最小grad_y的差值以检查错误
diff_y = max(max(grad_y)) - min(min(grad_y));
%计算grad_y矩阵中最大值和最小值的差异,以检查可能的错误。
figure()
bar([W   W2]);xlabel('输入变量')ylabel('权重')legend('初始结果','扰动结果')title('有限差分敏感性分析')

三、结果展示

在这里插入图片描述

根据目标函数可得,结果较为合理 。
赠送复杂的测试函数,以供学习。

四、代码获取

1.阅读首页置顶文章
2.关注CSDN
3.根据自动回复消息,回复“106期”以及相应指令,即可获取对应下载方式。

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

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

相关文章

stm32:CAN通讯

目录 介绍 协议层 CAN的 帧/报文 种类 数据帧 远程帧(遥控帧) 错误帧 过载帧 帧间隔 总线仲裁 stm32的CAN外设 工作模式 测试模式 功能框图 时序 标准时序 例子 环回静默模式测试 寄存器代码 HAL版本 介绍 一种功能丰富的车用总线标…

EasyExcel 学习之 导出 “WPS 表格在试图打开文件时遇到错误”

目录 1. 版本2. 现象2.1. Postman 文件下载成功且 WPS 可以正常打开2.2. VUE 下载成功但 WPS 无法打开 3. 原因:前端未指定 responseType4. 常见问题4.1. NoSuchMethodError4.1.1. org.apache.logging.log4j.LogBuilder org.apache.logging.log4j.Logger.atTrace()4.1.2. Could…

WebAssembly与JavaScript的交互(1)

前一阵子利用Balazor开发了一个NuGet站点,对WebAssembly进行了初步的了解,觉得挺有意思。在接下来的一系列文章中,我们将通过实例演示的方式介绍WebAssembly的一些基本概念和编程模式。首先我们先来说说什么是WebAssembly,它主要帮…

深入理解 Token:大模型为什么用token计费,token到底是什么东东

今天我们来聊聊一个你可能听说过,但可能不太了解的词——Token。在那些能聊天、写文章、甚至帮你做决定的智能大模型里,为什么都要用Token 来计费在这里插入图片描述 一、Token 是什么? 想象一下,你写了一封信,但不是…

若依前端和后端时间相差8小时

原因基类未设置时区 实体类继承 BaseEntity 加上timezone"GMT8" /** 创建时间 */ JsonFormat(pattern "yyyy-MM-dd HH:mm:ss" , timezone"GMT8") private Date createTime; 解决

网络安全(含面试题版)

一、网络概念 网络:一组相互连接的计算机,多台计算机组成,使用物理线路进行连接 作用: 数据交换 资源共享 二、网络分类 计算机网络覆盖的地理区域决定了它的类型。一般分为局域网(LAN)、城域网(MAN)、广域网(WAN)。 三、www万维网…

Android音视频—OpenGL 与OpenGL ES简述,渲染视频到界面基本流程

文章目录 OpenGL 简述特点和功能主要组件OpenGL ES当前状态 OpenGL ES 在 Android 上进行视频帧渲染总体流程 OpenGL 简述 OpenGL(Open Graphics Library)是一个跨平台的、语言无关的应用程序编程接口(API),用于开发生…

如何用AI交互数字人一体机,打造政务服务新名片?

如今,将“高效办成一件事”作为优化政务服务、提升行政效能的重要抓手,各地方为了促进政务服务由传统模式向数字化、智能化方向转变,纷纷在政务服务场景融合了AI交互数字人,实现“无人化、智慧化”导办、帮办、代办等模式&#xf…

redis缓存失效问题

缓存时效问题 缓存穿透 问题说明:指大量请求缓存中不存在的数据,导致这些请求都访问备用数据源(如数据库、外部服务等),从而引起系统资源浪费和性能问题。 解决方案:有“参数校验”、“缓存空值”、“布隆…

html 单页面引用vue3和element-plus

引入方式: element-plus基于vue3.0,所以必须导入vue3.0的js文件,然后再导入element-plus自身所需的js以及css文件,导入文件有两种方法:外部引用、下载本地使用 通过外部引用ElementPlus的css和js文件 以及Vue3.0文件 …

LG 选择 Flutter 来增强其智能电视操作系统 webOS

可以这个话题会让大多数人困惑,2024 年了为什么还会冒出 webOS 这种老古董?然后 LG 为什么选择 webOS ?现在为什么又选择 Flutter ? 其实早在 Google I/O 发布 Flutter 3.22 版本的时候,就提到了 LG 选择 Flutter 来增…

Postfix+Dovecot+Roundcube开源邮件系统搭建系列1-2:系统搭建目标+MariaDB数据库配置(MySQL)

1. 系统搭建目标 通过本系列文章,最终可以部署一套提供如下服务的邮件系统: SMTP服务:由Postfix提供,监听25、465、587端口。POP3服务:由Dovecot提供,监听110、995端口。IMAP服务:由Dovecot提…

el-table fixed固定列导致错位的解决方法介绍

问题描述: Element UI table组件可以通过设置fixedright属性实现列的固定,但是在某些情况下会导致固定列的样式错乱,只要刷新页面即出现表格错位问题,下面就总结下解决样式错乱实现方案 官方解决方案: 对 Table 进行重新布局。当 Table 或其…

安全防御:智能选路

目录 一、智能选路 1.1 就近选路 1.2 策略路由 1.3 虚拟系统---VRF 二、全局选路策略 1,基于链路带宽进行负载分担 2,基于链路质量进行负载分担 3,基于链路权重的负载分担 4,根据链路优先级的主备备份 DNS透明代理 一、…

vue执行npm install问题idealTree:yudao-ui-admin-vben: sill idealTree buildDeps

前言: 查看vue终端默认地址 npm config get registry 结果:https://registry.npmjs.org/问题: 在拉取芋道源码前端的时候执行npm install 遇到问题如下:一直卡着不动 查看版本 按照网上方法更换镜像为阿里的,仍然不…

ORA-00756 ORA-10567故障处理---惜分飞

数据库异常断电之后,recover 报ORA-00756 ORA-10567等错 SQL> recover database; ORA-00756: 恢复操作检测到数据块写入丢失 ORA-10567: Redo is inconsistent with data block (file# 1,block# 113855,file offset is 932700160 bytes) ORA-10564: tablespace S…

搜维尔科技:【研究】触觉技术将在5年内以8种方式改变人们的世界

触觉技术在过去几年中发展迅猛,大大提高了反馈的精确度和真实度。其应用产生了真正的影响,数百家公司和企业都集成了触觉技术来增强培训和研究模拟。 虽然触觉技术主要用于 B2B 层面,但触觉技术可能会彻底改变我们的生活,尤其是通…

多类支持向量机损失(SVM损失)

(SVM) 损失。SVM 损失的设置是,SVM“希望”每个图像的正确类别的得分比错误类别高出一定幅度Δ。 即假设有一个分数集合s[13,−7,11] 如果y0为真实值,超参数为10,则该损失值为 超参数是指在机器学习算法的训练过程中需要设置的参数&#xf…

Spring Data Jpa 原生SQL联表查询返回自定义DTO

Spring Data Jpa 原生SQL联表查询返回自定义DTO 方案一:返回Map 这个就不说了 方案二:实体定义成接口的形式 该方式最直观!!推荐!!! 注意:XxxDto是interface接口,而…

(算法)区间调度问题

问题大致如下所述:有n项工作,每项工作分别在s时间开始,在t时间结束. 对于每项工作,你都可以选择参与与否,如果选择了参与,那么自始至终都必须全程参与. 此外,参与工作的时间段不能重复(即使是开始的瞬间和结束的瞬间的重叠也是不允许的). 你的目标是参…