matlab里solve的问题 10
function[Q_max_r]=Power_Allocation_relay_r(H_cb,H_n_sb,H_n_rb,H_sr,H_rd,H_n_cr,H_n_cd...
function [Q_max_r]=Power_Allocation_relay_r(H_cb,H_n_sb,H_n_rb,H_sr,H_rd,H_n_cr,H_n_cd,Rc_min,Rd_min,Pc_D,Ps_D,Pr_D)
Pc_D_mw=10^(Pc_D/10);
Ps_D_mw=10^(Ps_D/10);
Pr_D_mw=10^(Pr_D/10);
delta=10^(-174/10);
%******************** 计算不同情况下的P_c,P_s *******************************
%*********************** CASE2:P_r=Pr_D **********************************
syms P_c alpha_r;
Pr_D= Pr_D_mw;
P_r= Pr_D_mw;
P_s=(delta+P_c*H_n_cr)/(delta+P_c*H_n_cd)*H_rd/H_sr*Pr_D;
C0=2^(2*Rd_min)-1;
Pr_min= C0*(Pr_D*H_n_rb+delta)/H_cb;
Pr_max=min(Pr_D*H_rd/(H_n_cd*C0)-delta/H_n_cd,Pr_D);
Q=(1+P_c*H_cb/(P_s*H_n_sb+delta))*(1+P_c*H_cb/(P_r*H_n_rb+delta))*(1+P_s*H_sr/(P_c*H_n_cr+delta));
[X_Pr,Y_Pr] = numden(Q); %分离分子X(Pc)、分母Y(Pc)
Zc_alpha_r=X_Pr-alpha_r*Y_Pr; %构造新函数Zr(α,P_c),4次方
Zc_alpha_derivation_r=diff(Zc_alpha_r,P_c); %对构造函数Zr(α,P_c)求1阶导,3次方
X=solve(Zc_alpha_derivation_r==0,P_c); %X:求导后的根,含有α,有3个解
%X=eval(X);
X1=X(1,1); %构造函数Zr(α,P_c)求导后,P_c(α)*的值
X2=X(2,1);
X3=X(3,1);
X1_alpha_r=subs(Zc_alpha_r,P_c,X1); %将求导所得的根带入新函数Zr(α,P_c)中
X2_alpha_r=subs(Zc_alpha_r,P_c,X2);
X3_alpha_r=subs(Zc_alpha_r,P_c,X3);
alpha_r_opt1=solve(X1_alpha_r,alpha_r); %%%运行到这一步就一直busy
alpha_r_opt2=solve(X2_alpha_r,alpha_r);
alpha_r_opt3=solve(X3_alpha_r,alpha_r);
[alpha_c_max1,index1]=max(alpha_r_opt1); %通过比较4组 alpha_c值,找到最大者
[alpha_c_max2,index2]=max(alpha_r_opt2);
[alpha_c_max3,index3]=max(alpha_r_opt3);
note:其中function右边皆为常数项。
错误提示:
操作在以下过程中被用户终止 mupadengine/evalin (line 97)
位置 mupadengine/feval (line 150)
[S,err] = evalin(engine,stmt);
位置 solve (line 170)
sol = eng.feval('symobj::solvefull',eqns,vars);
位置 t1 (line 41)
alpha_r_opt1=solve(X1_alpha_r==0,alpha_r); %得到 alpha_c*
程序运行到红字位置就一直busy,现在不知道是什么情况,求大大帮忙看看。
还有solve函数出现busy一般是什么原因
note:应该不是正在计算,我怀疑是函数卡死了。 展开
Pc_D_mw=10^(Pc_D/10);
Ps_D_mw=10^(Ps_D/10);
Pr_D_mw=10^(Pr_D/10);
delta=10^(-174/10);
%******************** 计算不同情况下的P_c,P_s *******************************
%*********************** CASE2:P_r=Pr_D **********************************
syms P_c alpha_r;
Pr_D= Pr_D_mw;
P_r= Pr_D_mw;
P_s=(delta+P_c*H_n_cr)/(delta+P_c*H_n_cd)*H_rd/H_sr*Pr_D;
C0=2^(2*Rd_min)-1;
Pr_min= C0*(Pr_D*H_n_rb+delta)/H_cb;
Pr_max=min(Pr_D*H_rd/(H_n_cd*C0)-delta/H_n_cd,Pr_D);
Q=(1+P_c*H_cb/(P_s*H_n_sb+delta))*(1+P_c*H_cb/(P_r*H_n_rb+delta))*(1+P_s*H_sr/(P_c*H_n_cr+delta));
[X_Pr,Y_Pr] = numden(Q); %分离分子X(Pc)、分母Y(Pc)
Zc_alpha_r=X_Pr-alpha_r*Y_Pr; %构造新函数Zr(α,P_c),4次方
Zc_alpha_derivation_r=diff(Zc_alpha_r,P_c); %对构造函数Zr(α,P_c)求1阶导,3次方
X=solve(Zc_alpha_derivation_r==0,P_c); %X:求导后的根,含有α,有3个解
%X=eval(X);
X1=X(1,1); %构造函数Zr(α,P_c)求导后,P_c(α)*的值
X2=X(2,1);
X3=X(3,1);
X1_alpha_r=subs(Zc_alpha_r,P_c,X1); %将求导所得的根带入新函数Zr(α,P_c)中
X2_alpha_r=subs(Zc_alpha_r,P_c,X2);
X3_alpha_r=subs(Zc_alpha_r,P_c,X3);
alpha_r_opt1=solve(X1_alpha_r,alpha_r); %%%运行到这一步就一直busy
alpha_r_opt2=solve(X2_alpha_r,alpha_r);
alpha_r_opt3=solve(X3_alpha_r,alpha_r);
[alpha_c_max1,index1]=max(alpha_r_opt1); %通过比较4组 alpha_c值,找到最大者
[alpha_c_max2,index2]=max(alpha_r_opt2);
[alpha_c_max3,index3]=max(alpha_r_opt3);
note:其中function右边皆为常数项。
错误提示:
操作在以下过程中被用户终止 mupadengine/evalin (line 97)
位置 mupadengine/feval (line 150)
[S,err] = evalin(engine,stmt);
位置 solve (line 170)
sol = eng.feval('symobj::solvefull',eqns,vars);
位置 t1 (line 41)
alpha_r_opt1=solve(X1_alpha_r==0,alpha_r); %得到 alpha_c*
程序运行到红字位置就一直busy,现在不知道是什么情况,求大大帮忙看看。
还有solve函数出现busy一般是什么原因
note:应该不是正在计算,我怀疑是函数卡死了。 展开
1个回答
2018-03-12 · 知道合伙人互联网行家
关注
展开全部
实际上 solve 函数默认的都把变量当作sym来运算
计算出来的结果都是sym对象。
为什么呢? 追去更高的准确度。
譬如solve('x=32/3')计算出来的是32/3 而不是小数
sym对象计算出来的是一个表达式, 而不是数值。
如果您想要得到数值结果的话,再用一个函数eval即可
[x1,y1]=solve('(x-NodeE(1,1))^2+(y-NodeE(2,1))^2=distance(1)^2','(x-NodeE(1,2))^2+(y-NodeE(2,2))^2=distance(2)^2','x,y');
x1=eval([x1]);
y1=eval([y1]);
计算出来的结果都是sym对象。
为什么呢? 追去更高的准确度。
譬如solve('x=32/3')计算出来的是32/3 而不是小数
sym对象计算出来的是一个表达式, 而不是数值。
如果您想要得到数值结果的话,再用一个函数eval即可
[x1,y1]=solve('(x-NodeE(1,1))^2+(y-NodeE(2,1))^2=distance(1)^2','(x-NodeE(1,2))^2+(y-NodeE(2,2))^2=distance(2)^2','x,y');
x1=eval([x1]);
y1=eval([y1]);
追问
主要solve里的方程是个4次方,现在是不出结果啊==
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询