声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1396|回复: 6

[编程技巧] 关于解符号方程的问题

[复制链接]
发表于 2008-3-11 19:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
下面的程序:
syms beta c gama miu theta omiga lambda rho h0 h1 h2 ha x rr r r1 r2 r12 r11 r21 r22 R R11 R12 R21 R22...
    n a b w1 w2 v1 v2 va pmax p s n c0 c10 c01 h f;
miu=0.5;r=0.0095;th=0.00242586135181;R=0.0155;theta=pi/4;a=0.01055184698;b=0.002;beta=b/a;ha=0.002;n=1000 ;
%miu=0.5;r=0.0095;th=0.002426;R=0.0155;theta=pi/4;a=0.020;b=0.002;beta=b/a;ha=0.002;n=1000;c0=0.005;
omiga=2*pi*n/60;
p=a/cos(theta);
s=int(sqrt(p^2+(2*pi*rr)^2),rr,r12,(r12+ha));
%-------------------------------------------------------------------
%--------------------------------------------------------------------------
B1=(1-beta)*a;
B2=beta*a;
h2=r21-r12;c=h2;h1=c+ha;gama=ha/c;
h0=(h1*h2*(B1*w1*h2^2+B2*w2*h1^2))/(B1*w1*h2^3+B2*w2*h1^3);
p1=-6*miu*w1/h1^2*(1-h0/h1)*x;
p2=-6*miu*w2/h2^2*(h0/h2-1)*(B1+B2-x);
x=B1;
pmax=p1;

Fp=pmax*s;
%---------------------------------------------------------------
%---------------------------------------------------------------------
L1=sqrt((a/cos(theta))^2+(2*pi*r12)^2);
L2=sqrt((a/cos(theta))^2+(2*pi*(r12+ha))^2);
FB1x=((3*miu*w1*w2/c)*((beta*gama*(1+gama))/((1-beta)*w1+beta*(1+gama)^3*w2))-miu*w1/((1+gama)*c))*L1*(1-beta)*a;
FB1y=-(miu/((1+gama)*c))*v1*(1-beta)*L1*a;
FB2x=(-(3*miu*w1*w2/c)*((gama*(1-beta))/((1-beta)*w1+beta*(1+gama)^3*w2))-miu*w2/c)*beta*a*L2;
FB2y=-miu/c*v2*beta*a*L2;
%----------------------------------------------------------------
w1=va*cos(theta)-omiga*r12*sin(theta);
w2=va*cos(theta)-omiga*(r12+ha)*sin(theta);
v1=va*sin(theta)+omiga*r12*cos(theta);
v2=va*sin(theta)+omiga*(r12+ha)*cos(theta);
Fp=subs(Fp);FB1x=subs(FB1x);FB2x=subs(FB2x);FB1y=subs(FB1y);FB2y=subs(FB2y);
Fx=Fp+FB1x+FB2x;
Fy=FB1y+FB2y;
%--------------------------------------------------------------------------
Fa=Fx*cos(theta)+Fy*sin(theta);
Fc=Fy*cos(theta)-Fx*sin(theta);
%-------------------------------------------------------------
miu=0.5;theta=pi/4;a=0.020;b=0.002;beta=b/a;
ha=0.002;h=0.003;rho=8920;lambda=1;                             n=1000;
R11=0.0095;R12=0.0096;R21=0.0145;R22=0.0146;c10=115100;c01=101300;c0=0.005;
Fa=subs(Fa);
va=solve(Fa,'va');
va=va(2);%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
%--------------------------------------------------------------------------
%--------------------------------------------------------------------------
P1=rho*omiga^2*(r11^3-(r11-h)^3)/(3*r11);

%-------------------------------------------------------

f1=2/r*(((R12^2-(r12^2-r^2)*lambda)/(lambda*r)^2-r^2/(R12^2-(r12^2-r^2)*lambda))*c10-...
    (((lambda*r)^2/(R12^2-(r12^2-r^2)/lambda))-(R12^2-(r12^2-r^2)*lambda)/r^2)*c01);
f1=subs(f1);
sigma1=int(f1,r,r11,r12);
r11=sqrt(r12^2-(R12^2-R11^2)/lambda);
sigma1=subs(sigma1);

f2=2/r*(((R22^2-(r22^2-r^2)*lambda)/(lambda*r)^2-r^2/(R22^2-(r22^2-r^2)*lambda))*c10-...
    (((lambda*r)^2/(R22^2-(r22^2-r^2)/lambda))-(R22^2-(r22^2-r^2)*lambda)/r^2)*c01);
f2=subs(f2);
sigma2=int(f2,r,r21,r22);
r22=sqrt(r21^2+(R22^2-R21^2)/lambda);
sigma2=subs(sigma2);%柔弹性壁的应力
%-----------------------------------------------------------

P2=pmax/2;
P2=subs(P2);
%------------------------------------------------------------
P1=subs(P1);
t1=subs(P2-P1-sigma1);
t2=subs(sigma2-P2);

最后解出的t1,t2都是关于r12,r21的方程,我想解出r12和r21的值。用solve解的时候出了问题,我查了查以前的帖子,是方程太复杂了,solve解不了。用fsolve解,初值不好估计。
大家帮忙看看,给提点意见,谢谢了!

[ 本帖最后由 sigma665 于 2008-3-11 21:27 编辑 ]
回复
分享到:

使用道具 举报

发表于 2008-3-12 09:33 | 显示全部楼层
说实话一看这程序头都大了,楼主能不能把问题用我们常用的表达方式描述一下(如欲求解方程的图片),而不是matlab。这样大家可能更容易理解你的问题,那样才更可能帮到你啊。
 楼主| 发表于 2008-3-12 10:26 | 显示全部楼层
ls说的对,我把我的东西简单说一下
1.JPG
P1里面的除了r12之外都是常数,这样的话P1就只含变量r12了。
P2里面的W1、W2、h1、h2都是r12和r21的函数,这样P2就只含变量r12和r21。
τ1和τ2的两个式子积分后,并把(1)(2)这两个式子带到里面,这样τ1和τ2就只含变量r12和r21。
这样的话把这几个量带到平衡方程里面去,这两个方程就只有未知数r12和r21。我的目的就是想把r12和r21给求出来。谢谢了!

[ 本帖最后由 sigma665 于 2008-3-12 10:54 编辑 ]
发表于 2008-3-12 10:29 | 显示全部楼层

回复 楼主 的帖子

这也是我的一个问题,关注你的帖子。:lol
 楼主| 发表于 2008-3-12 14:56 | 显示全部楼层
已经解决了,用inline将t1和t2转化为内联函数,然后用fsolve解的。
上午搜了几个使用fsolve的帖子学习了一下,原来以前没解出来是因为fsolve用错了。

[ 本帖最后由 julianyhh 于 2008-3-12 14:58 编辑 ]

评分

1

查看全部评分

发表于 2008-3-12 15:30 | 显示全部楼层
原帖由 julianyhh 于 2008-3-12 14:56 发表
已经解决了,用inline将t1和t2转化为内联函数,然后用fsolve解的。
上午搜了几个使用fsolve的帖子学习了一下,原来以前没解出来是因为fsolve用错了。
所以希望大家好好搜索、查找,我们都整理了很多主题,别浪费了资源
发表于 2009-3-11 20:46 | 显示全部楼层

hello

请问用fsolve最后是怎么求解的?不像solve那样能用subs的话
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-17 12:41 , Processed in 0.058384 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表