如何用MATLAB解决4个方程和4个未知数的系统?

时间:2013-11-14 07:30:04

标签: matlab

我有一个通用的等式

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);

我该怎么办?

1 个答案:

答案 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_1x_2x_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