matlab求积分出错,

问题描述:

matlab求积分出错,
代码:
function [t0,A,B,C,E,f]=gxs(P,sta)
%该程序主要用来计算能量中的相关参数
%P是油压机是施加的压强,单位KPa
%sta是摆角,单位°,即θ
M1=2.7; %摆体的质量,单位kg,即 M体
m1=0.007; %上击柱的质量,单位kg,即 m
m2=0.02; %击杆的质量,单位kg,即 m杆
l1=0.6; %摆体的质心距离转轴中心的距离,单位m,即 l体
I=1.1; %摆体的转动惯量,单位kg.m^2
R=0.01; %击柱半径,单位m
mu=0.4l; %滑动摩擦系数,即μ
g=9.8; %重力加速度,单位m/s^2
st=sta/180*pi; %摆角,单位rad
N=P*10^6*R^2; %油压机施加压力,单位N
syms t;
t0=sqrt(I/(M1*g*l1))*(log(1-cos(st))-log(sin(st/2)));
A=2*M1^2*g*l1/100*(1-cos(st))/(m2+m1+M1)^2-2*mu*(N+m1*g)*(pi/2-5/3)*R^3/(pi*R^2*(m2+m1+M1))
B=2*mu*(N+m1*g)*(pi/2+2)*R^2/(pi*R^2*(m2+m1+M1))
C=2*mu*(N+m1*g)*R/(pi*R^2*(m2+m1+M1))
E=(B^2-4*A*C)/(4*C^2)
S=B/(2*C)+sqrt(E)/2*(exp(sqrt(C)*t)*abs((sqrt(B^2-4*C^2*E)-B)/(2*C*sqrt(E)))+exp(-sqrt(C)*t)*abs((2*C*sqrt(E))/(sqrt(B^2-4*C^2*E)-B)))
dW=mu*(N+m1*g)/(pi*R^2)*((pi/2+2)*R^2-2*S*R)
ds=sqrt(A-B*S+C*S^2)
f=dW*ds
W=quadl(f,0,t0)
出错:
Undefined function or variable 't'.
Error in ==> gxs at 20
S=B/(2*C)+sqrt(E)/2*(exp(sqrt(C)*t)*abs((sqrt(B^2-4*C^2*E)-B)/(2*C*sqrt(E)))+exp(-sqrt(C)*t)*abs((2*C*sqrt(E))/(sqrt(B^2-4*C^2*E)-B)))
具体的指出,同时想问下,matlab中复合函数如g=f(u),u=h(x)这样的形式怎么表示,matlab能够识别吗?
1个回答 分类:数学 2014-11-08

问题解答:

我来补答
这条语句太长,分成几个表达式写,是括号错误.
我调了一下,有两个地方:
1.mu=0.4l; %滑动摩擦系数,即μ
应为0.41;你是0.4L.
2.倒数第二句:f=dW*ds,这是symbol对象,改为inline对象,即改为
f=inline(dW*ds).
结果不知如何,通了.
复合函数直接写就行了:g=f(h(x)).
 
 
展开全文阅读
剩余:2000
上一页:希望高人解答
也许感兴趣的知识