Scilab fsolve返回错误的参数(错误98)

时间:2018-03-26 22:16:29

标签: function equation solver scilab nonlinear-functions

我正在尝试运行fsolve以解决解离方程,但我一直收到此错误。我将其追踪到x(1)^(1/2)项(删除平方根没有产生错误),但我无法找到解决我需要的正确方程的方法。代码如下。

T = 2000
Kp = exp(-deltaG/(Ru*T))

function [f]=func(x)
    f(1) = 2-x(1)*4 / (3*x(1) - 1)*(x(1))^(1/2) - Kp
endfunction

x0 = [1]
[x,f_x] = fsolve(x0,func)

编辑:更多请求的信息

错误是

  

! - scilab参数函数返回的错误98变量是   不正确

Ru是气体常数8.315

DeltaG-135643

Kp3.489e-3

这是一本书的例子,x应该产生0.3334

什么样的解决了这个问题,我从5.5更新了scilab到版本6.0.1。问题在于,根据初始猜测x0x的值变得非常荒谬,而x0必须非常接近真正的答案,否则会使计算失败。< / p>

此外,我无法访问Maple,我的另一种选择是MATLAB

1 个答案:

答案 0 :(得分:0)

使用像xcas或Maple这样的符号微积分软件可以符号解决你的方程式 有3个解决方案:

  s1=((1/4)*t1+(1/4)*(Kp-2)^2/t1-(1/4)*Kp+1/2)^2

  s2=(-(1/8)*t1-(1/8)*(Kp-2)^2/t1-(1/4)*Kp+1/2+(1/2*%i)*sqrt(3)*((1/4)*t1-(1/4)*(Kp-2)^2/t1))^2

  s3=(-(1/8)*t1-(1/8)*(Kp-2)^2/t1-(1/4)*Kp+1/2-(1/2*%i)*sqrt(3)*((1/4)*t1-(1/4)*(Kp-2)^2/t1))^2

其中

  t=sqrt(-Kp*(Kp-4)*(Kp-2)^2)
  t1=(-(Kp-2)*(Kp-2*sqrt(2))*(Kp+2*sqrt(2))+4*t)^(1/3);

取决于Kp值,某些解决方案可能很复杂。