永发信息网

matlab 隐函数求解出来结果很诡异,想用 fminbnd 求解 最小值,错误,具体程序如下

答案:2  悬赏:0  手机版
解决时间 2021-03-04 22:13
  • 提问者网友:不要迷恋哥
  • 2021-03-03 21:42
%使用for 循环是由于有好几层的板需要进行校核……%
for i=1:n

stress1(i)=stress12(1,1,i);
stress2(i)=stress12(2,1,i);
tao(i)=stress12(3,1,i);
end
%(这就是一个stress1(i),stress2(i),tao(i)是三个含有 符号Nx 和 Z 的表达式)%
F=stress1.^2/Xt^2-stress1.*stress2/Xt^2+stress2.^2/Yt^2+tao.^2/S^2-1;
%Xt Yt S 为数值,材料常数%
F_Nx=[];
Nxmin=[];
for i=1:n
jie=solve(F(i),Nx);%运行后可以看到jie里有值,但系数太诡异%
[fz,fval]=fminbnd(jie,z(i),z(i+1)); %这一句一直报错,错误提示见后%
fzmin=[fzmin fz ];
Nxmin=[Nxmin fval];
end

错误提示:
??? Error using ==> fcnchk at 103
If FUN is a MATLAB object, it must have an feval method.

Error in ==> fminbnd at 183
funfcn = fcnchk(funfcn,length(varargin));

Error in ==> composites at 311
[fz,fval]=fminbnd(jie,z(i),z(i+1));
最佳答案
  • 五星知识达人网友:woshuo
  • 2021-03-03 23:19
1、最主要的问题在于,你的jie是sym对象,不能用于fminbnd这类数值方法的优化程序。可以改成
[fz,fval]=fminbnd(inline(char(jie(i)),z(i),z(i+1));

2、由于你现在的条件中,Xt、Yt、S以及z的值都没给出,我随便指定的值,虽然可以运行,但算出来的结果没什么意义。

希望对你有帮助,有问题可追问。
全部回答
  • 1楼网友:北城痞子
  • 2021-03-04 00:35
你好! 最主要的问题在于,你的jie是sym对象 我的回答你还满意吗~~
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