我有一个通用的等式
T = TR +(TS-TR)/(1+(一* H)^ N)^(1-1 / n)的
对于(h = 0,1,2,3),我有t = 2.000,1.6300,1.2311,1.1084。因此,有4个方程有4个未知数tr,ts,a,n
我在matlab中使用 “求解” 函数
s=solve('tr+(ts-tr)/(1+(a*0)^n)^(1-1/n)=2','tr+(ts-tr)/(1+(a*1)^n)^(1-1/n)=1.63','tr+(ts-tr)/(1+(a*2)^n)^(1-1/n)=1.2311','tr+(ts-tr)/(1+(a*3)^n)^(1-1/n)=1.1084')
,错误是
???使用==>时出错mupadmex MuPAD命令出错:奇点[ln];
在评估'numeric :: fsolve'
时==>中的错误sym.sym> sym.mupadmexnout在2018年 out = mupadmex(fcn,args {:});
==>中的错误在76处解决 [symvars,R] = mupadmexnout('symobj :: solvefull',eqns,vars);
我该怎么办?
答案 0 :(得分:0)
使用solve
功能时会出现问题。这仅适用于简单的方程式,最好使用fsolve
函数。由于我担心我正在为你做作业,我只会告诉你如何使用fsolve
做另一个例子。
假设您要解决
1 = x_1
1 = x_1 + x_2
-1 = x_1 + x_2 + x_3
-1 = x_1 + x_2 + x_3 + x_4
那么你首先需要做的是将这些写为等于0的方程
0 = x_1 - 1
0 = x_1 + x_2 - 1
0 = x_1 + x_2 + x_3 + 1
0 = x_1 + x_2 + x_3 + x_4 + 1
然后你需要编写一个带有向量x
的函数,x
的组件将代表x_1
,x_2
,x_3
和{ {1}}。函数的输出也将是一个向量,其组件应该是上述方程右侧的输出(参见下面的函数x_4
)。 fun
将调用此函数,以便为其提供正确值fSolve
的猜测,直到猜测正确为止。从来没有真正自己运行这个功能。这就是为什么它低于顶级功能。
然后通过x
创建此函数的函数句柄。您可以将fHandle = @fun
视为fHandle
的另一个名称,当我们计算fun
时,这与计算fHandle([1; 2; 3; 4])
相同。在此之后,您首先猜测正确的向量fun([1; 2; 3; 4])
,比如我们选择了x
。最后,我们将fHandle和xGuess传递给xGuess = [1; 1; 1; 1]
。
这是代码
fSolve