function [U_s,Uadhesion,Ubending,Uion,constrain1,constrain2] = U_s(x)
global D rou E u0 u1 x1 x2 A B N F G
Nf = 1000;
t = linspace(0,x2,Nf);
s = linspace(0,x2,Nf);
yplus = 0.5*(u1-u0)/x2*(t+s)+u0;
for i = 1:N
yplus = yplus+x(i)*(sin(i*t/x2)+sin(i*s/x2));
end
V = @(t,s)A./(sqrt((t-s).^2+(yplus(t,s)).^2)).^12-B./(sqrt((t-s).^2+(yplus(t,s)).^2)).^6;
Uadhesion = rou^2*integral2(V,x1,x2,x1,x2);
报错: 输入参数的数目不足。
出错 U_s (第 24 行)
yplus = yplus+x(i)(sin(it/x2)+sin(i*s/x2));
在您的代码中,您在定义了 yplus 后,再次使用 yplus 作为函数参数传递给 V 函数,但是在这里您并没有给出 yplus 的参数。这可能是导致报错的原因之一。
另一个可能导致问题的原因是,您在调用 integral2 函数时,没有传递正确的函数句柄。在您的代码中,V 函数是一个匿名函数,接受两个参数 t 和 s,因此在调用 integral2 时,应该传递 V(t,s) 而不是 V。
正确的写法应该是这样的:
Uadhesion = rou^2 * integral2(@(t,s)V(t,s),x1,x2,x1,x2);
这样,我们就能正确地计算出积分值了。