Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >拟合反函数

拟合反函数
EN

Stack Overflow用户
提问于 2013-11-28 04:40:21
回答 1查看 1.4K关注 0票数 5

我有一个函数,它看起来是: g(x) = f(x) - a^b / f(x)^b

g(x) -已知函数,提供数据向量。

f(x) -隐藏过程。

a,b-这个函数的参数。

从上面我们得到了这样的关系:

f(x) =逆(g(X))

我的目标是优化参数ab,使f(x)尽可能接近

服从正态分布。如果我们查看f(x) Q-Q正态图(附图),我的目的是通过优化参数ab,使f(x)到表示正态分布的直线之间的距离最小。

我编写了以下代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
g_fun <- function(x) {x - a^b/x^b}

inverse = function (f, lower = 0, upper = 2000) {
      function (y) uniroot((function (x) f(x) - y), lower = lower, upper = upper)[1]
}


f_func = inverse(function(x) g_fun(x))
enter code here

# let's made up an example 
# g(x) values are known 
g <- c(-0.016339, 0.029646, -0.0255258, 0.003352, -0.053258, -0.018971, 0.005172,  
       0.067114, 0.026415, 0.051062)  

# Calculate f(x) by using the inverse of g(x), when a=a0 and b=b0
for (i in 1:10) {  
  f[i] <- f_fun(g[i])  
}

我有两个问题:

  1. 如何将参数a和b传递给函数?
  2. 如何执行这个优化任务,意味着找到a和b,使f(x)近似于正态分布。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-05 01:31:29

不确定你是如何产生的Q-Q图,因为你提供的例子不起作用。您不是指定a和b的值,而是定义f_func,而是调用f_fun。不管怎么说,这是我对你们问题的回答:

  1. 如何将参数a和b传递给函数?-只是将它们作为参数传递给函数。
  2. 如何执行这个优化任务,意思是找到a和b,使f(x)近似于正态分布?-就像完成任何优化任务一样。定义一个成本函数,然后最小化它。

下面是修改后的代码:我添加了a和b作为参数,删除了反函数并将其合并到f_func中,它现在可以接受向量输入,因此不需要for循环。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
g_fun <- function(x,a,b) {x - a^b/x^b}

f_func = function(y,a,b,lower = 0, upper = 2000){
  sapply(y,function(z) { uniroot(function(x) g_fun(x,a,b) - z, lower = lower, upper = upper)$root})
} 

# g(x) values are known 
g <- c(-0.016339, 0.029646, -0.0255258, 0.003352, -0.053258, -0.018971, 0.005172,  
       0.067114, 0.026415, 0.051062)  
f <- f_func(g,1,1) # using a = 1 and b = 1
#[1] 0.9918427 1.0149329 0.9873386 1.0016774 0.9737270 0.9905320 1.0025893
#[8] 1.0341199 1.0132947 1.0258569

f_func(g,2,10)
 [1] 1.876408 1.880554 1.875578 1.878138 1.873094 1.876170 1.878304 1.884049
 [9] 1.880256 1.882544

对于优化部分,它取决于f(x)近似正态分布的含义。如果你愿意,你可以比较qq线的均方误差.还有,既然你说的是近似,多近就够好了?您可以使用shapiro.test继续搜索,直到找到低于0.05的p值(请注意,可能没有解决方案)。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
shapiro.test(f_func(g,1,2))$p
[1] 0.9484821

cost <- function(x,y) shapiro.test(f_func(g,x,y))$p

既然我们有了一个成本函数,我们该如何把它最小化。进行数值优化的方法有很多种。看看optim http://stat.ethz.ch/R-manual/R-patched/library/stats/html/optim.html

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
optim(c(1,1),cost)

这最后一行不工作,但没有适当的数据和上下文,这是我所能做的。希望这能有所帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20266501

