微分方程式があり、それを matlab の関数で解きたいとしますdsolve
が、最初にユーザーに初期値を尋ねる必要があり、ユーザーが入力した内容に従ってプログラムが答えを出すとします。
どうすればいいですか?
微分方程式があり、それを matlab の関数で解きたいとしますdsolve
が、最初にユーザーに初期値を尋ねる必要があり、ユーザーが入力した内容に従ってプログラムが答えを出すとします。
どうすればいいですか?
あなたが試した(あなたのコメントによると):
a=input('y(0) = ');
b=input('y''(0) = ');
c=input('input the first of the domain : ');
d=input('input the last of the domain : ');
sym x;
y=dsolve('D2y+Dy+y=cos(x)','y(0)=a','Dy(0)=b','x');
h=ezplot(y,[c d]);
出力を無視するため、sym x
は何もしません。安全に省略できます。
ここで、コマンドへのユーザー入力を取得するにdsolve
は、対応する文字列を作成するコードを記述する必要があります。
y=dsolve('D2y+Dy+y=cos(x)',['y(0)=' num2str(a)],['Dy(0)=' num2str(b)],'x');
または、フラグ およびとともに使用input
します。's'
['y(0)=' a]
ユーザー入力を取得する方法を知りたいですか? その後、input()
関数を使用することができます。例:
reply = input('Do you want more? Y/N [Y]: ', 's');
ここで、's'
パラメーターは、ユーザーの入力が評価されないことを意味します。つまり、文字は単に MATLAB 文字列として返されます。によって解決される式をユーザーに入力してもらいたい場合がありますdsolve
。次のようなことができます:
expression = input('Which expression do you want to solve?','s');
dsolve(expression)
ユーザーが を入力する'Dx = -a*x'
と、 が表示されますdsolve('Dx = -a*x')
。
詳細については、input()
Web ドキュメントを参照してください。