我必须绘制质量在 4 到 8 公斤之间的解决方案,我使用以下代码编写了该解决方案: 权重=linspace(4,8,100)
然后我使用 for 循环来找到该向量内权重的解,同时还声明变量 a,并猜测所需时间:
for z=1:length(weight)
a=(weight./(1360*pi)).^(1/3)
tguess=14400
timeinseconds=fsolve(@(t)cookingtimes(t,a),tguess)
timeinhours=timeinseconds/(60*60)
end
我之前提到的功能如下:
function F=cookingtimes(t,a)
k=1:22;
alpha=0.7*10^(-7);
F(1)=(2./(pi*0.464))*sum(((-1).^(k-1))./k).*sin(k*pi*0.464).*exp(((-(k.^2)).*(pi.^2).*((alpha.*t))./(a.^2)))-57/80
end
其中 F(1) 表示以下等式 ,它将等于 57/80。当等式收敛到这个值时,我选择了 22 的值,而不是加到无穷大。 r/a 等于 0.464,这就是为什么它出现在我的函数中。
运行此代码时,出现无法解决的错误。
Arrays have incompatible sizes for this operation.
Error in Homework1>cookingtimes (line 58)
F(1)=(2./(pi*0.464))*sum(((-1).^(k-1))./k).*sin(k*pi*0.464).*exp(((-(k.^2)).*(pi.^2).*.((alpha.*t))./(a.^2)))-57/80
Error in Homework1 (line 28)
timeinseconds=fsolve(@(t)cookingtimes(t,a),tguess)
Error in fsolve (line 264)
fuser = feval(funfcn{3},x,varargin{:});
原因: 初始目标函数评估失败。 FSOLVE 无法继续。
我生成的数组长度都是一样的,这就是为什么我很纠结这个问题。
任何帮助将不胜感激:)