转载:https://www.cnblogs.com/hyb965149985/p/10102335.html

拟合初值的选取问题
(来源:http://blog.163.com/shikang999@126/blog/static/172624896201463111856714/)

因为初值对拟合速度甚至结果有一定影响,因此这里就简单说一下确定数学模型后,拟合非线性问题时,初值的选取的问题。

1、如果已知数学模型,有一定物理意义,则建议根据物理意义选取。

2、当无法确定初值时,且你的数学模型有导数(如果求导模型很复杂甚至没有导数,则可进行简单的差分构造),则可以采用如下的办法进行。

步骤:

(1)求出拟合函数的一阶导数【如果有必要可求更高阶导数】 ;

(2)使用已知数据求出近似点的一阶导数 ;

(3)代入一阶导数函数以及原函数求得初值近似值 ;

例子:
已知一组数据x、y满足如下关系式,求拟合数据a、b、c、d的初始近似值

y = a + b * (x - c) ^ d

步骤:

(1) y’ = b * d * (x - c) ^ (d - 1)
matlab 计算微分的方法:如对erf(x)

syms x %代表着声明符号变量x,只有声明了符号变量才可以进行符号运算,包括求导
diff(erf(x))%代表着对单变量函数求一阶导数
pretty(diff(erf(x)))%将当前变量显示为我们常用的书面形式

(2)因为已知x、y数据,则根据差分法( y’=(y2-y1)/(x2-x1) )求得一组x、y’ 的近似值,这里记 f = y’

(3)将x、y’ 代入(1)式的方程得到如下三个方程进而求解出b、c、d

f[1] = b * d * (x[1] - c) ^ (d - 1) ①

f[2] = b * d * (x[2] - c) ^ (d - 1) ②

f[3] = b * d * (x[3] - c) ^ (d - 1) ③

(4)取任意一组x、y然后将b、c、d一起代入原方程 y = a + b * (x - c) ^ d 进而可以求得近似值 a

(5)至此 a、b、c、d初始近似值确定完毕!

matlab-lsqcurvefit函数 初始值选取相关推荐

  1. nlinfit函数 matlab,matlab中关于nlinfit函数初始值的选定

    再发一遍: A=[33.35    1854 34.78      1857 36.22      1948 37.66      2017 39.09       2092 40.53       ...

  2. 如何用matlab求函数的最值?

    用matlab求函数最值的方法有很多,下面给出一个非常直观的求最值的方法:(不要求函数处处可导) clear clc t= -100:0.001:100; syms x; y = x/(x * x + ...

  3. matlab复杂函数多元函数拟合

    简介 本文介绍了基于matlab实现的复杂函数以及多元函数的拟合.在工程和研究中偶尔会遇到要用一个非常复杂的数学公式来拟合实验测量数据,对这些复杂的数学公式拟合时,采用常见的拟合方法往往会失败,或者得 ...

  4. 最小二乘法,简明公式整理,数学证明,matlab程序(自写代码、lsqcurvefit函数、fminsearch函数)

    目录 批处理最小二乘方法 递推最小二乘方法 带有遗忘因子的递推最小二乘方法 Matlab案例分析 自写代码 matlab之lsqcurvefit函数 matlab之fminsearch函数 附录1:递 ...

  5. MATLAB 非线性隐函数拟合采坑记录(使用 fsolve solve nlinfit lsqcurvefit函数)

    MATLAB 非线性隐函数拟合采坑记录(使用 fsolve solve nlinfit lsqcurvefit函数) 问题描述 解决思路 错误示范1 代码思路 原因解释 模型更正 更正模型1 更正模型 ...

  6. MATLAB有关lsqcurvefit函数对多个未知参数函数拟合的相关问题

    在MATLAB中关于函数拟合的函数主要分为两类.一类是线性拟合,另一类则是非线性拟合.非线性拟合相对来说,难度会比线性拟合更大一些.本篇文章主要是关于如何使用lsqcurvefit函数进行非线性拟合的 ...

  7. 类型初始值设定项引发异常. matlab,c# - “ MathWorks.MATLAB.NET.Utility.MWMCR”的类型初始值设定项引发了异常 - 堆栈内存溢出...

    " MathWorks.MATLAB.NET.Utility.MWMCR"的类型初始值设定项引发了异常: 我从c#调用,这是MatLab库编译器编译的DLL中的函数. using ...

  8. matlab关于plotfit函数,lsqcurvefit函数,cftool工具箱的使用

    plotfit函数使用 plot是画图函数 polyval是求值函数 polyfit是曲线拟合函数 polyfit用于多项式曲线拟合 p=polyfit(x,y,m) 其中, x, y为已知数据点向量 ...

  9. MATLAB中的lsqcurvefit函数

    对于一个某些参数未知的曲线,在手上拥有其部分数据时,可用lsqcurvefit函数获得其参数. 如: x = 0 : 1 : 21; y = [3.9 5.3 7.2 9.6 12.9 17.1 23 ...

  10. matlab解方程最值点,MATLAB解方程与函数极值

    1.线性方程数值求解 主要是用到了计算方法里的LU分解等不过是加快了求解速度而已相对于inv(A)*b或者A\b 2.非线性方程数值求解 1 单变量非线性方程求解 在MATLAB中提供了一个fzero ...

最新文章

  1. 百度智能云一口气发布 14 个新产品,三大视频解决方案,产品最高降价 50%
  2. pandoc文档书写
  3. mysql分区跨机器_(转) mysql的分区技术 .
  4. 洛谷 - P4014 分配问题(费用流/KM)
  5. LeetCode 287. 寻找重复数(BitMap)
  6. nginx php 源码安装,Nginx和php安装及配置一之编译安装nginx-1.8.0
  7. div+css强制(不)换行 .
  8. linux yum安装驱动,centos8安装alsa驱动
  9. xcode6-beta下载
  10. 没有什么软文是营销圈拯救不了的?
  11. java算术运算符乘方_用java编写计算器 能够实现简单的加、减、乘、除、乘方、开方运算等;...
  12. javaSE I/O流(二)—— 各种各样的流
  13. 使用虚拟信用卡绑定亚马逊卖家号店铺扣月租费教程
  14. 阿里“中供系”前世今生:马云麾下最神秘的子弟兵
  15. synopsys软件安装
  16. Linux 批量修改密码
  17. Python数据可视化---pygal模块
  18. 很好的古典文学电子书下载网站
  19. 双十二投影仪推荐 三分钟告诉你怎么挑选到称心如意的投影仪
  20. C加加入门教程 1.什么是C加加?

热门文章

  1. long 雪花算法_Snowflake 雪花算法
  2. mysql innodb 幻读_MySQL InnoDB四个事务级别 与 脏读、不重复读、幻读
  3. java文件编译为class文件需要键入什么命令_Day02:Java语言基础-第一个Java程序以及编译与运行机制...
  4. 牛b硬件信息修改大师_比X大师更靠谱?一款真正良心的硬件检测工具
  5. soc设计方法与实现_冷轧钢板局部激光热处理实现汽车轻量化设计新方法
  6. 江西单招主计算机学校,2019年江西单招学校,江西单招信息技术试题,2019江西单招综合素质...
  7. mysql tomcat 自动重连_Tomcat JDBC数据库连接池断开重连
  8. Java编程:树(实际应用)
  9. 局域网Maven Java包批量上传的方法
  10. 无法启动调试--未安装 Silverlight Developer 运行时。请安装一个匹配版本