matlab fzero的使用问题

我在使用fzero时之前找function[dP]=Kfun(K)关于K的零点时可以用K=fzero(@Kfun,[0,1])实现,之后需要找function[dP]=K... 我在使用fzero时之前找function [dP]=Kfun(K)关于K的零点时可以用K=fzero(@Kfun,[0,1])实现,之后需要找function [dP]=Kfun(P, V, A, J, K)关于K的零点,其中PVAJ是在上一级程序中用户输入的量,但我发现这四个量虽然在上一级方程中已知,但依旧会报错Undefined function or variable 'V'之类的错。请问该如何实现我想要的功能?
%--------------------------------------------------
下面是可以实现的:
function dP=Kfun(K);
Ak=0;
Vk=200;
Pk=500000;
Jk=1;
T10=sqrt(Vk/Jk);
P0=2*Jk*T10^3;
if P0>Pk
display 'Pk is smaller thAk the position at K0';
dP=1000000;
elseif K==1
if Vk==0
T1=(Pk/(4*Jk))^(1/3);
dP=1000000;
else
dP=100000000;
end
else
T1=sqrt(Vk/(Jk*(1-K^2)));
T2=K*T1;
P=Jk*T1^3+Jk*T2^3+2*Vk*T2;
dP=P-Pk;
end
%------------------------------------------------------------------
下面是无法实现的:
function dP=Kfun(Pk,Vk,Ak,J,K);
T10=sqrt(Vk/Jk);
P0=2*Jk*T10^3;
if P0>Pk
display 'Pk is smaller thAk the position at K0';
dP=1000000;
elseif K==1
if Vk==0
T1=(Pk/(4*Jk))^(1/3);
dP=1000000;
else
dP=100000000;
end
else
T1=sqrt(Vk/(Jk*(1-K^2)));
T2=K*T1;
P=Jk*T1^3+Jk*T2^3+2*Vk*T2;
dP=P-Pk;
end
展开
 我来答
  • 你的回答被采纳后将获得:
  • 系统奖励15(财富值+成长值)+难题奖励10(财富值+成长值)+提问者悬赏15(财富值+成长值)
李修灵
2015-01-22 · TA获得超过287个赞
知道小有建树答主
回答量:87
采纳率:100%
帮助的人:72.4万
展开全部
你可以试试这样设置函数句柄。仍然用你定义的函数function [dP]=Kfun(P, V, A, J, K)

现在假设你已经设置好了P,V,A,J的值(上一级已经输入)

求0点的表达式这么写:

K = fzeros(@(K)Kfun(P,V,A,J,K), K0); % 其中K0是初值

原因:
1) function [dP]=Kfun(P, V, A, J, K) 定义的函数句柄 @Kfun 实际等价于
function_handle = @(P,V,A,J,K)Kfun(P,V,A,J,K) 自变量共5个,所以fzero不知道你要算K
2) function_handle = @(K)Kfun(P,V,A,J,K) 相当于你固定了P,V,A,J四个参数,留下K做唯一一个自 变量。
形式如@(自变量1, 自变量2 ...)函数名(参数1, 参数2, ..., 自变量1,自变量2,...)
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式