Xu_PY 2021-02-06 22:30 采纳率: 50%
浏览 2122
已采纳

如何matlab或者python实现多元函数的非线性拟合。

比如z=f(x,y),给出(x,y,z)的多个数据点,然后怎么拟合出f函数,给出源码就更好了

  • 写回答

2条回答 默认 最新

  • 歇歇 2021-02-06 22:51
    关注

    matlab

    x1 = [1 2 3 4 5 6]';

    x2 = [.2 .4 .8 .9 1.1 2.1]';

    X = [x1 x2]; 

    f = [ 3.3079 6.6358 10.3143 13.6492 17.2755 23.6271]';

    objfcn = @(A,X)A(1)*x1 + x2.^(A(2));

    x0=1; 

    x0=(1)*[1;1];

    [vestimated,resnorm] = lsqcurvefit(objfcn,x0,X,f)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • 鹅毛在路上了 Matlab领域优质创作者 2021-02-06 22:41
    关注

    Python多项式拟合:

    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.arange(1, 22, 1)
    y = np.array([176.55823623919866, 175.82629227599108, 174.6682288122686, 174.1676016833001, 173.18851142144007, 171.50626507572986, 171.30220775004557, 171.36967661238003, 171.28415302420305, 171.28824729828153, 171.57034121168718, 172.33094464950744, 173.23238914855358, 173.55613816498442, 174.3453315452684, 175.8405706931801, 176.55279402689868, 176.61370282973544, 176.81582616485196, 177.02915557477107, 176.8786448208988])
    z1 = np.polyfit(x, y, 100) # 用3次多项式拟合
    p1 = np.poly1d(z1)
    print(p1) # 在屏幕上打印拟合多项式
    yvals=p1(x) # 也可以使用yvals=np.polyval(z1,x)
    plot1=plt.plot(x, y, '*',label='original values')
    plot2=plt.plot(x, yvals, 'r',label='polyfit values')
    plt.xlabel('x axis')
    plt.ylabel('y axis')
    plt.legend(loc=4) # 指定legend的位置,读者可以自己help它的用法
    plt.title('polyfitting')
    plt.show()
    plt.savefig('p1.png')
    

    https://blog.csdn.net/wayne6515/article/details/105004558

    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 怎么根据书上的例子完成这个问题呢?
  • ¥15 ECharts 增加Zoom,整行包括右边的Text一起滑动
  • ¥15 关于网上一个easyx制作的见缝插针小游戏(c++)
  • ¥15 开地址法双散列函数处理碰撞
  • ¥15 想问一下这个是什么情况 虚拟机Linux打不开了
  • ¥15 联通光猫掉注册了怎么重新注册上去
  • ¥15 关于unity开发steamvr程序遇到的问题
  • ¥60 求tc downloader的下载方式
  • ¥15 华为 快捷方式 手电筒 接口
  • ¥15 Qt6.5支不支持Android13开发啊