Undefined operator '*' for input arguments of type 'function_handle'.
5 ビュー (過去 30 日間)
古いコメントを表示
i wrote a following code. every thing is right but it shows error" Undefined operator '*' for input arguments of type 'function_handle'.
clear all
clc
syms x
h=4;
q=100;
delta=26;
phi=39;
kh=0;
kv=0;
psi=atan(kh/(1-kv));
da1=delta*(pi/180); pha1=phi*(pi/180);
m=pha1+da1;
b=pha1-psi;
c=psi+da1;
gma=18.4; nq=2*q/(gma*(x));
delta=26;
phi=39;
lam=0;
A=lam*nq/(1+nq);
alphac=atan((sin(m)*sin(b)+(sin(m)^2+sin(b)^2+sin(m)*cos(m)*sin(b)*cos(b)+A*cos(c)*cos(m)*sin(b))^0.5)/(A*cos(c)+sin(m)*cos(b)));
w=0.5*gma*(x)^2*(1/tan(alphac));
B=(x)*((1/tan(alphac))-lam);
ka1=((1+nq)*(1-A*tan(alphac))*(cos(b)-(sin(b)/tan(alphac))))/(cos(psi)*(cos(m)+tan(alphac)*sin(m)))
wt=w+q*B;
pa1 = matlabFunction(0.5*gma*x^2*ka1);
x=0:0.1:5;
R=(wt*(1-kv)-pa1*sin(da1))/cos(alphac-pha1);
za1=(0.5*R*cos(pha1)*(x/sin(alphac))-q*B*(lam*x+0.5*B)-(1/6)*(1/tan(alphac))*(gma/tan(alphac))*x^3)/(pa1*cos(da1))
plot(za1(x),x)
0 件のコメント
採用された回答
Alex Mcaulley
2019 年 3 月 15 日
編集済み: Alex Mcaulley
2019 年 3 月 15 日
You have some mix between symbolic functions and function handles. You need to choose one strategy. Try the following code, which uses only symbolic functions:
syms x
h=4;
q=100;
delta=26;
phi=39;
kh=0;
kv=0;
psi=atan(kh/(1-kv));
da1=delta*(pi/180); pha1=phi*(pi/180);
m=pha1+da1;
b=pha1-psi;
c=psi+da1;
gma=18.4; nq=2*q/(gma*(x));
delta=26;
phi=39;
lam=0;
A=lam*nq/(1+nq);
alphac=atan((sin(m)*sin(b)+(sin(m)^2+sin(b)^2+sin(m)*cos(m)*sin(b)*cos(b)+A*cos(c)*cos(m)*sin(b))^0.5)/(A*cos(c)+sin(m)*cos(b)));
w=0.5*gma*(x)^2*(1/tan(alphac));
B=(x)*((1/tan(alphac))-lam);
ka1=((1+nq)*(1-A*tan(alphac))*(cos(b)-(sin(b)/tan(alphac))))/(cos(psi)*(cos(m)+tan(alphac)*sin(m)))
wt=w+q*B;
pa1 = (0.5*gma*x^2*ka1); %changed
% x=0:0.1:5; %changed
R=(wt*(1-kv)-pa1*sin(da1))/cos(alphac-pha1);
za1=(0.5*R*cos(pha1)*(x/sin(alphac))-q*B*(lam*x+0.5*B)-(1/6)*(1/tan(alphac))*(gma/tan(alphac))*x^3)/(pa1*cos(da1))
fplot(za1,[0,5]) %changed
1 件のコメント
Steven Lord
2019 年 3 月 15 日
Alternately if you want to use just function handles, you can't perform arithmetic with the function handles themselves but you can perform arithmetic on the values you receive when you evaluate the function handle.
f1 = @sin;
f2 = @cos;
x = 0:0.05:2*pi;
% Add the results of evaluating f1 and f2
willWork = @(x) f1(x)+f2(x);
figure
plot(x, willWork(x))
title('Will work')
% Try to add f1 and f2
willNotWork = @(x) f1+f2;
figure
plot(x, willNotWork(x)) % This line will error so ...
title('This line of code won''t be executed')
その他の回答 (0 件)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!