【问题标题】:MATLAB, subfunctions and an unknown variableMATLAB、子函数和未知变量
【发布时间】:2017-02-26 03:13:13
【问题描述】:

基本上,我正在尝试使用 fplot 绘制两个函数对数组 [1,40] 的误差。

错误功能很明显:E = (V2-V1)/V2 因此我将使用fplot(E,1,40)

但是,问题是函数是根据P 而不是V 定义的,我无法代数求解V 的方程

公式:

P1 = (RT)/(V-b) - x1/(V(V+b))

P2 = (RT)/(V-b) - x2/(V(V+b))

其中x1x2 特定于每个方程,并且所有其他常数都已定义。

我可以使用solve() 函数或fzero 和for 循环来查找V 的值,因为P 的值在1 到40 之间变化?

当在一个主函数下定义多个subfunctions 时,我也对fplot 函数的工作方式感到困惑。

【问题讨论】:

    标签: matlab


    【解决方案1】:

    正如你所说,这两个方程都隐含在 V 中。如果你想在改变 P 时绘制它们的误差,我建议你将它们写成多项式形式(这是范德华状态方程,对吗?)。

    例如,您可以这样做:

    syms RT V b x1 x2 P1 P2
    f = (RT)/(V-b) - x1/(V*(V+b))-P1
    sol=solve(f,V)
    

    它会给你

    sol =
     root(P1*z^3 - RT*z^2 - P1*b^2*z - RT*b*z + x1*z - b*x1, z, 1)
     root(P1*z^3 - RT*z^2 - P1*b^2*z - RT*b*z + x1*z - b*x1, z, 2)
     root(P1*z^3 - RT*z^2 - P1*b^2*z - RT*b*z + x1*z - b*x1, z, 3)
    

    通过求解这个多项式(例如,使用函数polysolve)并选择正确的根,您可以获得每个P 的V 值,然后您可以计算E 并绘制数组的结果。

    【讨论】:

      猜你喜欢
      • 2023-03-08
      • 2013-09-27
      • 1970-01-01
      • 2021-11-22
      • 2012-04-15
      • 2013-02-24
      • 1970-01-01
      • 1970-01-01
      • 2014-04-06
      相关资源
      最近更新 更多