范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

MATLAB的lsqnonlin函数拟合非线性式子中的未知参数

  往往在实际问题中都存在exp(x)、lnx、sinx等多种函数组合的非线性经验公式。对此我们就可以通过lsqnonlin函数进行求解,该函数的方法被称为非线性最小二乘,损失函数一样,只不过类似于优化算法,给定参数初始值,然后优化参数,非线性最小二乘模型如下,即目标函数。
  1. lsqnonlin语法
  lsqnonlin函数用于求解非线性最小二乘(非线性数据拟合)问题。 语法 x=lsqnonlin(fun,x0) x=lsqnonlin(fun,x0,lb,ub) x=lsqnonlin(fun,x0,lb,ub,options) x=lsqnonlin(problem) [x,resnorm]=lsqnonlin(___) [x,resnorm,residual,exitflag,output]=lsqnonlin(___) [x,resnorm,residual,exitflag,output,lambda,jacobian]=lsqnonlin(___) lb、ub为解向量的下界和上界lb a ub,若没有指定界,则lb=[ ],ub=[ ]; options为指定的优化参数; fun为待拟合函数,计算x处拟合函数值,其定义为 function F = myfun(a,xdata) resnorm=sum ((fun(a,xdata)-ydata).^2),即在a处残差的平方和; residual=fun(a,xdata)-ydata,即在x处的残差; exitflag为终止迭代的条件; output为输出的优化信息; lambda为解x处的Lagrange乘子;jacobian为解x处拟合函数fun的jacobian矩阵。
  2. 拟合简单指数
  对数据进行简单的指数衰减曲线拟合。
  从添加了噪声的指数衰减模型生成数据。模型是:
  y=exp( 1.3t)+ε
  其中 t 的范围是从 0 到 3,ε 是均值为 0、标准差为 0.05 的正态分布噪声。
  问题表述为:给定数据(d、y),求出与数据拟合最佳的指数衰减率。
  创建一个匿名函数,该函数接受指数衰减率 r 的值作为输入,并返回采用该衰减率的模型与数据之差组成的向量。
  程序clc; clear all; close all; rng default % rng("default") 将 rand、randi 和 randn 使用的随机数生成器的设置重置为其默认值。 %这样,会生成相同的随机数,就好像您重新启动了 MATLAB。默认设置是种子为 0 的梅森旋转生成器。 d = linspace(0,3); y = exp(-1.3*d) + 0.05*randn(size(d)); fun = @(r) exp(-d*r)-y; %找到最佳衰减率的值。任意选择一个初始估计值 x0 = 4。 x0 = 4; x = lsqnonlin(fun,x0) %绘制数据和最佳拟合指数曲线。 plot(d,y,"ko",d,exp(-x*d),"b-") legend("原始数据","拟合数据") xlabel("t") ylabel("exp(-tx)")
  运行结果Local minimum possible.  lsqnonlin stopped because the final change in the sum of squares relative to  its initial value is less than the value of the function tolerance.    x =      1.2645
  3. 拟合具有边界约束的问题
  当某些拟合参数有边界时,找到最佳拟合模型。找到合适的中心化参数 b 和缩放参数 a,以便拟合以下函数:a*exp( t)exp( exp( (t b)))。
  程序clc; clear all; close all; %最好地拟合以下标准正态密度分布: %创建数据点组成的向量 t,以及在这些点上的对应正态密度。 t = linspace(-4,4); y = 1/sqrt(2*pi)*exp(-t.^2/2); %创建一个缩放参数 a 为 x(1) 且中心化参数 b 为 x(2) 的函数,来计算中心化并缩放的函数与正态 y 之间的差。 fun = @(x)x(1)*exp(-t).*exp(-exp(-(t-x(2)))) - y; %从 x0 = [1/2,0] 开始寻找最佳拟合,缩放参数 a 的值介于 1/2 和 3/2 之间,中心化参数 b 的值介于 -1 和 3 之间。 lb = [1/2,-1]; ub = [3/2,3]; x0 = [1/2,0]; x = lsqnonlin(fun,x0,lb,ub) %绘制这两个函数来查看拟合的质量。 plot(t,y,"r-",t,fun(x)+y,"b-") xlabel("t") legend("原始数据函数曲线","拟合函数曲线")
  运行结果Local minimum possible.  lsqnonlin stopped because the final change in the sum of squares relative to  its initial value is less than the value of the function tolerance.    x =      0.8231   -0.2444
  4. 检查求解过程
  在求解过程发生时和发生后都对其进行检查(通过将 Display 选项设置为 "iter" 在发生时进行检查,通过检查 output 结构体在发生后进行检查)。
  假设您有观测时间数据 xdata 和观测响应数据 ydata,并且要求得参数 x(1) 和 x(2) 以拟合以下形式的模型:ydata=x(1)exp(x(2)xdata)。
  程序 clc; clear all; close all; % 输入观测时间和响应。 xdata = ...  [0.9 1.5 13.8 19.8 24.1 28.2 35.2 60.3 74.6 81.3]; ydata = ...  [455.2 428.6 124.1 67.3 43.2 28.1 13.1 -0.4 -1.3 -1.5]; % 创建简单的指数衰减模型。该模型计算预测值和观测值之间的差组成的向量。  fun = @(x)x(1)*exp(x(2)*xdata)-ydata; % 以 x0 = [100,-1] 为起点拟合模型。通过将 Display 选项设置为 "iter" 来检查求解过程。获取 output 结构体以获取有关求解过程的详细信息。 x0 = [100,-1]; options = optimoptions("lsqnonlin","Display","iter","PlotFcn","optimplotx"); [x,resnorm,residual,exitflag,output] = lsqnonlin(fun,x0,[],[],options) %Algorithm在 "trust-region-reflective"(默认值)和 "levenberg-marquardt" 之间进行选择。 options.Algorithm = "levenberg-marquardt"; [x1,resnorm1,residual1,exitflag1,output1] = lsqnonlin(fun,x0,[],[],options)
  运行结果                                      Norm of      First-order   Iteration  Func-count     f(x)          step          optimality      0          3          359677                      2.88e+04 Objective function returned Inf; trying a new point...      1          6          359677        11.6976       2.88e+04            2          9          321395            0.5       4.97e+04            3         12          321395              1       4.97e+04            4         15          292253           0.25       7.06e+04            5         18          292253            0.5       7.06e+04            6         21          270350          0.125       1.15e+05            7         24          270350           0.25       1.15e+05            8         27          252777         0.0625       1.63e+05            9         30          252777          0.125       1.63e+05           10         33          243877        0.03125       7.48e+04           11         36          243660         0.0625        8.7e+04           12         39          243276         0.0625          2e+04           13         42          243174         0.0625       1.14e+04           14         45          242999          0.125        5.1e+03           15         48          242661           0.25       2.04e+03           16         51          241987            0.5       1.91e+03           17         54          240643              1       1.04e+03           18         57          237971              2       3.36e+03           19         60          232686              4       6.04e+03           20         63          222354              8        1.2e+04           21         66          202592             16       2.25e+04           22         69          166443             32       4.05e+04           23         72          106320             64       6.68e+04           24         75         28704.7            128       8.31e+04           25         78         89.7947        140.674       2.22e+04           26         81         9.57381        2.02599            684           27         84         9.50489      0.0619926           2.27           28         87         9.50489    0.000462262         0.0114       Local minimum possible. lsqnonlin stopped because the final change in the sum of squares relative to  its initial value is less than the value of the function tolerance.  x =   498.8309   -0.1013 resnorm =     9.5049 residual =     0.1817   -0.0610   -0.7628   -0.1196    0.2659    0.5979    1.0261    1.5124    1.5615    1.6327 exitflag =       3 output =     包含以下字段的 struct:      firstorderopt: 0.0114        iterations: 28         funcCount: 87      cgiterations: 0         algorithm: "trust-region-reflective"          stepsize: 4.6226e-04           message: " Local minimum possible. lsqnonlin stopped because the final change in the sum of squares relative to  its initial value is less than the value of the function tolerance.  Optimization stopped because the relative sum of squares (r) is changing by less than options.FunctionTolerance = 1.000000e-06. "                                          First-Order                    Norm of   Iteration  Func-count    Residual       optimality      Lambda           step      0           3          359677        2.88e+04         0.01 Objective function returned Inf; trying a new point...      1          13          340761        3.91e+04       100000       0.280777      2          16          304661        5.97e+04        10000       0.373146      3          21          297292        6.55e+04        1e+06      0.0589933      4          24          288240        7.57e+04       100000      0.0645444      5          28          275407        1.01e+05        1e+06      0.0741266      6          31          249954        1.62e+05       100000       0.094571      7          36          245896        1.35e+05        1e+07      0.0133606      8          39          243846        7.26e+04        1e+06     0.00944311      9          42          243568        5.66e+04       100000     0.00821622     10          45          243424        1.61e+04        10000     0.00777936     11          48          243322         8.8e+03         1000      0.0673933     12          51          242408         5.1e+03          100       0.675209     13          54          233628        1.05e+04           10        6.59804     14          57          169089        8.51e+04            1        54.6992     15          60         30814.7        1.54e+05          0.1        196.939     16          63         147.496           8e+03         0.01        129.795     17          66         9.51503             117        0.001        9.96069     18          69         9.50489          0.0714       0.0001       0.080486     19          72         9.50489        4.96e-05        1e-05    5.07028e-05 Local minimum possible. lsqnonlin stopped because the relative size of the current step is less than the value of the step size tolerance.  x1 =   498.8309   -0.1013 resnorm1 =     9.5049 residual1 =     0.1817   -0.0610   -0.7628   -0.1196    0.2659    0.5979    1.0261    1.5124    1.5615    1.6327 exitflag1 =       4 output1 =    包含以下字段的 struct:        iterations: 19         funcCount: 72          stepsize: 5.0703e-05      cgiterations: []     firstorderopt: 4.9629e-05         algorithm: "levenberg-marquardt"           message: " Local minimum possible. lsqnonlin stopped because the relative size of the current step is less than the value of the step size tolerance.  Optimization stopped because the relative norm of the current step, 1.016433e-07, is less than options.StepTolerance = 1.000000e-06. "
  5.属性设置
  优化选项,指定为 optimoptions 的输出或 optimset 返回的结构体。 MaxIterations 允许的迭代最大次数,为正整数。默认值为 400。 OptimalityTolerance 一阶最优性的终止容差(正标量)。默认值为 1e-6。 PlotFcn 对算法执行过程中的各种进度测量值绘图,可以选择预定义的绘图,也可以自行编写绘图函数。传递名称、函数句柄或者由名称或函数句柄组成的元胞数组。对于自定义绘图函数,传递函数句柄。默认值是"无"([]): "optimplotx" 绘制当前点。 "optimplotfunccount" 绘制函数计数。 "optimplotfval" 绘制函数值。 "optimplotresnorm" 绘制残差范数。 "optimplotstepsize" 绘制步长大小。 "optimplotfirstorderopt" 绘制一阶最优性度量。
  参考内容
  [1] https://ww2.mathworks.cn/help/optim/ug/lsqnonlin.html
  作者:郭志龙
  编辑:郭志龙
  校对:郭志龙

