左辺のサイズが 1x1 で右辺のサイズが 0x1 であるため、代入を実行できません。
    7 ビュー (過去 30 日間)
  
       古いコメントを表示
    
    hiroaki miyauchi
 2019 年 11 月 22 日
  
    
    
    
    
    コメント済み: hiroaki miyauchi
 2019 年 11 月 26 日
            左辺と右辺のサイズが異なるため、計算数値を行列に代入できない。
サイズを合わせようとreshape関数を使ったが、うまくいきません。
また、右辺のサイズが 0x1 であるというエラーメッセージの意味がよくわかりません。
よろしくお願いします。
N = 3;
syms r
x = zeros(N+1,N+1);
for i = 0:N
    for j = 0:N
        f = besselj(i,r);
        x(i+1,j+1) = vpasolve(f,r,[j*pi (j+1)*pi]);
    end
end
disp(x)
>> eignvalue
左辺のサイズが 1x1 で右辺のサイズが 0x1 であるため、代入を実行できません。
エラー: eignvalue (line 7)
        x(i+1,j+1) = vpasolve(f,r,[j*pi (j+1)*pi]);
0 件のコメント
採用された回答
その他の回答 (1 件)
  Shota Kato
      
 2019 年 11 月 25 日
        右辺のサイズが 0x1 であるというエラーメッセージの意味は,vpasolveによって解が求まっていない,ということです.
vpasolveの返す値は空のオブジェクトなので,行列の要素として代入することはできません.
これでいいかはわかりませんが,解が求まらないときはx(i+1, j+1)に他の値を代入することでプログラムは回るようになります.
N = 3;
syms r
x = zeros(N+1,N+1);
for i = 0:N
    for j = 0:N
        f = besselj(i,r);
        x_ = vpasolve(f,r,[j*pi (j+1)*pi]);
        if isempty(x_)
            x(i+1, j+1) = nan;
        else
            x(i+1,j+1) = x_;
        end
    end
end
disp(x)
>> eignvalue
    2.4048    5.5201    8.6537   11.7915
         0    3.8317    7.0156   10.1735
         0    5.1356    8.4172   11.6198
         0       NaN    6.3802    9.7610
参考
カテゴリ
				Help Center および File Exchange で 数値と精度 についてさらに検索
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

