0

fsolve方程式の変数の1つに数値の行列があるため、matlabを実行すると、行列を取得したいのですが、代わりにスカラーを取得したいと考えています。for ループも試してみましたが、これによりサイズに関するエラーが発生したため、解決策ではありません。私が間違っていることについてのフィードバックを得るために、コードを含めています。

z=0.1;
bubba =[1 1.5 2];
bubba = bubba';

 joe = 0:0.1:1.5;
 joe = repmat(joe,3,1);
 bubba = repmat(bubba,1,length(joe));
 for x=1:1:16
 eqn0 = @(psi0) (joe.-bubba.*(sqrt((psi0+z))));
 result0(x) = fsolve(eqn0,0.1,options);

 end

後でプロットするために joe 変数が必要になるので、コードのその部分を切り取ったことに注意してください。

4

2 に答える 2

1

私のコメントを詳しく説明するには:

psi0ソルバーの独立変数です。の 2 番目の引数としてスカラーを使用する場合、その次元を [1 1] に設定fsolve(eqn0, 0.1, options);psi0ます0.1。結果はスカラー (関数を最小化する値) になります。

0.1 * sqrt(psi0 + 0.1)

z=0.1 を設定したため

何も変更していないため、ループの反復ごとに -0.1 の値が返されるはずです。現在、どの要素を行列にしたいかを判断するのに十分な情報がありません。特に、式にeqn0行列の乗算が含まれているため、結果の次元がどのようになるかを知るのは困難です。

この最初の回答を出発点として使用して、適切に回答できるように質問を修正してください!?

于 2013-04-23T22:50:05.970 に答える