0

我一直在尝试求解一个线性方程组,其中一些变量是其他变量的插值函数。我尝试将这些函数转换为符号函数,但这似乎不起作用。有没有人有不涉及曲线拟合数据的解决方法?我真的很想保留我的原始数据集以确保准确性。我的数据集太大,无法在此代码示例中放入真实的数据集,因此我提供了 [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)
4

1 回答 1

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,则该函数没有符号数学版本(或者您可以直接搜索help sym/funcname)。如果您想评估该interp2行,您似乎拥有所有必要的值:

 interp2([0 100],[100 0],[0 100;0 100],4,-3)

它返回NaN表明它使用了外推(参见帮助/文档)。

总而言之,我无法弄清楚您要做什么或为什么要使用插值。我建议阅读更多关于符号数学工具箱的内容,并找出你的问题到底是什么。

于 2013-11-14T22:15:30.893 回答