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

最後の 3 つの方程式は、何の情報も提供しないため、ばかげているように見えるはずです。5 番目と 6 番目の方程式でFD == 1とを指定しましたICE == 4。これらは少なくとも自明ではありません。実際、最初の方程式 とともに、EM + ICE == FDそれらを使用して という事実を解くことができますEM == -3

次に、7 番目の方程式はどこにもないため、方程式ではありません==。さらに、発見したように、interp2シンボリック入力を受け入れません。これは多くの Matlab 関数に当てはまります。sym/thefuncname一般に、関数のヘルプを取得したときに下部にリストが表示されない場合funcname、その関数にはシンボリック数学のバージョンがありません (または直接検索できますhelp sym/funcname)。行を評価する場合interp2は、必要な値がすべて揃っているように見えます。

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

これはNaN、外挿を使用したことを示します (ヘルプ/ドキュメントを参照)。

全体として、あなたが何をしようとしているのか、なぜ補間を使用しているのかわかりません。Symbolic Math ツールボックスの詳細を読み、問題が実際に何であるかを理解することをお勧めします。

于 2013-11-14T22:15:30.893 に答える