《电机学》课程设计Word格式.doc
《《电机学》课程设计Word格式.doc》由会员分享,可在线阅读,更多相关《《电机学》课程设计Word格式.doc(18页珍藏版)》请在冰豆网上搜索。
![《电机学》课程设计Word格式.doc](https://file1.bdocx.com/fileroot1/2022-10/4/d1220d3b-c6df-493f-b2d4-660787b4d859/d1220d3b-c6df-493f-b2d4-660787b4d8591.gif)
磁场关系:
则方程为:
1.假设铁芯的磁导率为无穷大,
(1)若I2=0,Φ1=6mWb,求I1
(2)若I1=10A,I2=20A,求Φ1和Φ。
铁芯的磁导率为无穷大,则铁芯磁路H=0,方程化简为
(1)将I2=0,Φ1=6mWb带入上式方程,得I1=57.2958A
(2)将I1=10A,I2=20A带入上式方程,得B1=0.418879T,B2=-0.628319T,则Φ1=B1ld=1.04720mWb,Φ2=B2ld=-1.57080mWb
Φ1=6mWb,则B1=Φ1/(ld)=2.4T
采用编程法求解,由方程
可看作未知数为B2的一元非线性方程,通过二分法求解出B2,再计算出B3,然后由方程
计算出I1。
为提高计算精度,可使用拉格朗日插值法或曲线拟合法,对表中不能直接得到的数据进行近似计算。
本题使用拉格朗日插值法。
拉格朗日插值法:
假设任意两个不同的xj都互不相同,那么应用拉格朗日插值公式所得到的拉格朗日插值多项式为:
其中每个为拉格朗日基本多项式(或称插值基函数),其表达式为:
拉格朗日基本多项式的特点是在上取值为1,在其它的点上取值为0。
代码如下:
#include<
iostream>
cstdlib>
cmath>
iomanip>
stdlib.h>
usingnamespacestd;
doubledelta1=0.003,delta2=0.002,w=0.125,h=0.15,n1=100,n2=50,l=0.05,d=0.05;
doublepi=3.1415926535898;
doubleu0=4*pi*pow(10,-7);
doublei1,i2,f10,f20;
inti_diedai_root1=0,i_diedai_root2=0,i_ddjs=0;
doublebh[2][150]={{0.4 ,
doubleLagrange(doublexx);
doubleb2h(doubleb);
doublef2(doubleb2,doubleb1);
doubleroot2(doublex1,doublex2,doubleb1);
doublelinearfit2(doublex);
doublelinearfit1(doublex);
intmain()
{
doubleb1,b2,b3,h1,h2,h3,f1,f2;
b1=2.4;
b2=root2(0,2.4,b1);
b3=b1-b2;
i1=(h1*(2*w+h+3*l-delta1)+b1*delta1/u0+h3*(h+l))/n1;
i2=(b2h(b2)*(2*w+h+3*l-delta2)+b2*delta2/u0-b2h(b3)*(h+l))/(-n2);
cout<
<
endl<
"
计算过程信息:
二分法计算B2次数:
i_diedai_root1<
endl;
磁密计算结果:
setprecision(16)<
B1="
b1<
B2="
b2<
B3="
b3<
endl;
磁通计算结果:
Φ1="
b1*l*d<
Φ2="
b2*l*d<
Φ3="
b3*l*d;
I1="
i1;
结果验算:
"
Φ1="
(b2+b3)*l*d<
I2="
i2;
system("
pause"
);
return0;
}
doubleb2h(doubleb)//计算磁场强度H,输入磁感应强度B,输出磁场强度H
{intt;
doubleh_t;
t=abs((int)(100*b))-40;
if(t>
134)
{
if(b>
=0)
returnlinearfit2(b);
elsereturn-linearfit2(-b);
}
if(t<
15)
{
if(b>
returnlinearfit1(b);
elsereturn-linearfit1(-b);
}
=0)returnLagrange(b);
elsereturn-Lagrange(-b);
doubleLagrange(doublexx)//拉格朗日插值,输入自变量,输出插值函数值
inti=0,j=0,n=150,z=0;
doublepai,sum;
double*x,*y;
x=bh[0];
y=bh[1];
z=((int)(100*xx))-45;
if(xx<
=0.45)z=0;
n=10+z;
if(xx>
1.84)n=6+z;
for(j=z,sum=0;
j<
n;
j++)
for(i=z,pai=1;
i<
i++)
if(i==j)continue;
pai=pai*(xx-*(x+i))/(*(x+j)-*(x+i));
sum=sum+*(y+j)*pai;
returnsum;
doublelinearfit2(doublex)
return(56450*x-89188);
doublelinearfit1(doublex)
return(202.21*x+57.015);
doublef2(doubleb2,doubleb1)
doubleb3,h2,h3;
h2=b2h(b2);
h3=b2h(b3);
returnh2*(2*w+h+3*l-delta2)+b2*delta2/u0-h3*(h+l)+n2*i2;
doubleroot2(doublex1,doublex2,doubleb1)
doublex,y,y1;
y1=f2(x1,b1);
do
cout<
'
!
;
i_diedai_root1++;
if(i_diedai_root1>
=1000000)break;
x=(x1+x2)/2;
y=f2(x,b1);
if(y*y1>
0)
x1=x;
y1=y;
else
x2=x;
}while(fabs(y)>
=2*pow(10,-13));
returnx;
计算结果(设定收敛精度10^-13):
计算结果:
B1=2.4T,B2=0.721749T,B3=1.67825T
Φ1=0.006Wb,Φ2=0.0018044Wb,Φ3=0.00419563Wb
I1=57.2958A
改变程序,使收敛精度降低为10^-10,则运算精度降低,但循环次数减小,时间开销减下。
Φ1=0.006Wb,Φ2=0.0018044Wb,Φ3=0.00419563Wb
I1=57.2958A
编程用迭代法实现,计算时先用铁芯磁导率为无穷大情况时近似计算B1,B2,B3的值,将B3的值作为定值计算出H3的值带入方程
(1)
(2),用弦截法计算出B1和B2的值并计算出B3的值,与之前的值比较,若在允许的误差范围以内则计算结束输出计算值,否则将B3的值带入进行下一次循环,直到B3的精度达到要求。
计算步骤如下:
① 近似情况下求得
② 代入方程
(1)
(2),通过弦截法求得,
③ 求得
④ 与比较,若精度达到要求,则,,即为所求
⑤ 若精度达不到要求,则重复2,3,4步骤,求得,直到精度足够即与之差足够小
⑥ 通过得到的求
用近似计算结果充当第零次迭代值,因精确值与近似值偏差不是很大,可加快收敛,减小迭代次数,并可避免因步长太大或太小而不能收敛。
程序执行时可选择是否进行拉格朗日插值法或曲线拟合法,提高磁场强度的精确度。
拉格朗日插值法计算量很大,时间消耗太大,故采用曲线拟合法。
因曲线变化范围较大,对整个曲线进行拟合比较困难,如使用6次多项式进行拟合,系数达到105数量级,R2为0.9995。
因此,对曲线进行分段拟合:
图像如图所示,其中蓝点为磁化曲线上的点,不同颜色的曲线为拟合曲线。
磁化曲线(B-H)
磁化曲线(H-B)
流程图如下:
#inclu