2

私はmatlabの初心者で、現在matlabで数学関数を解く方法を探しています。

それは私が欲しいものです、私は関数 f(x)=x^2+2x+1、ここで x=2 を解きたいです。x^2+2x+1 と 2 を入力として取り、出力を表示したいと思います。

このリンクから、数学関数を解く方法を見ました。リンクで利用可能な手順は次のとおりです。

>>f = @(x) 2*x^2-3*x+4;
>>f(3)
ans = 13

そこで、スクリプトに次の部分を書きました。

F=input('enter function: ','s');
v = input('parameter: ');
f=@(x)F;
disp(f(v));

入力として x+1 と 3 を指定すると、得られる ans は x+1 になります。この問題を解決するには?

前もって感謝します。

4

1 に答える 1

3

あなたのF変数は、単に言う文字列"x + 1"です。数値を取得するには、この文字列を関数として解釈するように matlab に依頼する必要があります。

そうする1つの方法は、eval

F = input('enter function: ', 's' );
v = input('parameter: ');
myfun = sprintf('@( %s ) %s', v, F ); % a string
f = eval( myFun ); % interpret string as a command
f( 3 ), % do the math - evaulate F(3)

編集、 以下のコメントに基づく明確化:
上記の解決策はF、数式を表す入力文字列がユーザーが選択した変数を持っている可能性があることを前提としています (つまり、未知数は である必要はなく'x'、 である可能性があります'y') 'a'。 、vこの情報を格納する文字です。

F常に に依存し'x'、目的の出力がF(v)数値vの場合、次の変更が必要です。

myfun = sprintf('@(x) %s', F );
f = eval(myfun);
F_of_v = f( v )
于 2013-08-20T05:33:40.580 に答える