查看: 181|回复: 2|关注: 0

[未答复] 请问 用piecewise做分段函数时报错 symengine

[复制链接]

新手

5 麦片

财富积分


050


2

主题

4

帖子

0

最佳答案
发表于 2018-12-7 11:09:22 | 显示全部楼层 |阅读模式
  1. [/size][/backcolor][/color][color=#999999][size=12px]p=polyfit(3*U1+U2,(3*U1+U2).*I2,15)q=polyfit(3*U1,(3*U1).*I1,15)

  2. syms x
  3. f1=poly2sym(p,x)
  4. f2=poly2sym(q,x)
  5. digits(20)
  6. xj=vpasolve(f1==f2,x,[30,300]);
  7. f1=matlabFunction(f1);
  8. yj=f1(xj);
  9. hold on
  10. x=0:0.1:300
  11. plot(x,subs(f1,x))
  12. plot(x,subs(f2,x))
  13. plot(xj,yj,'*')
  14. plot(3*U1+U2,(3*U1+U2).*I2,3*U1,(3*U1).*I1)

  15.   syms x
  16. cc= piecewise([0<x<xj,f2],[x>xj,f1])
  17. x=0:10:300
  18. plot(x,subs(cc,x))

  19. hold off[/size][/color][color=#999999][backcolor=rgb(242, 242, 242)][size=12px]
复制代码





请问各位大神 ,以上代码把四组数组 两两拟合成 函数多项式 ,然后找到两函数曲线的交点
并打算,分段函数表达(x<交点,取函数1,x》交点,取函数2)。。但运行报如下错误,请问为什么?



错误使用 mupadengine/feval (line 163)
The first argument must be a condition.


出错 sym/piecewise (line 49)
pw = feval(symengine, 'piecewise', lists{:}, 'ExclusiveConditions');

新手

5 麦片

财富积分


050


2

主题

4

帖子

0

最佳答案
 楼主| 发表于 2018-12-7 11:10:30 | 显示全部楼层
自顶 顶~!!

新手

5 麦片

财富积分


050


2

主题

4

帖子

0

最佳答案
 楼主| 发表于 2018-12-7 11:12:19 | 显示全部楼层
顶顶!!!  拟合时polyfit(x,y,n)最高阶数n 小于9 时,程序运行没问题 ,大于9阶就报如上错误,为什么呢??   
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

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