24小时热门版块排行榜    

CyRhmU.jpeg
查看: 2122  |  回复: 9

chnwangnannan

铁虫 (小有名气)

[求助] 使用fsolve求解非线性方程问题

急需求助dbb627版主

e=50;
rho=1.225;
c=2;
s=7.5;
xf=0.48*c;
m=100;
ec=0.23;
aw=2*pi;
M_theradot=-1.2;
I_k=m*s^3*c/3;
I_ktheta=((m*s^2)/2)*(c^2/2-c*xf);
I_theta=m*s*(c^3/3-c^2*xf+c*xf^2);
Kk=I_k*(5*2*pi)^2;
Ktheta=I_theta*(10*2*pi)^2;
b11=rho*c*s^3*aw/6;
b12=0;
b21=-rho*ec*c^2*s^2*aw/4;
b22=-rho*c^3*s*M_theradot/8;
c11=0;
c12=rho*c*s^2*aw/4;
c21=0;
c22=-rho*ec*c^2*s*aw/2;
e11=Kk;
e22=Ktheta+0.75*e*A^2;
a1=I_k*I_theta-I_ktheta^2;
a2=-V^2*(I_theta*c11+I_k*c22-I_ktheta*c12-I_ktheta*c21+b11*b22-b12*b21)-(I_k*e22+I_theta*e11);
a3=V^4*(c11*c22-c12*c21)+V^2*(c11*e22+e11*c22)+e11*e22;
b1=I_ktheta*b12+I_ktheta*b21-I_k*b22-I_theta*b11;
b2=b11*c22+c11*b22-b21*c12-b12*c21;
b3=b11*e22+e11*b22;
F=(b3+b2*V^2)^2*a1-b1*(b3+b2*V^2)*a2+b1^2*a3=0;
当给定参数A=0时,可以求出速度V=154.35。
小于此速度时A的值为复数,大于此值时是实数,我的目的就是当给定不同的速度V时,求解出幅值A的值,因为这个方程是A的四次方的方程,所以用fsolve求解直接找到其实数值,但是我一直无法求解,请指教,谢谢
这个问题的V-A曲线如图所示。

1.JPG
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

chnwangnannan

铁虫 (小有名气)

怎么没人回复呢?各位大侠请帮帮忙
2楼2012-10-07 16:05:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

csgt0

荣誉版主 (著名写手)

彩色挂图

【答案】应助回帖

感谢参与,应助指数 +1
不知道你要什么结果
F=(b3+b2*V^2)^2*a1-b1*(b3+b2*V^2)*a2+b1^2*a3;
A=solve(F,A)
ezplot(A(1),[140,200])
就可以得到你这个图,如果你要得到数据那么用
for V=140:200
    C(V-139,=subs(A1)';
end
就可以
showmethemoney
3楼2012-10-08 11:51:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

chnwangnannan

铁虫 (小有名气)

引用回帖:
3楼: Originally posted by csgt0 at 2012-10-08 11:51:35
不知道你要什么结果
F=(b3+b2*V^2)^2*a1-b1*(b3+b2*V^2)*a2+b1^2*a3;
A=solve(F,A)
ezplot(A(1),)
就可以得到你这个图,如果你要得到数据那么用
for V=140:200
    C(V-139,=subs(A1)';
end
就可以...

非常感谢您的回复。
我就想画出上面的那个幅值随速度的变化曲线图。
我用ezplot进行绘制时,出现一下错误:
Error in ==> ezplot>ezplot1 at 420
error(nargchk(4,6,nargin,'struct'));

??? Output argument "hp" (and maybe others) not assigned during call to "C:\Program
Files\MATLAB\R2010a\toolbox\matlab\specgraph\ezplot.m>ezplot1".

Error in ==> ezplot at 144
    [hp,cax] = ezplot1(cax,f{1},vars,labels,args{:});

Error in ==> sym.ezplot at 56
      h = ezplot(char(f),varargin{:});

Error in ==> cal1 at 36
ezplot(A(1),[140,200])

这说明用ezplot不对,请问您画出上面的图了吗?
4楼2012-10-08 14:31:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

chnwangnannan

铁虫 (小有名气)

引用回帖:
3楼: Originally posted by csgt0 at 2012-10-08 11:51:35
不知道你要什么结果
F=(b3+b2*V^2)^2*a1-b1*(b3+b2*V^2)*a2+b1^2*a3;
A=solve(F,A)
ezplot(A(1),)
就可以得到你这个图,如果你要得到数据那么用
for V=140:200
    C(V-139,=subs(A1)';
end
就可以...

这个ezplot无法绘制出图的原因是不是因为求解的结果A中既有复数又有实数,所填无法绘制?
5楼2012-10-08 14:39:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

csgt0

荣誉版主 (著名写手)

彩色挂图

【答案】应助回帖

A=solve(F,A);
ezplot(A(1),[140,200])
4个A第1个和第3个都是部分实数部分复数的可以画
第2个和第4个全部复数好像不能画。当然你可以取实部或虚部或模画。
showmethemoney
6楼2012-10-08 15:42:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

csgt0

荣誉版主 (著名写手)

彩色挂图

【答案】应助回帖


dbb627: 金币+1, 感谢应助 2012-10-10 16:59:28
我能画啊,可能你的版本跟我不用,你可以试下A(2),A(3),A(4),我的是A(1)和A(3)能画,A(2),A(4)不行
showmethemoney
7楼2012-10-08 15:44:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

chnwangnannan

铁虫 (小有名气)

引用回帖:
7楼: Originally posted by csgt0 at 2012-10-08 15:44:06
我能画啊,可能你的版本跟我不用,你可以试下A(2),A(3),A(4),我的是A(1)和A(3)能画,A(2),A(4)不行

谢谢您的回复,我的目的是,那些为复数的值使其置为0,实数仍然保留
8楼2012-10-14 14:49:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

csgt0

荣誉版主 (著名写手)

彩色挂图

【答案】应助回帖

你画了或者输出来看看就知道就知道,4次方程4个解,两个是复数画不了图,另两个实数可以画啊。
算出来A(2),A(4)全部是复数,A(1),A(3)部分是复数。
复数改为零更好办啊
y =[  1.0000             2.0000             3.0000             4.0000 + 1.0000i]
y(imag(y)~=0)=0

y=1     2     3     0
showmethemoney
9楼2012-10-15 09:44:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

csgt0

荣誉版主 (著名写手)

彩色挂图

【答案】应助回帖


dbb627: 金币+1, 感谢应助 2012-10-15 20:03:54
如果你觉得画不出来那你看我画的
ezplot(A(1),[140,200])

画A(3)就正负相反。

untitled.jpg

showmethemoney
10楼2012-10-15 09:48:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 chnwangnannan 的主题更新
信息提示
请填处理意见