"XXXX"は次の実​行ではより多くの入力​引数を必要とします。​というエラーについて

5 vues (au cours des 30 derniers jours)
HAGIWARA
HAGIWARA le 9 Nov 2019
Commenté : Yoshio le 16 Nov 2019
以下のエラーコードが出た場合の対処法を教えていただきたいです。
"XXXX"は次の実行ではより多くの入力引数を必要とします。
関数または変数 'x' が認識されません。
加えて, XXXX(x)の()の中身を変更するよう催促されました。
以下に使用したコードを添付させていただきます。
ご助力お願いいたします。
function F = A1_phiv_initial_value(x)
F(1) = x(1)*cos(2.0*pi*0.75) + x(3)*sin(2.0*pi*0.75) - x(2) * cos(2.0*pi*2.0909) - x(4) * sin(2.0*pi*0.7841) + (4.3719 * x(6)) / (4.3719 - 1.0)*sin(2.0*pi*0.375 + x(5)) - (1.0 / (10.7488 + 1.0));
F(2)= x(1) - x(2) * cos(2.0*pi*2.0909) + x(4) * sin(2.0*pi*2.0909) + (4.3719 * x(6)) / (4.3719 - 1.0)*sin(x(5)) - (1.0 / (10.7488 + 1.0));
F(3) = -2.0 * x(1) * sin(2.0 * pi*0.75) + 2.0 * x(3) * cos(2.0 * pi*0.75)- (-2.0909 * x(2) * sin(2.0 * pi*0.7841) + 2.0909 * x(4) * cos(2.0 * pi*0.7841) - (4.3719 * x(6)) / (4.3719 - 1.0)*cos(2.0 * pi*0.375 + x(5)));
F(4) = 2.0 * x(3) + 2.0909 *x(2) * sin(2.0*pi*2.0909) - 2.0909 * x(4) * cos(2.0*pi*2.0909) + (4.3719 * x(6)) / (4.3719 - 1.0)*cos(x(5));
F(5) = (10.7488 / (10.7488 + 1.0)) + x(6) * sin(x(5))*(4.3719 / (4.3719-1.0) - (10.7488 + 1.0))- (x(2) * cos(2.0*pi*2.0909) + x(4) * sin(2.0*pi*2.0909));
F(6) = (2.0*pi*10.7488 / (10.7488 + 1.0))*(1.0 - 0.375) + x(6) * (cos(2.0*pi*0.375 + x(5)) - cos(x(5)))*((4.3719 *x(6)) / (4.3719 - 1.0) - (10.7488 + 1.0))+ (x(2) / 2.0909)*(sin(2.0*pi*0.7841) - sin(2.0*pi*2.0909)) + (x(4) / 2.0909)*(cos(2.0*pi*2.0909) - cos(2.0*pi*0.7841));
fun = @A1_phiv_initial_value;
x0 = [0,0,0,0,0,0];
x = fsolve(fun,x0)

Réponse acceptée

Yoshio
Yoshio le 9 Nov 2019
Modifié(e) : Yoshio le 9 Nov 2019
'9.7.0.1216025 (R2019b) Update 1' では以下のコードを一つのファイルにして実行したところ問題無く動作しました。
optimizatino Toolboxはお持ちですか?
which fsolve
で確認できます。
また動作環境(OS, MATLABバージョン)もご確認ください。
加えて、ご質問については、
もご参照ください。
clear all;
fun = @A1_phiv_initial_value;
x0 = [0,0,0,0,0,0];
F = A1_phiv_initial_value(x0)
x = fsolve(fun,x0)
function F = A1_phiv_initial_value(x)
F(1) = x(1)*cos(2.0*pi*0.75) + x(3)*sin(2.0*pi*0.75) - x(2) * cos(2.0*pi*2.0909) - x(4) * sin(2.0*pi*0.7841) + (4.3719 * x(6)) / (4.3719 - 1.0)*sin(2.0*pi*0.375 + x(5)) - (1.0 / (10.7488 + 1.0));
F(2)= x(1) - x(2) * cos(2.0*pi*2.0909) + x(4) * sin(2.0*pi*2.0909) + (4.3719 * x(6)) / (4.3719 - 1.0)*sin(x(5)) - (1.0 / (10.7488 + 1.0));
F(3) = -2.0 * x(1) * sin(2.0 * pi*0.75) + 2.0 * x(3) * cos(2.0 * pi*0.75)- (-2.0909 * x(2) * sin(2.0 * pi*0.7841) + 2.0909 * x(4) * cos(2.0 * pi*0.7841) - (4.3719 * x(6)) / (4.3719 - 1.0)*cos(2.0 * pi*0.375 + x(5)));
F(4) = 2.0 * x(3) + 2.0909 *x(2) * sin(2.0*pi*2.0909) - 2.0909 * x(4) * cos(2.0*pi*2.0909) + (4.3719 * x(6)) / (4.3719 - 1.0)*cos(x(5));
F(5) = (10.7488 / (10.7488 + 1.0)) + x(6) * sin(x(5))*(4.3719 / (4.3719-1.0) - (10.7488 + 1.0))- (x(2) * cos(2.0*pi*2.0909) + x(4) * sin(2.0*pi*2.0909));
F(6) = (2.0*pi*10.7488 / (10.7488 + 1.0))*(1.0 - 0.375) + x(6) * (cos(2.0*pi*0.375 + x(5)) - cos(x(5)))*((4.3719 *x(6)) / (4.3719 - 1.0) - (10.7488 + 1.0))+ (x(2) / 2.0909)*(sin(2.0*pi*0.7841) - sin(2.0*pi*2.0909)) + (x(4) / 2.0909)*(cos(2.0*pi*2.0909) - cos(2.0*pi*0.7841));
end
実行結果
方程式が解かれました。
関数値のベクトルがゼロに近く
(関数の許容誤差値による測定)、
問題が正則として現れる (勾配による測定) ため、fsolve は完了しました。
<停止条件の詳細>
x =
-4.2435 -4.2205 3.1149 0.4730 -0.6943 -0.6295
  2 commentaires
HAGIWARA
HAGIWARA le 13 Nov 2019
親切なご回答に感謝いたします.
パスの確認をし修正した結果, 方程式を解くことができました.
ただ, この"問題が正則として現れる (勾配による測定) ため、fsolve は完了しました"というのは, 解が正常には導出されなかったということでしょうか?
Yoshio
Yoshio le 16 Nov 2019
停止条件の詳細を見てみると
<停止条件の詳細>
x =
-4.2435 -4.2205 3.1149 0.4730 -0.6943 -0.6295
方程式が解かれました。関数値の二乗和、r = 4.776923e-29 が
sqrt(options.FunctionTolerance) = 1.000000e-03 未満です。r の勾配の相対ノルム、9.076301e-14 が options.OptimalityTolerance = 1.000000e-06 未満です。
となっており、解の誤差とこの解の勾配も設定許容値内に入っているので正常終了と思います。

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur 非線形方程式系 dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!