What solution if the correction is I get

1 Ansicht (letzte 30 Tage)
ryohei yanagawa
ryohei yanagawa am 8 Apr. 2018
Kommentiert: ryohei yanagawa am 10 Apr. 2018
I want to get solution "integral[0,pi()/2](gcost),g=g(t)".
Please Where should I correct?
For g, I would like to input t function with user input.
1- syms t y g
2- prompt = 'g(t)';
3- g=input(prompt);
4- y=@(t,g)g.*cos(t);
5- q=integral(y,0,pi()/2)
ーーーーーーーーーーーー
error: test>@(t,g)g.*cos(t)
error: integralCalc/iterateScalarValued (line 314) fx = FUN(t);
error: integralCalc/vadapt (line 132) [q,errbnd] = iterateScalarValued(u,tinterval,pathlen);
error: integralCalc (line 75) [q,errbnd] = vadapt(@AtoBInvTransform,interval);
error: integral (line 88) Q = integralCalc(fun,a,b,opstruct);
error: test (line 5) q=integral(y,0,pi()/2)
>>

Akzeptierte Antwort

mizuki
mizuki am 8 Apr. 2018
Bearbeitet: mizuki am 8 Apr. 2018
現在の課題は y = g * cos(t) のときに ginput 関数でスカラ変数 g を入力して、yに関する積分 integral(y, 0, pi/2) を求めたい ということで間違いないでしょうか。
g は input 関数で既に数値変数として入力しているため、無名関数のハンドルにする必要がありません。以下のコードを test.m として保存されるとエラーを回避できます。
syms t y
prompt = 'g(t)';
g = input(prompt);
y = @(t) g.*cos(t);
q = integral(y,0,pi/2)
なお、この例では g は数値変数と仮定しているため、元々 syms でシンボリック変数として定義されていた g を削除しています。g はシンボリックということであれば変更が必要です。
なお、すばやく得たい回答を得る方法が以下にまとめてあります。ご参考まで。
  3 Kommentare
mizuki
mizuki am 10 Apr. 2018
Bearbeitet: mizuki am 10 Apr. 2018
1行ずつ実行してどこがおかしいかを確認しました。 input 関数で入力を得るところまでは問題ありませんが、y の式定義の行が
>> y = @(t) g .*cos(t)
y =
値をもつ function_handle:
@(t)g.*cos(t)
のようになり、g のシンボリック式を代入した場合
>> y = @(t) (t.^2+t+1).*cos(t)
y =
値をもつ function_handle:
@(t)(t.^2+t+1).*cos(t)
と異なる結果になっています。 この行を変更する必要があります。
無名関数を使用せずに計算してから matlabFunction 関数を使用して無名関数に直して integral を解くという以下の方法ではいかがでしょうか。(式として定義されているため、y も syms から削除しています。)
clear all;
syms t
prompt = 'g(t)';
g = input(prompt);
y = g .* cos(t)
y_anony = matlabFunction(y)
q = integral(y_anony,0,pi/2)
y を無名関数として定義したい場合は、無名関数として定義した後にシンボリック式に変換する方法もあります。
clear all
syms t
prompt = 'g(t)';
g = input(prompt);
y = @(t) g .*cos(t);
y_sym = sym(y);
y_anony = matlabFunction(y_sym)
q = integral(y_anony,0,pi/2)
ryohei yanagawa
ryohei yanagawa am 10 Apr. 2018
できました!
mizukiさん,ご説明していただきありがとうございました!
MATLABの勉強精進していこうと思います.
この度はありがとうございました!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu MATLAB におけるシンボリック計算 finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!