找回密码
 注册
Simdroid-非首页
查看: 129|回复: 2

怎样将拟合函数转化成多项式

[复制链接]
发表于 2011-7-17 23:22:05 | 显示全部楼层 |阅读模式 来自 安徽合肥
本帖最后由 alenku 于 2011-7-24 16:29 编辑

大家好,一个问题:
一组转速与功率的测试数据按5次方拟合,得出多项式系数A_Pe,再转化成多项式Pe方程,从而按功率与转矩的转化关系求得转矩的方程T,问这个时候怎样求出方程T的多项式系数出来?

  1. %下面是我编的程序,结果有错,请指正
  2. clc
  3. clear
  4. %拟合功率曲线
  5. n0=[1500 2000 2500 3000 3000 3500 3950 4000 4500 5000 5500 6000 6150];%试验转速测量点(r/min)
  6. Pe0=[19.8 28.72 37.47 47.01 47.1 56.87 65.09 65.66 72.59 81.97 88.61 93.87 94.72];%对应转速下功率(kW)
  7. A_Pe=polyfit(n0,Pe0,5);];%5次方拟合,求得多项式系数
  8. syms n%定义转速n为变量
  9. Pe=poly2sym(A_Pe,'n');];%转化成多项式
  10. T=9550.*Pe./n;%求转矩方程
  11. A_T=sym2poly(T)%求转矩方程的多项式系数
复制代码

结果:
  1. Warning: Polynomial is badly conditioned. Remove repeated data points
  2. or try centering and scaling as described in HELP POLYFIT.
  3. (Type "warning off MATLAB:polyfit:RepeatedPointsOrRescale" to suppress this warning.)
  4. > In D:\MATLAB6p5\toolbox\matlab\polyfun\polyfit.m at line 75

  5. T =

  6. 5249781316426995/549755813888/n*(-8680719136116585/162259276829213363391578010288128*n^5+5024698856262647/4951760157141521099596496896*n^4-2316740582102601/302231454903657293676544*n^3+2062438286148859/73786976294838206464*n^2-1072631474575111/36028797018963968*n+6426375114653675/281474976710656)

  7. ??? Error using ==> sym/sym2poly
  8. -45571877133935132398251961212075/89202980794122492566142873090593446023921664*n^4+26378570176279735097433320955765/2722258935367507707706996859454145691648*n^3-12162381422930435369657816113995/166153499473114484112975882535043072*n^2+10827349980907992408912576048705/40564819207303340847894502572032*n-5631080674635955042912275521445/19807040628566084398385987584+33737064009260250867817845956625/154742504910672534362390528/n is not a polynomial.
复制代码

请问怎样才能求得方程T的多项式系数?

注:MATLAB版本:6.5
发表于 2011-7-18 00:51:52 | 显示全部楼层 来自 北京
Simdroid开发平台
本帖最后由 bainhome 于 2011-7-18 00:59 编辑

提如下建议:
1.这样的结果看起来很累,不妨用:
  1. digits(4);
  2. vpa(Pe)
复制代码
这样的类似方式调整显示结果形式;
2.6.5下似乎也有cftool可以进行GUI方式的拟合结果显示,比代码形式直观;
3.出错结果最后一行提示十分明确:T不是多项式,因为用拟合多项式除以自变量n,原常数项变为倒数,所以自然不会存在“多项式系数”,sym2poly当然无法求得结果。
4.就此例而言,这个非线性的转矩方程系数其实就是拟合多项式系数和9550的乘积,不需要用sym2poly弄得太复杂。
5.结果说明这个方程从数学角度5次拟合极其不理想,最高次项达到10^-17次量级,可以想象其对震荡的敏感:因此,这应该是一次失败的拟合。从图形看,其他拟合方式结果会好些。下面是随便拟合的一组结果
  1. General model Gauss1:     f(x) =  a1*exp(-((x-b1)/c1)^2)Coefficients (with 95% confidence bounds):       a1 =       95.08  (92.17, 97.99)       b1 =        6563  (6258, 6867)       c1 =        4189  (3898, 4481)
  2. Goodness of fit:  SSE: 14.42  R-square: 0.998  Adjusted R-square: 0.9976  RMSE: 1.201
复制代码

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2011-7-19 22:33:16 | 显示全部楼层 来自 安徽芜湖
2# bainhome

谢谢bainhome
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-6 10:43 , Processed in 0.047327 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表