24小时热门版块排行榜    

查看: 1654  |  回复: 6
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

watertxf

铁虫 (初入文坛)

[求助] matlab解四次方程的问题 已有1人参与

matlab解四次方程的问题,我写的程序如下:要求在w=0.9:0.01:1.1的范围内求x的最大值*R随gamma=1.1:0.5:10的变化,大家能帮忙看一下出什么问题了吗?
非常感谢!
clear
clc
syms x
w=0.9:0.01:1.1;%21个
gamma=1.1:0.5:10;%18个
c=3*10^8;
wpb=0.2;
R=2.3*10^-2;


for j=1:18 %gamma
    v(j)=c*sqrt(1-1/gamma(j)^2);
    for i=1:21 %w
    y(i)=1+0.2^2/(1-w(i)^2+2i*0.015*w(i));
    %wpb(j)=sqrt((1.602*10^-19)^2*10^9/(9.109*10^-31*8.85*10^-12*gamma(j)^3));
    f(i,j)=(y(i)*(w(i)*2*pi*24*10^9)^2/c^2-x^2)*(1-(wpb*2*pi*24*10^9)^2/(((w(i)*2*pi*24*10^9)-x*v(j))^2*y(i)))-2.4048^2/R^2;
    k=solve(f);  %解出来k有四个根,
    k2=imag(k)*R;%需要k2的第四个根的值
    k2=double(k2);
    %m1(i)=k1(1,;
    %m2(i)=k1(2,;
    %m3(i)=k1(3,;
    %m4(i)=k1(4,;
    %n1(i)=k2(1,;
    %n2(i)=k2(2,;
    %n3(i)=k2(3,;
    %n4(i)=k2(4,;
    end
   k3(j)=max(k2);
end
%d=max(d)

semilogy(gamma,k3,'b --')
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hppdyx

木虫 (知名作家)

引用回帖:
4楼: Originally posted by hppdyx at 2013-12-12 20:26:07
首先,你这个程序里面有很多小细节上的错误,还有一些错误需要你解释一下才行。我把你的程序改了一下,调试之后可以了,不过不知道符不符合你的要求。
function k = res2

syms x
w = 0.9 : 0.01 : 1.1; %21个 ...

不好意思,倒数第六行的sqrt改为abs。。。。图形的走势是一致的
不以风骚惊天下,但求淫荡动世人
5楼2013-12-12 20:43:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 7 个回答

hppdyx

木虫 (知名作家)

【答案】应助回帖

我没有试,也不知道出的什么错误,不过solve求解都是把变量当作sys来看,所以求解出来的解是表达式而不是数值,因此可以试着加上eval函数,看看行不行

» 本帖已获得的红花(最新10朵)

不以风骚惊天下,但求淫荡动世人
2楼2013-12-06 13:09:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

watertxf

铁虫 (初入文坛)

送红花一朵
引用回帖:
2楼: Originally posted by hppdyx at 2013-12-06 13:09:21
我没有试,也不知道出的什么错误,不过solve求解都是把变量当作sys来看,所以求解出来的解是表达式而不是数值,因此可以试着加上eval函数,看看行不行

非常感谢您的帮助!我对matlab不是太熟悉,能不能麻烦您告诉我怎样加上eval函数求解?不胜感激!
3楼2013-12-10 14:32:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hppdyx

木虫 (知名作家)

引用回帖:
3楼: Originally posted by watertxf at 2013-12-10 14:32:57
非常感谢您的帮助!我对matlab不是太熟悉,能不能麻烦您告诉我怎样加上eval函数求解?不胜感激!...

首先,你这个程序里面有很多小细节上的错误,还有一些错误需要你解释一下才行。我把你的程序改了一下,调试之后可以了,不过不知道符不符合你的要求。
CODE:
function k = res2

syms x
w = 0.9 : 0.01 : 1.1; %21个
gamma = 1.1 : 0.5 : 10;   %18个
c = 3 * 10^8;

R = 2.3 * 10^-2;

n1 = length(w);
n2 = length(gamma);
v = zeros(n2);
y = zeros(n1);
wpb = zeros(n2);
f = sym(zeros(n1, n2));
k = zeros(n1 * n2, 1);

for j = 1 : 18        %gamma
    v(j) = c * sqrt(1 - 1 ./ gamma(j).^2);
    for i = 1 : 21        %w
    y(i) = 1 + 0.2^2 ./ (1 - w(i).^2 + 2 * i * 0.015 * w(i));
    wpb(j) = sqrt((1.602 * 10^-19)^2 * 10^9 ./ (9.109 * 10^-31 * 8.85 * 10^-12 * gamma(j)^3));
    f(i, j) = (y(i) * (w(i) * 2 * pi * 24 * 10^9)^2 / c^2 - x^2) * (1 - (wpb(j) * 2 * pi * 24 * 10^9)^2 / (((w(i) * 2 * pi * 24 * 10^9) - x * v(j))^2 * y(i))) - 2.4048^2 / R^2;
    k((i-1) * n2 + j) = max(sqrt(eval(solve(f(i, j)))));  
    end
end
semilogy(gamma, k(1:18), 'b--');
figure;
plot(gamma, k(1:18), 'r');

结果如图所示:
matlab解四次方程的问题
matlab解四次方程的问题-1
不以风骚惊天下,但求淫荡动世人
4楼2013-12-12 20:26:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见