发布网友 发布时间:2022-05-04 15:14
共1个回答
热心网友 时间:2022-06-23 10:48
假设之前a,b,c,d,e,x,都已经是赋好值的等长度的向量追答首先,polyval是一matlab内置的多项式函数
ployval(g,x),当g的长度是6的时候,就是一个五次多项式相当于你的f(x)
而fun是一个自定义的函数,对应于求和式子里面括号里的内容
由于a b c d e x值已知道,fun就是一个g的函数
由于输入的都是356行的数列,只要给以个g是长度六的输入,就会得到356长度的输出
对应于每一个ai,bi,ci....
也就是
fun i = ai-1134*polyval(g,xi)-bi)./(ci-di.*polyval(g,xi))-ei
共有356个
而lsqnonlin是非线性最小二乘法拟合,
它会自己迭代改变参数以使得 sum ((fun i)^2) 的值最小
所以
g=lsqnonlin(fun,[1 1 1 1 1 1],[],[],optimset('TolFun',3.1152e-5));
就会找出合适的g,使得 sum ((fun i)^2) ,[1 1 1 1 1 1]是个g赋的初值
而用optimset('TolFun',3.1152e-5)控制误差,使得误差<3.1152e-5的时候停止
最后就求出的g就等价于你问题的解