复制
相关文章
怎样Hack Linux的内核符号?
Inline Hook技术能够帮助我们完成函数的动态拦截和跳转,但要实现缺陷函数的自动化热修复则会面临更加复杂的挑战。本文从一个实际例子出发,阐述了在对二进制形式的Linux固件做自动化安全加固的时遇到的技术难题和解决办法。
ThoughtWorks
2020/08/02
2.4K0
linux内核符号表kallsyms简介
在2.6版的内核中,为了更方便的调试内核代码,开发者考虑将内核代码中所有函数以及所有非栈变量的地址抽取出来,形成是一个简单的数据块(data blob:符号和地址对应),并将此链接进 vmlinux 中去。
sean.liu
2022/09/28
2.7K0
为什么要阅读Linux内核源码以及如何阅读Linux内核源码
第一种方法纵向或者横向来读都可以,因为代码量不是很大。《linux内核完全剖析》《linux内核完全注释》是引导你横向阅读的书,《linux内核设计的艺术》是引导你纵向阅读的书。建议横向纵向结合着来,纵向跟着bochs调试工具来是必不可少的,当遇到问题时进入到相应的功能模块横向拓展一下。
Jasonangel
2021/05/28
4.7K0
Linux为什么使用内核模块?
我们常常说到的操作系统有Linux、Windows、mac OS等等,手机的安卓系统就是基于Linux操作系统,这些操作系统从内核的角度分为宏内核和微内核,Linux是典型的宏内核的操作系统,Windows是典型的微内核操作系统。
混说Linux
2022/07/14
2.5K0
Linux为什么使用内核模块?
为linux内核源码生成tags文件
一般来说,如果我们想要研究一个c/c++项目的源码,我们首先要做的是为该项目生成tags文件,linux内核是c写的,所以它也不例外。
KINGYT
2019/11/19
4.4K0
为linux内核源码生成tags文件
Linux 内核组织将关闭 FTP 服务
Linux Kernel Organization(kernel.org) 是一家建立于 2002 年的加利福尼亚公共福利公司,其目的是公开地免费分发 Linux 内核和其它开源软件。它接受 Linux 基金会的管理,包括技术、资金和人员支持,用以维护 kernel.org 的运营。
Debian中国
2018/12/20
4.2K0
教程:为Linux系统导出内核头文件
最近由于项目需要,要编译mlibc,其中需要linux kernel headers,而使用apt安装的头文件总是有问题,因此,自己从内核里面导出了一份。在此写个简单的文章记录一下。
灯珑LoGin
2023/10/18
9630
驱动开发:内核无痕隐藏自身分析
在笔者前面有一篇文章《驱动开发:断链隐藏驱动程序自身》通过摘除驱动的链表实现了断链隐藏自身的目的,但此方法恢复时会触发PG会蓝屏,偶然间在网上找到了一个作者介绍的一种方法,觉得有必要详细分析一下他是如何实现的驱动隐藏的,总体来说作者的思路是最终寻找到MiProcessLoaderEntry的入口地址,该函数的作用是将驱动信息加入链表和移除链表,运用这个函数即可动态处理驱动的添加和移除问题。
微软技术分享
2022/11/14
8330
驱动开发:内核无痕隐藏自身分析
WordPress 函数:esc_html()将符号标签编码转义为HTML实体
esc_html() 的作用,是把各种字符转义成 HTML 实体,如 < > & " '(小于号,大于号,&,双引号,单引号)等,如果已经是 HTML 实体的字符则不会再转义。
Yangsh888
2022/03/28
2.6K0
Linux动态为内核添加新的系统调用
先来个满满的回忆:https://blog.csdn.net/dog250/article/details/64461922011年写这篇文章的时候,我的女儿小小还没有出生。
Linux阅码场
2020/05/13
1.8K0
GitHub为什么托管不了Linux内核社区?
前不久,微软在 Linux 基金会董事会的代表 Sarah Novotny 认为,由纯文本电邮讨论推动的 Linux 内核开发需要被更好的或替代协作工具取代,以降低门槛引入新的贡献者,维护和维持未来的 Linux。她认为替代工具可以是基于文本的、基于电邮的补丁系统,某种程度上是过去五到十年成长起来的开发者所熟悉的工具。此前 Linus 曾在接受采访时表示很难找到新的 Linux 内核维护者。
深度学习与Python
2020/09/28
1.5K0
GitHub为什么托管不了Linux内核社区?
为什么 Linux 内核中不经常使用 typedef?
Torvalds 本人不太想看到typedef文化占上风,但是维护自己代码的人通常有最后的发言权。
董哥聊技术
2023/08/29
2880
为什么 Linux 内核中不经常使用 typedef?
【Linux 内核】Linux 内核源码结构 ( 下载 Linux 内核源码 | 使用 VSCode 阅读 Linux 内核源码 )[通俗易懂]
参考 【Linux 内核】编译 Linux 内核 ① ( 下载指定版本的 Linux 内核源码 | Linux 内核版本号含义 | 主版本号 | 次版本号 | 小版本号 | 稳定版本 ) 博客 , 下载 Linux 5.6.18 版本的内核源码 ;
全栈程序员站长
2022/09/15
23.6K0
【Linux 内核】Linux 内核源码结构 ( 下载 Linux 内核源码 | 使用 VSCode 阅读 Linux 内核源码 )
参考 【Linux 内核】编译 Linux 内核 ① ( 下载指定版本的 Linux 内核源码 | Linux 内核版本号含义 | 主版本号 | 次版本号 | 小版本号 | 稳定版本 ) 博客 , 下载 Linux 5.6.18 版本的内核源码 ;
韩曙亮
2023/03/30
21.4K0
【Linux 内核】Linux 内核源码结构 ( 下载 Linux 内核源码 | 使用 VSCode 阅读 Linux 内核源码 )
linux内核编程_linux内核是什么
进程调度(SCHED)、内存管理(MM)、虚拟文件系统(VFS)、网络接口(NET)和进程间通信(IPC)
全栈程序员站长
2022/11/08
18.9K0
Linux为什么区分内核空间和用户空间 ???
程序如果要被CPU执行,就得编译成CPU可以执行的指令,一大堆的程序就变成了一堆的指令。
混说Linux
2022/07/14
1.7K0
Linux为什么区分内核空间和用户空间 ???
LINUX内核
6.音频:音频体系结构ALSA.支持USB音频和MIDI设备,并支持全双工重放功能。
心跳包
2020/08/28
13.9K0
【Linux 内核】编译 Linux 内核 ② ( 解压内核源码 | 查询当前 Linux 内核版本号 | 进入并查看 linux 内核源码目录 )
将 下载的 Linux 内核源码 linux-5.6.14.tar.gz 拷贝到 Ubuntu 虚拟机中 , 执行
韩曙亮
2023/03/30
87.1K0
【Linux 内核】编译 Linux 内核 ② ( 解压内核源码 | 查询当前 Linux 内核版本号 | 进入并查看 linux 内核源码目录 )
Linux 内核 vs Windows 内核
Windows 基本占领了电脑时代的市场,商业上取得了很大成功,但是它并不开源,所以要想接触源码得加入 Windows 的开发团队中。
程序员小猿
2021/03/07
16.4K0
Linux内核编程_linux内核开发工具
转载链接1:http://www.arrowapex.cn/archives/66.html
全栈程序员站长
2022/11/08
13K0

相似问题

gdb无法为linux内核解析符号

23

Linux内核文本符号

16

Linux内核导出的符号

11

将宏元件定义为自身

20

使用vim/cscope查找linux内核中的符号定义

14
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文