格式的设置,不是 former
是 format long
然后后面都是小错误,以后自己调试程序时,细心点,注意大小写,比如 P,你后面的计算里,用的是小写的p,
将 K 的均值赋值个 k 时,也是大小写错误,不是什么特别的错误。平时程序运行时,多检查就可以了。
我不懂你的物理学方程,我做做经济建模的。所以对不对我不知道,不过可以跑出结果。我已经跑出结果了。
第三个文件如下:
- function [C,Ceq,k1,k2,k3,s]=truss_confun3(x,s)
- %约束条件m文件truss_confun2.m
- global a P E
- %初始化采样间距
- if isnan(s(1,1))
- s=[0.01 0;0.01 0;0.01 0];
- end
- %产生样本集
- %w=1:s(1,1):pi/2
- w=0.01:0.005:pi/2;
- [~, n2]=size(w);
- %计算节点位移
- a11=0;a12=0;a21=0;a22=0;
- for i=1:3
- a11=a11-x(i)*a(i,1)^2*a(i,2);
- a12=a12+x(i)*a(i,1)*a(i,2)^2;
- a21=a21-x(i)*a(i,1)*a(i,2)^2;
- a22=a12+x(i)*a(i,2)^3;
- end
- aa=[a11 a12;a21 a22];
- for i=1:n2
- b=[-P*cos(w(i))*1.5/E P*sin(w(i))*1.5/E]';
- uv=aa\b;
- %杆的内力计算
- N1(i)=E*x(1)/1.5*(-uv(1)*a(1,1)*a(1,2)+uv(2)*a(1,2)^2);
- N2(i)=E*x(2)/1.5*(-uv(1)*a(2,1)*a(2,2)+uv(2)*a(2,2)^2);
- N3(i)=E*x(3)/1.5*(-uv(1)*a(3,1)*a(3,2)+uv(2)*a(3,2)^2);
- end
- %半无限约束
- K1=abs(N1)/x(1)-300*1e6;
- K2=abs(N2)/x(2)-300*1e6;
- K3=abs(N3)/x(3)-300*1e6;
- %非线性约束
- c=[-0.0001-x(1)
- 0.0001-x(2)
- 0.0001-x(3)
- abs(uv(1))-0.00001
- abs(uv(2))-0.00001];
- Ceq=[];
- C=c;
- k1=min(K1);
- k2=min(K2);
- k3=min(K3);


雷达卡





京公网安备 11010802022788号







