为什么我在尝试使用 fsolve 查找函数的解决方案时收到错误消息?

问题描述 投票:0回答:0

我必须绘制质量在 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) 表示以下等式 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 无法继续。

我生成的数组长度都是一样的,这就是为什么我很纠结这个问题。

任何帮助将不胜感激:)

function matlab syntax-error
© www.soinside.com 2019 - 2024. All rights reserved.