24小时热门版块排行榜    

查看: 634  |  回复: 6

wzp0098

木虫 (著名写手)

[求助] 用matlab画图

如下的方程组,
I*(K2-K3)*Y1-I*Y2*Y3-I*C*Y3*Exp[-I*Q]=0
(-r-I*K2)*Y2-I*C-I*Y3*Y1=0
(-r-I*K1)*Y3-I*8-I*Y2*Y1*Exp[I*Q]=0
Y1,Y2,Y3为变量;I为虚数单位;
K1=1, K2=3, r=1,C=4, Q=pi/3,
我想利用for循环语句画出Y1实部随K3(取值-20到20)变化的图(请用数值画图方法,因为有时候变量很多10以上,很难精确求解解析解)
请大侠指教!
回复此楼

» 猜你喜欢

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

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

csgt0

荣誉版主 (著名写手)

彩色挂图

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ...
感谢参与,应助指数 +1
wzp0098: 金币+60, 有帮助, 谢谢帮助! 2012-08-14 14:46:34
xzhdty: 金币+2, 谢谢 2012-08-14 17:53:40
CODE:
function wzp

for k3=-20:20
    y0=ones(3,1);
    Y(:,k3+21)=fsolve(@(y)fun(y,k3),y0);
end
Y1=Y(1,:)
plot(-20:20,Y1)
end

function F=fun(y,k3)
k1=1;
k2=3;
r=1;
C=4;
Q=pi/3;
F=[(k2-k3)*i*y(1)-i*y(2)*y(3)-i*C*y(3)*exp(-i*Q);
    (-r-i*k2)*y(2)-i*C-i*y(3)*y(1);
    (-r-i*k1)*y(3)-i*8-i*y(2)*y(1)*exp(i*Q);];
end

showmethemoney
2楼2012-08-14 13:33:15
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

wzp0098

木虫 (著名写手)

引用回帖:
2楼: Originally posted by csgt0 at 2012-08-14 13:33:15
function wzp

for k3=-20:20
    y0=ones(3,1);
    Y(:,k3+21)=fsolve(@(y)fun(y,k3),y0);
end
Y1=Y(1,
plot(-20:20,Y1)
end

function F=fun(y,k3)
k1=1;
k2=3;
r=1;
C=4;
Q=pi/3;
F=;
end ...

向您请教一个问题,方程 Y(:,k3+21)=fsolve(@(y)fun(y,k3),y0);
中 k3+21是什么含义?
如果我想以步长为0.1画图,怎么控制?
3楼2012-08-14 14:46:13
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

csgt0

荣誉版主 (著名写手)

彩色挂图

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
wzp0098: 金币+20, 有帮助, 非常谢谢!我发现正你说那样,变量多了图不对,能否有办法处理呢? 2012-08-15 09:11:14
引用回帖:
3楼: Originally posted by wzp0098 at 2012-08-14 14:46:13
向您请教一个问题,方程 Y(:,k3+21)=fsolve(@(y)fun(y,k3),y0);
中 k3+21是什么含义?
如果我想以步长为0.1画图,怎么控制?...

如果以0.1画图,那么就用for k3=-20:0.1:20,但是如果太小可能解方程很费时间,另外如果参数过多也可能解的不对。

k3+21主要是作为Y的列数,我将每次的结果都保存下来,k3=-20时就是1,一直k3=20时到41。如果间隔0.1,你可以单独用个变量来计数,每个循环+1。
showmethemoney
4楼2012-08-14 17:46:40
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

wzp0098

木虫 (著名写手)

好像步长没法控制
5楼2012-08-15 09:15:32
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

csgt0

荣誉版主 (著名写手)

彩色挂图

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
wzp0098: 金币+20, 有帮助, 谢谢帮助! 2012-08-15 09:27:04
引用回帖:
4楼: Originally posted by csgt0 at 2012-08-14 17:46:40
如果以0.1画图,那么就用for k3=-20:0.1:20,但是如果太小可能解方程很费时间,另外如果参数过多也可能解的不对。

k3+21主要是作为Y的列数,我将每次的结果都保存下来,k3=-20时就是1,一直k3=20时到41。如果间 ...

比较困难,你可以估计下大概与k3的关系而确定可能的解,然后设置合适的初值
showmethemoney
6楼2012-08-15 09:22:04
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

wzp0098

木虫 (著名写手)

function wzp

for k3=-20:0.1:20
    y0=ones(3,1);
    Y(:,k3+21)=fsolve(@(y)fun(y,k3),y0);
end
Y1=Y(1,
plot(-20:0.1:20,Y1)
end

function F=fun(y,k3)
k1=1;
k2=3;
r=1;
C=4;
Q=pi/3;
F=[(k2-k3)*i*y(1)-i*y(2)*y(3)-i*C*y(3)*exp(-i*Q);
    (-r-i*k2)*y(2)-i*C-i*y(3)*y(1);
    (-r-i*k1)*y(3)-i*8-i*y(2)*y(1)*exp(i*Q);];
end
步长按你说法没办法控制,因为我涉及的变量很多(8个以上),没有办法精确求解解析解。
7楼2012-08-15 09:26:37
已阅   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 wzp0098 的主题更新
信息提示
请填处理意见