非线性最小二乘法是不是指两个变量之间的关系为非线性?比如y=x^2,y=sinx等等?

山高水长_Hello2022-10-04 11:39:541条回答

已提交,审核后显示!提交回复

共1条回复
sbdhdnihc 共回答了20个问题 | 采纳率85%
非线性最小二乘法是以误差的平方和最小为准则来估计非线性静态模型参数的一种参数估计方法
1年前

相关推荐

用Mathematica 利用非线性最小二乘法 实现曲线拟合 盼您回信
用Mathematica 利用非线性最小二乘法 实现曲线拟合 盼您回信
数据{0,0},{0.115,0.11},{0.173,0.14},{0.231,0.24},{0.346,0.29},{0.461,0.31},{0.5,0.32} 模型是 D^2/[D^2 + (0.7 D + 2416.4)^2]*(Sin[0.5*x*Sqrt[D*D + (0.84 D + 2899.7)^2]])^2 ----3个方程合为一体 所以有点麻烦
Q1 利用非线性最小二乘法 实现曲线拟合
Q2 求出方程中 D的值
几个月前 经您指导 我照葫芦画瓢 写了代码 但是怎么也运行不了 请您指教
data = {{0,0},{0.115,0.11},{0.173,0.14},{0.231,0.24},{0.346,
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]
modelf = Function[{x},Evaluate[model /.fit]]
Plot[modelf[x],{x,0,0.5},Epilog -> Map[Point,data]]
Methematica上面 提示的错误如下
Syntax::sntxf:"D^2/" cannot be followed by "[D^2+(0.7D+2416.4)^2]".
Syntax::tsntxi:"[D^2+(0.7D+2416.4)^2]" is incomplete; more input is needed.
Syntax::sntxi:Incomplete expression; more input is needed.
cvmeow1年前1
傩送 共回答了20个问题 | 采纳率85%
呃,一个简单的笔误而已...
data = {{0,0},{0.115,0.11},{0.173,0.14},{0.231,0.24},{0.346,
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的表达式的一组[]改成了().
运行前三行代码,结果为
{D -> 1.03161}
其实错误提示已经说得比较明显了,
用Mathematica 利用非线性最小二乘法 实现曲线拟合
用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) 而且曲线拟合的图也不对
anywhere_love11年前1
京华chun梦 共回答了16个问题 | 采纳率75%
上次偷懒了,没继续往下看,不好意思^^
把后两行改成:
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基本已经失效.
我不太清楚你的实验背景和数据来源,感觉还是要从拟合函数那里找找问题了.