Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
 
 
主题工具 显示模式
旧 2019-12-10, 20:48   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 我们如何在MATLAB版本5.3.1中存储符号表达式的某些特定系数?

你好朋友,我想找出以下问题:假设我们有这样的表达,

syms tk A0 r1=(-1+k-3/4*k*A0^2)*sin(t)+1/4*k*A0^2*sin(3*t)+A0*sin(5*t); 我们想要删除sin(t)的系数并将其求解为A0 ,最后将此值放在表达式的其余部分中,如何在不剪切和粘贴的情况下做到这一点。



回答:

我不知道MATLAB版本5.3.1提供了哪些符号功能,但是您可以使用当前Symbolic Math Toolbox中的 COEFFSSUBSSOLVE函数来解决您的问题:

>> eqCoeffs = coeffs(r1,sin(t)); %# Get coefficients for polynomial in sin(t) >> b = eqCoeffs(2); %# Second coefficient is what you want >> bValue = 1; %# The value to set the coefficient equal to >> newA0 = solve(subs('b = bValue'),A0) %# Solve for A0 newA0 = -(2*3^(1/2)*(k - 2)^(1/2))/(3*k^(1/2)) %# Note there are two values since (2*3^(1/2)*(k - 2)^(1/2))/(3*k^(1/2)) %# A0 is squared in the equation >> r2 = subs(r1,A0,newA0) %# Substitute the new A0 values into r1 r2 = sin(t) + (sin(3*t)*(k - 2))/3 - (2*3^(1/2)*sin(5*t)*(k - 2)^(1/2))/(3*k^(1/2)) sin(t) + (sin(3*t)*(k - 2))/3 + (2*3^(1/2)*sin(5*t)*(k - 2)^(1/2))/(3*k^(1/2)) 请注意, r2的两个方程式中的sin(t)系数等于1(我用于bValue的值)。



更多&回答...
poster 当前离线   回复时引用此帖
 


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 21:15


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.