【发布时间】:2015-03-30 04:24:33
【问题描述】:
我是 matlab 的初学者。我有三个非线性方程
spdratio_fw = ( 1 + afw*(vc_fw)^b); spdratio_pa = ( 1 + aps*(vc_pa)^b); ind = (ddhv_fw*( 1 + afw*(vc_fw)^b) - ddhv_pa*( 1 + aps*(vc_pa)^b))/(ddhv_fw + ddhv_pa) ;
从以上三个方程中,我必须求解 afw、aps 和 b。
所以我写了命令并保存在 trial.m
function F = trial(Y)
afw = Y(1);
aps = Y(2);
b = Y(3);
spdratio_fw = 1.329;
spdratio_pa = 1.168;
ind = 1.312;
vc_fw = 3.2;
vc_pa = 0.76;
ddhv_fw = 20776.82;
ddhv_pa = 2536.54;
fA = spdratio_fw - ( 1 + afw*(vc_fw)^b);
fB = spdratio_pa - ( 1 + aps*(vc_pa)^b);
fC = ind - (ddhv_fw*( 1 + afw*(vc_fw)^b) - ddhv_pa*( 1 + aps*(vc_pa)^b))/(ddhv_fw + ddhv_pa) ;
F = [fA; fB; fC];
end
然后我运行了一个脚本
afw0 = 0.15; aps0 = 0.15; b0 = 1;
Y0 = [afw0; aps0; b0];
Y = fsolve(@trial, Y0);
result;
但我收到的错误:
???达到最大递归限制 500。利用 set(0,'RecursionLimit',N) 更改限制。意识到 超出可用堆栈空间可能会使 MATLAB 和/或您的 电脑。
==> optimget 中的错误
原因: 初始用户提供的目标函数评估失败。 FSOLVE 不能 继续。
我下达了命令:
trial
错误是:
??? Input argument "Y" is undefined.
Error in ==> trial at 2
afw = Y(1);
我不知道如何解决它。
【问题讨论】:
-
您认为您的问题为何以及如何不同?展示您的尝试,以便我们有一个帮助的起点。
标签: matlab