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) 这里应该怎么编程??
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) 这里应该怎么编程??