我正在尝试获取系统的 谐振曲线 。系统可以描述为
function foo(bar: Object | { createdDate: Date }) {
if ("createdDate" in bar) {
alert(bar.createdDate);
}
}
foo({aa: ""})
求解给出项的总和,其中一些随着时间“消亡”(因为这些项具有F,m,k:=2,1,4:
lambda:= beta/(2*m):
omega:=sqrt(k/m):
de:=diff(x(t),t$2)+2*lambda*diff(x(t),t)+omega^2*x(t)=F*cos(gamma1*t):
cond:=x(0)=0, D(x)(0)=0:
sol := dsolve({cond, de});
),而另一些则形成稳态解(exp(-...*t)
的解)。此解决方案的格式为t -> ∞
。为了获得 谐振曲线 ,我需要绘制xstst=f(gamma1)*sin(...)
(对于选定的常数f(gamma1)
,例如betas
等) 。
我已经“手工”解决了这个问题,找到了2,1,0.5,0.25,
。对任何选定的beta进行绘制都会得到所需的结果,例如,对于f := F/(sqrt((-gamma1^2+omega^2)^2+4*lambda^2*gamma1^2))
来说,绘制的是
我想知道我是否只能使用maple函数获得这些曲线(根本不需要“手动”解决任何问题)。
[编辑]
答案 0 :(得分:1)
我不确定我是否完全理解您的问题,但是当我运行您的代码时,我会得到一些带指数的术语,一些正弦和余弦。您可以使用
来获取正弦项的系数coeff( collect( rhs( sol ) , sin( gamma1 * t ) ) , sin( gamma1 * t ) , 1 )
答案 1 :(得分:1)
期望Maple用sin(theta)
或cos(theta)
来表示结果,并使用一些在问题规范中没有出现并由您完全引入的术语来表示,这是没有意义的
以下内容是通过在cond1
和cond2
的每一个中使用部首(平方根)来实现的。
restart;
de := diff(x(t),t,t)+2*lambda*diff(x(t),t)+omega^2*x(t)=F*cos(gamma1*t):
cond := x(0)=0, D(x)(0)=0:
sol := dsolve({cond, de}):
E,T := selectremove(hastype,rhs(sol),specfunc(anything,exp)):
lprint(T);
F*(2*sin(gamma1*t)*gamma1*lambda-cos(gamma1*t)*gamma1^2
+cos(gamma1*t)*omega^2)/(gamma1^4+4*gamma1^2*lambda^2-
2*gamma1^2*omega^2+omega^4)
cond1 := cos(theta) = (-gamma1^2+omega^2)
/((-gamma1^2+omega^2)^2+4*lambda^2*gamma1^2)^(1/2):
cond2 := sin(theta) = (-2*lambda*gamma1)
/((-gamma1^2+omega^2)^2+4*lambda^2*gamma1^2)^(1/2):
frontend(algsubs, [numer(rhs(cond1))=lhs(cond1)*denom(rhs(cond1)),
numer(T)],
[{`+`,`*`,`=`},{}]):
frontend(algsubs, [numer(rhs(cond2))=lhs(cond2)*denom(rhs(cond2)),
%],
[{`+`,`*`,`=`},{}]):
ans := collect(combine(%, trig),cos)/denom(T):
lprint(ans);
F*cos(gamma1*t+theta)/(gamma1^4+4*gamma1^2*lambda^2-
2*gamma1^2*omega^2+omega^4)^(1/2)
subsans := eval(eval(ans,[lambda=beta/(2*m),omega=sqrt(k/m)]),
[F=2,m=1,k=4]):
lprint(subsans);
2*cos(gamma1*t+theta)
/(beta^2*gamma1^2+gamma1^4-8*gamma1^2+16)^(1/2)