中年人下半年买手机怎么选,这几项配置很关键,跟处理器一样重要现如今,上网或者到线下店买手机已经不再是年轻人的专利,不少中老年人都会选择自己上网或者到线下店购买手机。但跟大部分年轻人一样,中年人们也不知道购机的时候该看什么配置,所以今天我们就39高温,如何避开那些发烧手机?今年的夏天尤为炎热,广州这边已经来到了39的高温,国内其他一些地方甚至达到了40以上的高温。这么热的天气下,如果你不幸用的是一台发热严重的手机,就会发现用烫手来形容真的一点都不夸张价格相同买vivoX80还是iQOO10?差别不仅仅是芯片在iQOO10系列发布后,很多打算换手机的网友纠结了,iQOO10和vivoX80的价格相同,买哪一款更合适呢?从表面来看,这是蓝厂旗下两个不同品牌的产品,产品定位也不同,但相同的iQOO10Pro评测200W快充,不服充个电?vivo在7月19日发布了iQOO10和iQOO10Pro。卖点简单直接骁龙8和首发200瓦快充。没有PPT发布,上来就是10分钟充满4700mAh电池,定价依然是4999元起。参官方降价600!5399元的iPhone13,为何一点也不香?苹果公司近日宣布,iPhone13全系列近期降价六百元,这是从去年发布到现在,苹果官方的首次降价其中最畅销的iPhone13上市价格为5999元,目前官方售价为5399元,那么降价买手机不要扣扣搜搜,目前只有这4部手机值得买,可以用到2027年买手机不要扣扣搜搜,目前只有这4部手机值得买,可以用到2027年第一款vivoX80Pro搭载天玑9000和骁龙8Gen1两个版本可以选择,大家可以根据自己喜好选择超强处理器,配合iPhone14全系售价及性能曝光,无敌了距离苹果秋季发布会就剩一个多月了,意味着大家很快就能见到全新的iPhone14系列。而随着发布时间的临近,有关iPhone14系列的参数也越发清晰,目前关于该机的外观配置性能价格等美国最大加密货币交易所被查疑上架未注册证券,股价暴跌21澎湃新闻记者王蕙蓉当地时间7月26日,美国最大加密货币交易所Coinbase(COIN)被曝正面临美国证券交易委员会(SEC)调查。消息一出,Coinbase当日股价下跌21,并引光大控股原CEO陈爽被查除了操刀的绅湾资本中飞租赁,还留下了哪些资本迷局?7月26日下午,中央纪委国家监委网站发布通报称,中国光大控股有限公司(00165。HK,下称光大控股)原党委书记行政总裁陈爽涉嫌严重违法,目前正接受监察调查。据接近陈爽的人士透露,举国入币圈,萨尔瓦多能否改变国运?作为一个人口不足千万的中美洲小国,萨尔瓦多去年将比特币确立为本国法定货币的操作惊呆市场。一年来,跌宕起伏的比特币价格让萨尔瓦多人民彻底坐上了过山车,但却让萨尔瓦多总统纳伊布布克尔(2000多元手机如何选?这3款物超所值,可别买错了很多年轻人看不上千元机,但是3000元以上的高端机,可能又有一些压力,再加上手机更新换代太快了,买太贵的手机也不太划算,因此2000多元价位的是比较合适的选择,那么目前市面上200
中国田径协会完善多项管理文件重塑中国路跑新形象新华网北京4月28日电(王梦刁文静)4月27日中国田径协会在全国路跑及大众田径工作会议上,对管理文件中路跑项目定义表述距离设置以及反兴奋剂工作管理等方面进行了修订说明,并发布了全新来自韩国!库里师弟宣布参选!他比曾凡博更有望被选中随着NBA选秀大会的临近,已经有不少来自全世界的顶尖高手都开始摩拳擦掌,为一年一度的选秀大会做准备,继前不久中国球员曾凡博郭昊文自动获得2022年NBA选秀参赛资格之后,又有一位来欧冠半决赛3皇马占先机德布劳内传射本泽马梅开二度北京时间4月27日凌晨3点,20212022赛季欧洲冠军联赛首场半决赛进行了第一回合的较量,英超球队曼城坐镇伊蒂哈德主场迎战西甲豪门皇家马德里。上半场,德布劳内在第2分钟闪击破门,独行侠25分胜爵士,三个细节印证,基德布阵让人拍案叫绝文水清清10277,独行侠25分大胜爵士拿下天王山。送走波尔津吉斯后球队变成单核模式,并且系列赛前两场东契奇还缺阵,那么他们是怎么拿到赛点的呢?三个细节印证,基德的布阵让人拍案叫绝恭喜梅西!大巴黎新帅欲打包1亿神锋,接班姆巴佩,助球王冲金球关于大巴黎目前的最新动态,也是非常明确的那就是首先他们需要在这个夏天搞定新帅的人选。其中最为靠谱的就是目前执教热刺的孔蒂,因为孔蒂目前可谓是主动示好大巴黎想要执教这支银河战舰。考虑亚锦赛首日国羽9胜1负,雷兰曦翁泓阳顺利晋级正赛视频直播比分直播2022年亚洲羽毛球锦标赛资格赛和部分116决赛已于4月26日结束,属于超级1000赛,冠军积分为12000分。国羽在今天的比赛中取得的9胜1负的成绩,其中翁泓阳和林更新再次综艺之神降临,为省钱踩车30公里却开到墓地最近引起热议的新游记,真的是一期比一期有看点,在这个节目里明星干活那是真的干,完全不作秀,这种纪实型直播也给节目增加非常多看点。拿林更新来说,他不愧是自带搞笑气质的谐星,仿佛由综艺43岁陈数与继子感情好,俩人走路还牵手搂肩,网友好似亲母子43岁陈数与继子感情好,俩人走路还牵手搂肩,网友好似亲母子!两个人坐在一起看上去很开心,一起鼓着掌靠的很近,一看就是感情不错,而且陈数真的很有母性光辉呢。陈数穿着一个白色印图的T恤陈亚男的事业打回原形,朱小伟却开上了豪车,富二代生活即将开启陈亚男与朱小伟之间的事情早就成为了一种过去式,如果要论对错,其实谁也说不清楚。站在陈亚男的角度来讲,姑娘也挺不容易的,结婚想要一段美好的婚姻,到头来却是苦了父母苦了自己。怨谁?这一风起陇西口碑收视率会越来越崩,只因为它犯了这8个失误昨夜就在网上看到一众写手在夸风起陇西,本不打算看的我。今天很早起来认真看了本剧简介风起陇西以魏蜀吴天下三分为历史背景,讲述了这个烽火四起英雄辈出的时代中,两个不被乱世聚焦的小人物陈孝庄的真实容貌是怎样的?样貌复原后,和大家想象的有所不同曾经有一部偶像剧似的古装剧孝庄秘史风靡一时,这部电视剧既像我们展示了孝庄太后大玉儿跌宕起伏,缠绵悱恻的一生。又给我们带来了那个朝代波澜壮阔的历史,掌握大清王朝的每一个人的命运交叉在