全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 MATLAB等数学软件专版
2650 6
2011-05-28
悬赏 5 个论坛币 已解决
function f=truss_main3()
%主程序,truss_main3.m
clc;
clear all;
former long
global a P E
a=[-1/1.803 1.5/1.803
    0         1
    1/1.803 1.5/1.803];
P=20000;
E=210*1e9;
x0=[0.01,0.02,0.03]                   %设计初始值
[x,fva1]=fseminf(@truss_objfun3,x0,3,@truss_confun3)
function f=truss_objfun3(x)
%目标函数
f=7800*9.8*(1.803*x(1)+1.5*x(2)+1.803*x(3));        %目标函数
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
[n1 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=inv(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,k1=min(k1),k2=min(k2),k3=min(k3)

求高人看看此程序的错误之处,本人不知道怎么给币,所以解决问题之后请告知给币的方式,非常感谢。

最佳答案

tulipsliu 查看完整内容

第三个文件错误较多如全局变量申明,你的 global,第一个字母用了大写,这个是不合法的。 格式的设置,不是 former 是 format long 然后后面都是小错误,以后自己调试程序时,细心点,注意大小写,比如 P,你后面的计算里,用的是小写的p, 将 K 的均值赋值个 k 时,也是大小写错误,不是什么特别的错误。平时程序运行时,多检查就可以了。 我不懂你的物理学方程,我做做经济建模的。所以对不对我不知道,不过可以跑出结果 ...
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2011-5-28 19:04:19
第三个文件错误较多如全局变量申明,你的 global,第一个字母用了大写,这个是不合法的。
格式的设置,不是 former
是   format long

然后后面都是小错误,以后自己调试程序时,细心点,注意大小写,比如 P,你后面的计算里,用的是小写的p,
将 K  的均值赋值个 k 时,也是大小写错误,不是什么特别的错误。平时程序运行时,多检查就可以了。
我不懂你的物理学方程,我做做经济建模的。所以对不对我不知道,不过可以跑出结果。我已经跑出结果了。

第三个文件如下:

复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-5-29 12:00:00
主程序不需要函数申明开头,去掉 funcion 这个申明。主程序内容如下。

复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-5-29 12:01:04
注意,保存为3个文件,函数文件也单独保存。目标函数没错
如下
复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-5-29 12:05:24
Local minimum possible. Constraints satisfied.

fseminf stopped because the size of the current search direction is less than
twice the default value of the step size tolerance and constraints are
satisfied to within the default value of the constraint tolerance.

<stopping criteria details>


x =

   0.006197345313062   0.000255468750000   0.023352886874689


fva1 =

    4.101944053297299e+003




这个就是运行结果了。只是一个简单的程序调试,将语法错误修改而已,不需要你的论坛币,我要下载的资料都下载完了。用不了论坛币。呵呵
你留着下载资料吧。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-5-29 15:12:28
十分感谢您。 2# tulipsliu
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群