我正在尝试运行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
。
Kp
是3.489e-3
。
这是一本书的例子,x
应该产生0.3334
。
什么样的解决了这个问题,我从5.5更新了scilab到版本6.0.1。问题在于,根据初始猜测x0
,x
的值变得非常荒谬,而x0
必须非常接近真正的答案,否则会使计算失败。< / p>
此外,我无法访问Maple,我的另一种选择是MATLAB
答案 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值,某些解决方案可能很复杂。