PDA

查看完整版本 : [求助]如何解出这个复杂方程组?


wolfnet
2008-07-10, 20:24
常量
L=0.175*2;
A=0.09;
w=400;
u0=4*pi*10.^(-7);
Rmag=1/u0*L/A;
Rluft=1/u0*0.0048/(1.1*A);

变量 x
i是从-1到1变化的,取值可以是-1:0.01:1

方程
H=-diff(f1);
f1=i*w-f2;
f2=sign(x)*L*H*(abs(x)/A);
f3=L*H*(abs(f4)/A)/[abs(f4)+10^(-9)];
f4=x-i*w/Rmag+f1/Rmag;
x=(i*w-f2)*[1/Rmag+1/(Rluft+f3)];

sign这个命令在这里总是出错,我不知道哪里错了.我用的是solve命令解的,解不出来。后来我一步一步分来解,sign这里出错。


我的程序

function [Ftots, Flufts, RFe2s, VRFe1s] = myresolve(indices, l, H, A, Ro, Rluft)

indices = -400:1:400; %这个相当于i*w
L= 0.175*2;
H = 1;
A = 0.03*0.029;
u0 = 4*pi*10.^(-7);
Rmag = 1/u0*l/A;
Rluft = 1/u0*0.0048/(1.1*A);
Ftots=[];
Flufts=[];
RFe2s=[];
VRFe1s=[];

for index=indices,
f2=sym(sprintf('VRFe1=(%g)*Ftot', l*H/A)); %Ftot就是x,这里是f2
f3=sym(sprintf('RFe2=(%g)*abs(Fluft)/(abs(Fluft)+10^(-9))', l*H/A)); %f3
f4=sym(sprintf('Fluft=Ftot-(%g)/(%g)+VRFe1/(%g)', index, Rmag, Rmag)); %f4
f5=sym(sprintf('Ftot=((%g)-VRFe1)*(1/(%g)+1/((%g)+RFe2))', index, Rmag, Rluft)); %x的方程

[Ftot, Fluft, RFe2, VRFe1] = solve(f1, f2, f3, f4);
Ftots=[Ftots eval(Ftot)];
Flufts=[Flufts eval(Fluft)];
RFe2s=[RFe2s eval(RFe2)];
VRFe1s=[VRFe1s eval(VRFe1)];
end
end



这样编,我去掉了2个问题,sign的判定,还有H应该是f1的一阶导数。
结果倒是能算出来,但是我想要i和Ftot的图像, 我输入plot命令就出错.这是怎么回事呢?


第2个问题,如果加入sign还有H=-diff(index-VRFe1) 这里应该怎么编程??

mathjiang
2008-07-18, 20:30
:tongue: :biggrin: