24小时热门版块排行榜    

查看: 2971  |  回复: 11

smitest

木虫 (小有名气)

引用回帖:
9楼: Originally posted by pdl9527 at 2017-08-29 19:58:54
对于这个问题来说使用非线性最小二乘法来计算没有任何问题,你这里用的左除(mldivide),如果你打开帮助文件仔细阅读你会发现这样一行字,If A is a rectangular m-by-n matrix with m ~= n, and B is a matrix w ...

对于线性和非线性问题的差别,如果自己写代码就会发现其中的区别,也会发现用现成库函数存在的问题。
11楼2017-09-04 19:45:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingd

铁杆木虫 (职业作家)

这个问题可归结为:一个非线性拟合模型,如果该模型公式可以线性化,那么是直接进行非线性拟合好还是模型公式线性化后再用线性计算方法好?以前论坛似乎也有讨论过。
非线性模型当然是用非线性方法拟合最为准确,线性化后再用线性方法拟合实为不得而为之的途径:非线性拟合相对难度大,需猜初值,线性化后计算简单结果稳定,等待。而当前随着算法的进化,直接非线性拟合已基本没什么难度了,因此没必要线性化后再拟合,误差有时会很大的,以一楼公式为例:ln(S)=k*ln(d)+A/T+B(ln()视为10为底的对数)
1:直接非线性拟合:S=10^(k*log(d)+A/T+B);
参数        最佳估算
----------        -------------
k        1.45869020759876
a        -1265.69453711369
b        0.157571128854058

2:线性化后拟合:SS=k*dd+A/T+B,其中:SS=log(S), dd=log(d)
参数        最佳估算
----------        -------------
k        1.43738644291883
a        -1243.99583085759
b        0.158217174436447

上面两组结果虽然相近但还是有误差的,理论上直接非线性拟合的结果为正确结果。
12楼2017-09-05 10:31:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 料峭春寒5 的主题更新
信息提示
请填处理意见