Matlab:求解具有插值函数的线性方程的符号系统

时间:2013-11-05 19:58:04

标签: matlab symbolic-math equation-solving symbolic-computation

我一直在努力解决线性方程组,其中一些变量是其他变量的插值函数。我已经尝试将这些函数转换为符号函数,但这似乎不起作用。有没有人有不涉及曲线拟合数据的解决方法?我真的想保留原始数据集的准确性。我的数据集太大,无法在此代码示例中放置真实数据集,因此我提供了[0 100],[100 0],[0 100; 0 100]的占位数据集。

这是我的代码:

%  Setting up system of equations
syms FD ICE EM GEN
AM = [0 1 1 0 ;
0 1 0 0 ;
0 0 1 0;
0 0 0 1];

Tvec = [FD;ICE;EM;GEN]

eqs=  AM * Tvec  ==   Tvec %System of symbolic equations

% Adding the givens to my system of equations
eqs(5) = FD==1;
eqs(6) = ICE==4;
eqs(7) = interp2([0 100],[100 0],[0 100;0 100], ICE,EM)  % <-- this is where the problem is.  

results=solve(eqs)

1 个答案:

答案 0 :(得分:0)

我不知道你的系统是否只是一个例子,但可以通过检查而不使用solve来解决。您可以尝试在纸上写出它代表的内容,或者这样做:

syms FD ICE EM GEN
AM = [0 1 1 0
      0 1 0 0
      0 0 1 0
      0 0 0 1];
Tvec = [FD;ICE;EM;GEN]
eqs =  AM*Tvec == Tvec

返回

eqs =

EM + ICE == FD
    ICE == ICE
      EM == EM
    GEN == GEN

最后三个方程对你来说应该很傻,因为它们没有提供任何信息。您在第五和第六个等式中指定FD == 1ICE == 4。至少这些并非微不足道。实际上,除了您的第一个等式EM + ICE == FD之外,您还可以使用它们来解决EM == -3的事实。

接下来,你的第七个等式甚至不是一个等式,因为任何地方都没有==。此外,正如您所发现的,interp2不接受符号输入。许多Matlab函数都是如此。通常,如果在获得函数sym/thefuncname的帮助时没有在底部看到funcname,那么该函数没有符号数学的版本(或者您可以直接搜索{{ 1}})。如果您想评估help sym/funcname行,则表明您拥有所有必要的值:

interp2

返回 interp2([0 100],[100 0],[0 100;0 100],4,-3) ,表示它使用了外推法(请参阅帮助/ documentation)。

总而言之,我无法弄清楚你要做什么或为什么要使用插值。我建议在Symbolic Math toolbox上阅读更多内容,并找出问题所在。