FID = fopen('result.txt','a'); %定义一个分段函数 function f = fc(r) %C-C pair R = 1.85; D = 0.15; a = R-D; b = R+D; if r <= a f = 1; elseif r >= a && r <= b f = 1/2 - 1/2.*sin(pi.*(r-R)/2.*D); elseif r >= b f = 0; end end D0 = 6; r0 = 1.39; beta = 2.1; S = 1.22; Vr = D0/(S-1).*exp(-sqrt(2.*S).*beta.*(r-r0)); Va = (D0.*S)/(S-1).*exp(-sqrt(2/S).*beta.*(r-r0)); r= 0:0.001:4.0; E = fc.*(Vr-Va); r = r'; E = E'; A = [r,E]; plot(r,E) xlabel('A') ylabel('ev') fprintf(FID,'%f',A);以上代哪里有问题;
时间: 2024-02-21 18:58:47 浏览: 18
代码中的问题是在计算能量 E 时,应该调用分段函数 fc 来计算每个距离对应的系数,而不是直接使用函数名 fc 作为乘数。因此,将 fc 替换为 fc(r) 即可。
修改后的代码如下:
```
FID = fopen('result.txt','a');
% 定义一个分段函数
function f = fc(r)
% C-C pair
R = 1.85;
D = 0.15;
a = R - D;
b = R + D;
if r <= a
f = 1;
elseif r >= a && r <= b
f = 1/2 - 1/2.*sin(pi.*(r-R)/2.*D);
elseif r >= b
f = 0;
end
end
D0 = 6;
r0 = 1.39;
beta = 2.1;
S = 1.22;
r = 0:0.001:4.0;
Vr = D0/(S-1).*exp(-sqrt(2.*S).*beta.*(r-r0));
Va = (D0.*S)/(S-1).*exp(-sqrt(2/S).*beta.*(r-r0));
E = fc(r).*(Vr-Va);
r = r';
E = E';
A = [r,E];
plot(r,E)
xlabel('A')
ylabel('ev')
fprintf(FID, '%f', A);
```
修改后的代码应该可以正常运行并输出结果。