matlab 中怎么解决下面的方程,未知数是abcde 怎么用最小二乘法做,

1个回答

  • 你的问题是不是有些问题,最后两个方程中的f应该为e吧

    问题不难,直接根据最小二乘原理构造目标函数,然后求导等于0,解方程组即可

    运行下面的的程序直接输出abcde

    syms a b c d e

    fun=(0.9989-(a+b+c))^2+(0.9986-(a-b+c))^2+(0.0041-(a+d))^2+(0.0020-(a+e))^2+(0.0051-(a-e))^2;

    da=diff(fun,a);

    db=diff(fun,b);

    dc=diff(fun,c);

    dd=diff(fun,d);

    de=diff(fun,e);

    S=solve([char(da),'=0'],[char(db),'=0'],[char(dc),'=0'],[char(dd),'=0'],[char(de),'=0'],'a,b,c,d,e');

    a=S.a,b=S.b,c=S.c,d=S.d,e=S.e

    运行结果:

    a =

    71/20000

    b =

    3/20000

    c =

    622/625

    d =

    11/20000

    e =

    -31/20000