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

8 次查看(过去 30 天)
HAGIWARA
HAGIWARA 2019-11-9
评论: Yoshio 2019-11-16
以下のエラーコードが出た場合の対処法を教えていただきたいです。
"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)

采纳的回答

Yoshio
Yoshio 2019-11-9
编辑:Yoshio 2019-11-9
'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 个评论
HAGIWARA
HAGIWARA 2019-11-13
親切なご回答に感謝いたします.
パスの確認をし修正した結果, 方程式を解くことができました.
ただ, この"問題が正則として現れる (勾配による測定) ため、fsolve は完了しました"というのは, 解が正常には導出されなかったということでしょうか?
Yoshio
Yoshio 2019-11-16
停止条件の詳細を見てみると
<停止条件の詳細>
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 未満です。
となっており、解の誤差とこの解の勾配も設定許容値内に入っているので正常終了と思います。

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 ソルバー出力と反復表示 的更多信息

Community Treasure Hunt

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

Start Hunting!