求高手赐教!用Mathematica 利用非线性最小二乘法 实现曲线拟合 求解方程

代码如下
data = {{0, 0}, {0.000115, 0.09}, {0.000173, 0.13}, {0.000231,0.17}, {0.000346, 0.23}, {0.000461, 0.25}, {0.0005, 0.24}};
model = D^2/(D^2 + (0.7 D + 2416.4)^2)*(Sin[0.5*x*Sqrt[D*D + (0.84 D + 2899.7)^2]])^2;
fit = FindFit[data, {model, {D >= 0}}, {D}, x]
modelf = Function[{x}, Evaluate[model /. fit]]
Plot[modelf[x], {x, 0, 0.0005}, Epilog -> Map[Point, data]]

数据 {{0, 0}, {0.000115, 0.09}, {0.000173, 0.13}, {0.000231,0.17}, {0.000346, 0.23}, {0.000461, 0.25}, {0.0005, 0.24}}
以方程D^2/(D^2 + (0.7 D + 2416.4)^2)*(Sin[0.5*x*Sqrt[D*D + (0.84 D + 2899.7)^2]])^2 为model 求出D的值并得出曲线拟合的图
但是用上面的代码计算出的D的值 有点问题(应该是几千的数值 但是结果才是1.03) 而且曲线拟合的图也不对
不知道 问题出在哪里

上次偷懒了,没继续往下看,不好意思^^
把后两行改成:
modelf = Function[{x}, Evaluate[model /. fit]][x]
Plot[modelf, {x, 0, 0.5}, Epilog -> Map[Point, data]]
注意也只是把[x]换了个位置,还是笔误,呵呵.
运行可得
1.82153*10^-7 Sin[1450.28 x]^2
图我昨天上传了一天都没通过,真没想通这也不和谐了?今天从略好了...
Q2算是解决.
从图上看你的函数频率是很高的,这是由拟合函数的形式决定的,至少都是2899.7.
用十来个离散点(而且相对频率来说分得很散了)来拟合高频率的曲线意义已经不大,我试着把第三句的{D >= 0}改成{D >= 1000}, {D >= 2000}, {D >= 5000}, 得到的结果为:
{D -> 1005.43},{D -> 2000.},{D -> 5002.49},可见D基本已经失效.
我不太清楚你的实验背景和数据来源,感觉还是要从拟合函数那里找找问题了.
温馨提示:内容为网友见解,仅供参考
无其他回答

求高手赐教!用Mathematica 利用非线性最小二乘法 实现曲线拟合 求解...
把后两行改成:modelf = Function[{x}, Evaluate[model \/. fit]][x]Plot[modelf, {x, 0, 0.5}, Epilog -> Map[Point, data]]注意也只是把[x]换了个位置,还是笔误,呵呵.运行可得 1.82153*10^-7 Sin[1450.28 x]^2 图我昨天上传了一天都没通过,真没想通这也不和谐了?今天从略...

求高手赐教!用Mathematica 利用非线性最小二乘法 实现曲线拟合 求解...
0.29}, {0.461, 0.31}, {0.5, 0.32}};model = D^2\/(D^2 + (0.7 D + 2416.4)^2)*(Sin[0.5*x*Sqrt[D*D + (0.84 D + 2899.7)^2]])^2;fit = FindFit[data, {model, {D >= 0}}, {D}, x]注意仅仅是把model的表达式的一组[]改成了().运行前三行代码,...

...Mathematica 利用非线性最小二乘法 实现曲线拟合 求解方程
同意一楼的

曲线拟合在线拟合工具有哪些?
曲线拟合APP,基于最小二乘法,支持100多种拟合函数,提供手机设备的曲线拟合功能。Python,流行的编程语言,搭配NumPy、SciPy库,利用polyfit、curve_fit等函数进行高效曲线拟合。Origin,专业的数据分析与绘图软件,支持多种统计与非线性拟合方法,提供直观界面与丰富分析功能。Excel,内置曲线拟合功能,通过回...

谁能教教我怎么把大量数据拟合成一个比较复杂的函数
根据曲线的形状您可以选择一个函数,如果类似于直线那就简单了,如果是弯曲的可以选择y是x的多项式函数,如y=a*x*x*x+b*x*x+c*x+d等等,也可以是其他形式的函数类型,然后利用最小二乘法或其他拟合方法求出系数a,b,c,d等,即可得到y和x的关系,这个过程就是曲线拟合,这个函数就是拟合函数。

matlab中polyfit与polyval的功能?
polyfit函数的功能:是matlab中用于进行曲线拟合的一个函数。其数学基础是最小二乘法曲线拟合原理。曲线拟合:已知离散点上的数据集,即已知在点集上的函数值,构造一个解析函数(其图形为一曲线)使在原离散点上尽可能接近给定的值。调用方法:polyfit(x,y,n)。用多项式求过已知点的表达式,其中x为源...

相似回答
大家正在搜