[解決済み] MATLAB: symからlogicalへの変換ができない
質問
ここで作成しているユーザー定義関数で問題が発生しています。私がやろうとしていることは、ある値を記号関数に代入し、その数値の答えを様々な目的で使用することです。具体的にはここです。
x = xo;
subst = subs(f,x);
while((n>i) && (subst > eps))
私のプログラムを実行すると、次のようなエラーが発生します。
>> sym_newtonRaphson(f,fdiff,1,1e-8,10)
Conversion to logical from sym is not possible.
Error in sym_newtonRaphson (line 8)
を使ってみました。
double(subs(f,x))
を使用しましたが、無駄でした。MuPADに関連する全く別のエラーが発生しているようです(
DOUBLE cannot convert the input expression into a double array.
)
以下は、プログラム全体です。
function [output] = sym_newtonRaphson(f,fdiff,xo,eps,n)
i = 0;
%initial iteration
x = xo;
subst = subs(f,x);
while((n>i) && (subst > eps))
x = x - (subs(f,x))/fdiff;
i = i+1;
subst = subs(f,x);
%fprintf('%f\t%f\t%f\t%f\t%f\t%f',i,alpha,f(
end
output = x;
end
何が間違っているのか、ご指摘いただけると幸いです。
どのように解決するのですか?
でやろうとしていることは
while
という表現は、以下のものと同等です。
logical(f)
ここで
f
は(シンボル値ではなく)シンボル関数です。
logical(sym('exp(1)') > 0)
は問題ありませんが
logical(sym('exp(f)') > 0)
は一般的にはありえないでしょう(参照
assume
). Matlabは記号変数を論理的(真と偽)な変数にキャストする方法がありません.これを行おうとするのは
ショートサーキット
AND
演算子
,
&&
は、シンボル変数ではサポートされていません。例えば
a = 1.5;
syms x;
% All of these will not generate errors
y1 = x > 1;
y2 = x > 1 & x < 2;
y3 = x > 1 & x < 2;
y4 = x > 1 & a < 2;
y5 = x > 1 & a > 2;
% These will result in errors
y2 = x > 1 && x < 2;
y3 = x > 1 && x < 2;
y4 = x > 1 && a < 2;
y5 = x > 1 && a > 2;
をプリントアウトする必要があります。
subst
で、それがシンボル値か変数を含まない関数であることを確認します(もし
argnames(subst)
は空のシンボル行列を返すので、大丈夫です)。を呼び出すと2つ目のエラーが発生します。
double
を意味するようです。
subst
は、実際にはまだ未知の変数を含む式です。もしそうであれば、他の変数で代用するか、仮定を使う必要があります (
こちら
のように、論理比較を行うことができます。
関連
-
[解決済み】MATLABの&と&&の違いは何ですか?
-
[解決済み] MATLAB: symからlogicalへの変換ができない
-
[解決済み] matlabで関数ハンドルを使った操作
-
[解決済み] Matlabで列ベクトルを反復処理する方法は?[重複].
-
[解決済み] エラー: 等号の左側にある式は代入の対象として有効ではありません Matlab
-
[解決済み] matlabでrandnを持つ確率変数の範囲はどうなっていますか?
-
[解決済み] Matlabによる最急降下法の実装
-
[解決済み] エラー「Improper assignment with rectangular empty matrix」の解決方法を教えてください。
-
[解決済み] Matlab: 小図形ウィンドウでYラベルが表示されない
-
[解決済み] 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のfprintfを使用してテーブルを作成する
-
[解決済み] Matlab. 位置2のインデックスが配列の境界を越えています(1を超えてはいけません)。
-
[解決済み] Matlabで矢印を描くには?
-
[解決済み] Matlabの角括弧と中括弧の違い?
-
[解決済み] MATLAB : 周波数分布
-
[解決済み] 行列の行にノルム関数を適用する - Matlab [duplicate]
-
[解決済み] 入力引数が多すぎる Matlab ode45
-
[解決済み] MATLABでヒストグラムを正規化する方法は?
-
[解決済み] MATLABでiとjを変数として使用する