[解決済み] matlab のプロットベクトルは同じ長さでなければなりません。
2022-02-17 20:28:05
質問
以下の境界値問題を解くプログラムを書いています。 シューティングバイセクション法 :
y''-y+x=0, y(0)=y(1)=0.
まず、これを一次方程式の系に変換して、次のように設定します。
y'=z
で、dydtにベクトル(y',z')を表現させ、スクリプトファイルを作成します。
function dydt=shoot(t,y)
dydt=[y(2);y(1)-t]
end
これで、次のようなコードを思いついた。
clear
clc
a=0;
b=1;
alpha=0;
beta=0;
s(1)=(beta-alpha)/(b-a);
s(2)=-1
[G,Y]=ode113('shoot',[a b],[alpha;s(1)]);
[G,Z]=ode113('shoot',[a b],[alpha;s(2)])
hold
tol=1e-4
u=s(1);
v=s(2);
while abs(u-v)>tol;
s(3)=(u+v)/2;
[G,W]=ode113('shoot',[a b],[alpha;s(3)]);
if W(end,1)>0
u=s(3);
else
v=s(3);
end
end
[G,W]=ode113('shoot',[a b],[alpha;s(3)])
plot(G,Y(:,1),'-o', G,Z(:,1),'-o',G,W(:,1),'-o')
それからプログラムを実行すると、MATLABは私がplot引数を間違って使っていると言いました、plotベクトルは同じ長さでなければなりません。この問題をどのように修正したらよいのか全くわかりません。どんな助けでも感謝します。
どのように解決するのですか?
あなたの
Y
,
Z
と
W
の出力は、異なるランから
ode113
. 出力された無党派層の変数
G
が異なるため、それぞれのランから
ode113
は適応型ソルバーです。これを解決する方法は2つあります。まず
G
を別の変数として出力します。
...
[Gy,Y]=ode113('shoot',[a b],[alpha;s(1)]);
[Gz,Z]=ode113('shoot',[a b],[alpha;s(2)]);
...
[Gw,W]=ode113('shoot',[a b],[alpha;s(3)]);
plot(Gy,Y(:,1),'-o', Gz,Z(:,1),'-o',Gw,W(:,1),'-o');
または、固定された出力点のセットを指定することもできます。
に2点以上指定することで
tspan
(の第2引数)。
ode113
):
...
tspan = linspace(a,b,50);
[G,Y]=ode113('shoot',tspan,[alpha;s(1)]);
[G,Z]=ode113('shoot',tspan,[alpha;s(2)]);
...
[G,W]=ode113('shoot',tspan,[alpha;s(3)]);
plot(G,Y(:,1),'-o', G,Z(:,1),'-o',G,W(:,1),'-o');
Matlabのバージョンが10年以上前のものでない限り、積分関数も指定する必要があります。
shoot
を経由して
関数ハンドル
を、文字列ではなく、すなわち
[Gw,W]=ode113(@shoot,[a b],[alpha;s(3)]);
関連
-
[解決済み】MATLABの&と&&の違いは何ですか?
-
[解決済み] ある行列から固有ベクトルの異なる解を得ることができるでしょうか?
-
[解決済み] matlabで関数ハンドルを使った操作
-
[解決済み] 演算子のオペランドは、論理スカラー値に変換可能でなければならない。
-
[解決済み] Matlab: 逆コサイン(acos)の完全解を返す
-
[解決済み] MATLABでカラーバーのスケールを制御する
-
[解決済み] matlab で "カラーマップ" プロットを作成するにはどうすればよいですか?
-
[解決済み] なぜSIFTはMatlabで利用できないのですか?
-
[解決済み] エラー「Improper assignment with rectangular empty matrix」の解決方法を教えてください。
-
[解決済み] Matlabでベクトルを表示(印刷)するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】MATLABの&と&&の違いは何ですか?
-
[解決済み] Matlabで矢印を描くには?
-
[解決済み] matlabでrandnを持つ確率変数の範囲はどうなっていますか?
-
[解決済み] Matlab: 逆コサイン(acos)の完全解を返す
-
[解決済み] ベクトルにおける四分位値の0.25から0.75までの数値 MATLAB
-
[解決済み] エラー「Improper assignment with rectangular empty matrix」の解決方法を教えてください。
-
[解決済み] MatlabのA=[x; y']は何を意味するのですか?
-
[解決済み] 1変数に対するfzeroとfsolveの差分
-
[解決済み] matlabでchi2gof関数を理解する
-
[解決済み] Matlab - 収束率を計算する