0

Matlab で y=1/x のプロットを作成したい場合は、次のコードを使用できます。

X=-10:0.1:10;
Y=1./(X);
plot(X,Y);

しかし、シンボリック関数を使用して区別できるようにしたいので、次のコードがあります。

syms x;
f(x) = 1./x;

X=-10:0.1:10;
Y=f(X);
plot(X,Y);

残念ながら、ここでエラーが発生します

MuPAD コマンドのエラー: ゼロ除算。[_パワー]

ある時点で 1 を 0 で除算しようとするので、これは合理的です。Infフォームの通常の計算と同様に、ゼロ除算が発生したときに返されるようにするにはどうすればよいa=6/0;でしょうか?

4

1 に答える 1

1

このezplot関数を使用して、シンボリック関数と式を直接プロットできます。

syms x;
f(x) = 1/x;
ezplot(f,[-10 10]);

式を数値的に評価できるものに変換したい場合は、 を使用matlabFunctionしてシンボリック関数を関数ハンドルに変換できます。

syms x;
f(x) = 1/x;
X = -10:0.1:10;
F = matlabFunction(f);
plot(X,F(X));

MuPAD が を返さないinfinityのはなぜ1/0ですか? 浮動小数点ではこれは明確に定義されていますが、数学ではゼロ除算は定義されていません。MuPAD で完全に関数を評価する場合は、Matlab から基になる関数を呼び出してエラーを処理する必要があります。

于 2015-09-04T19:08:49.983 に答える