Unrecognized function or variable x

2 ビュー (過去 30 日間)
Charlotte Massie
Charlotte Massie 2020 年 4 月 1 日
回答済み: M 2020 年 4 月 1 日
Unrecognized function or variable 'x'.
Error in normalcaulculation (line 7)
k1 = E*x(1)/l(1,0)*[(cos(a(1)))^2 sin(a(1))*cos(a(1));sin(a(1))*cos(a(1)) (sin(a(1))^2)];
In the code:
F = 1000*[10000;-4000];%N
E = 70E9;%Pa = N/m2
l = [2 2/3^0.5 2^0.5];%m
a = [deg2rad(-30) deg2rad(-60) deg2rad(-135)];%rad
%bar 1 global matrix at node 4
k1 = E*x(1)/l(1,0)*[(cos(a(1)))^2 sin(a(1))*cos(a(1));sin(a(1))*cos(a(1)) (sin(a(1))^2)];
%bar 2 global matrix at node 4
k2 = E*x(2)/l(2)*[(cos(a(2)))^2 sin(a(2))*cos(a(2));sin(a(2))*cos(a(2)) (sin(a(2))^2)];
%bar 3 global matrix at node 4
k3 = E*x(3)/l(3)*[(cos(a(3)))^2 sin(a(3))*cos(a(3));sin(a(3))*cos(a(3)) (sin(a(3))^2)];
% nodal displacement in node 4
k = k1+k2+k3;
d4 = inv(k)*F;
%force component at each bar
f1 = k1*d4;
f2 = k2*d4;
f3 = k3*d4;
%axial stress
rf1 = sqrt(f1(1)^2+f1(2)^2);
rf2 = sqrt(f2(1)^2+f2(2)^2);
rf3 = sqrt(f3(1)^2+f3(2)^2);
Fo = [rf1 rf2 rf3]; %N/m2
X = [x(1) x(2) x(3)]; %m2
c = Fo-400E6*X;
%Equality constraint
ceq = []; %no equality constraint
S = Fo*X
function [c,ceq] = constraint(x)
% constraint: axial stress<=400N/m2
% x is the area of bar, x1=A1,x2=A2,x3=A3
% Load, geometry and materal
F = [10000e3;-2000e3];%unit change (kN--N)
E = 70E9;%Pa = N/m2
l = [2 2/sqrt(3) sqrt(2)];%m
a = [deg2rad(-30) deg2rad(-60) deg2rad(-135)];%rad
%bar 1 global matrix at node 4
k1 = E*x(1)/l(1)*[(cos(a(1)))^2,sin(a(1))*cos(a(1));sin(a(1))*cos(a(1)),(sin(a(1))^2)];
%bar 2 global matrix at node 4
k2 = E*x(2)/l(2)*[(cos(a(2)))^2,sin(a(2))*cos(a(2));sin(a(2))*cos(a(2)),(sin(a(2))^2)];
%bar 3 global matrix at node 4
k3 = E*x(3)/l(3)*[(cos(a(3)))^2,sin(a(3))*cos(a(3));sin(a(3))*cos(a(3)),(sin(a(3))^2)];
% nodal displacement in node 4
k = k1+k2+k3;
d4 = inv(k)*F; %P
%force component at each bar
f1 = k1*d4;
f2 = k2*d4;
f3 = k3*d4;
%axial force
s1 = (sqrt(f1(1)^2+f1(2)^2))/x(1);
s2 = (sqrt(f2(1)^2+f2(2)^2))/x(2);
S3 = (sqrt(f3(1)^2+f3(2)^2))/x(3);
%inequlity constraint
Fo = [s1 s2 S3]; %N/mm2
c = Fo-400;
%Equality constraint
ceq = []; %no equality constraint
end

回答 (1 件)

M
M 2020 年 4 月 1 日
As the error message says, the variable 'x' is not declared before it is used line 7.
How do you execute this function ?
Is it your main script ?

カテゴリ

Help Center および File ExchangeLoops and Conditional Statements についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by