先扔结论:我赞同高赞回答中“电阻影响很小”这个结论,但是不赞同“等价于三段电阻串联”。因为,相对于中段变细导致的的电阻增量,衔接处边缘效应引起的电阻增量并不能忽略,甚至影响会更大。
实际上,电流线-等势面的形态随着切痕深度的变换是这样改变的:
https://www.zhihu.com/video/1127010810303676416我们这里为了方便计算使用正方形截面的电线,这样的话问题就转化成了一个二维问题,和圆形截面电线的结论相比,在定性结论上误差是可以接受的。
简化模型是直接把三段串联在一起,也就是近似认为电流密度是这样的,横轴是横坐标x,纵轴是沿x方向的电流密度,我们把电阻率ρ和总电流I设为单位1,因为 ,所以曲线围成的面积就是电阻:
这个就是 @Patrick Zhang 的回答中用的近似模型。但是仔细看就会发现,在交界的地方电流密度有一个突变,这个是忽略了边缘效应之后近似的结果,但是这种情况下边缘效应真的能忽略吗?要知道事实上电流的走向是这样的:
由于电流在进入中段之前就已经开始“收拢”,所以实际上边缘处还会有边缘效应引起的电阻增大。很容易理解:这个增量和中段的长度是基本无关的。所以,当切痕足够细的时候,“边缘效应的影响”会远远大于“中段变细导致的电阻增量”。甚至于当切痕趋向于无限窄时,中段增量会趋向于0,但是边缘效应电阻仍然维持在一个常数上。
现在我们就要计算边缘效应的大小。
我们设:
导线截面正方形边长为A,切割痕深度H,隔痕宽度为L,电阻率为单位1。
因为中段可以看做平稳的流线,所以这里近似为“纯的边缘效应+纯中段”来叠加。电阻可以分开计算:
左边(中段)的电阻增量比较好计算:
也就是说,中段增加的电阻等价于额外的HL/(A-H)长度的原导线。
然后是右边图考虑的边缘效应问题,我们这样建立一个坐标系:
构造一个复变函数,映射 x'+iy'=f(x+iy),为:
其中,根号虚数的取值限制为:
虚数对数的取值限制为:
容易证明,以上映射在我们考虑的开区间内(上图蓝色区域,不包括边界)中有以下几个性质:
下图,连续的边界对应到连续的边界上(有折返),注意A-B-C-D-E边界:
所以说这个变换对于上图两个蓝色区域是共形变换。而拉普拉斯方程在共形变换下是保持不变的。
可以看到,上图中橘黄色的流线和深蓝色的等电势线在变换后依旧满足拉普拉斯方程。y'~x'坐标中的电流是匀强的。y-x图中的电路在两侧足够远处也是匀强的。所以我们只需要计算在足够远处电势线的位移量就行了。
△x是右侧原处电势线的位移量,是H和A的函数。它不是解析的,不过随x增大收敛得很快,所以取个大x直接数值计算比较方便:
当H=0.1A时,△x=0.0079A,
当H=0.5A时(切到一半),△x=0.2206A
当H=0.8A时,△x=0.7475A
当H=0.9A时,△x=1.181A
当H=0.95A时,△x=1.6203A
当H=0.99A时,△x=2.644A
那么边缘效应增加的电阻就应该是:
加上中段收窄导致增加的电阻
就是总的电阻增加量。
比较两种效应的大小,我们这里假设截面边长A=4mm,刀宽L=0.5mm或1mm,导线材质为铜电阻率17.2μΩ·mm,则:
可以看出,切口很浅或者很深的时候,中段增阻效应占主导,当切口深度适中的时候,边缘效应就很大了。
同样,我们注意到,中段电阻增量和刀的厚度成正比。所以当切口很薄的时候,比如产生裂纹的时候,边缘效应就会是主要的影响因素。
=============分割线============
开头那个视频是用代码生成的图像连成的,代码放一下:
c代码如下:
#include <stdio.h> #include <stdlib.h> #include <math.h> #include <string.h> #pragma pack(2) #define pi 3.1415926535897932384626 #define pixel_w_max 720 #define pixel_h_max 600 #define step_x 0.125 #define step_y 0.125 #define scale (1.0/(pixel_h_max+1)) #define move_y (1.0/(pixel_h_max+1)) #define move_x (0.5/(pixel_h_max+1)) //bmp图像文件支持用定义模块 typedef struct { unsigned short bfType; unsigned long bfSize; unsigned short bfReserved1; unsigned short bfReserved2; unsigned long bfOffBits; } BITMAPFILEHEADER; //文件头数据 typedef struct { unsigned long biSize; long biWidth; long biHeight; unsigned short biPlanes; unsigned short biBitCount; unsigned long biCompression; unsigned long biSizeImage; long biXPelsPerMeter; long biYPelsPerMeter; unsigned long biClrUsed; unsigned long biClrImportant; } BITMAPINFOHEADER; //位图信息段数据 typedef struct{ int len,size; BITMAPFILEHEADER *fileHeader; BITMAPINFOHEADER *bitmapHeader; unsigned char *bits; } BMPmap; //bmp图像文件数据 inline BMPmap *newmap(int Map_xmax,int Map_ymax) //创建一个新的BMP图像,参数为图像的宽、高像素 { BMPmap *p; p=(BMPmap*)malloc(sizeof(BMPmap)); p->len=(Map_xmax*3-1|3)+1; //每一行的字节数 p->size=p->len*Map_ymax; p->fileHeader=(BITMAPFILEHEADER *)malloc(sizeof(BITMAPFILEHEADER)); p->bitmapHeader=(BITMAPINFOHEADER *)malloc(sizeof(BITMAPINFOHEADER)); p->bits=(unsigned char*)malloc(p->size); p->fileHeader->bfType=0x4D42; p->fileHeader->bfReserved1=0; p->fileHeader->bfReserved2=0; p->fileHeader->bfSize=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+p->size; p->fileHeader->bfOffBits=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER); p->bitmapHeader->biSize=sizeof(BITMAPINFOHEADER); p->bitmapHeader->biHeight=Map_ymax; p->bitmapHeader->biWidth=Map_xmax; p->bitmapHeader->biPlanes=1; p->bitmapHeader->biBitCount=24; p->bitmapHeader->biSizeImage=p->size; p->bitmapHeader->biCompression=0; p->bitmapHeader->biXPelsPerMeter=0; p->bitmapHeader->biYPelsPerMeter=0; p->bitmapHeader->biClrUsed=0; p->bitmapHeader->biClrImportant=0; return p; } inline void makepoint(BMPmap *m,int x,int y,unsigned char red,unsigned char green,unsigned char blue) //写入一个点 { int index; index=y*m->len+x*3; m->bits[index]=blue; m->bits[index+1]=green; m->bits[index+2]=red; } inline void savemap(const char *filename,const BMPmap *m) //将图像保存到文件 { FILE *output=fopen(filename,"wb"); fwrite(m->fileHeader,sizeof(BITMAPFILEHEADER),1,output); fwrite(m->bitmapHeader,sizeof(BITMAPINFOHEADER),1,output); fwrite(m->bits,m->size,1,output); fclose(output); } inline void cleanmap(BMPmap *m) //删除图像 { free(m->fileHeader); free(m->bitmapHeader); free(m->bits); free(m); } //图像定义支持模块完 typedef struct { double Re; double Im; }cplxnum;//定义复数 inline double sqr(double x){return x*x;} cplxnum exp_cplx(cplxnum x){ // e^x cplxnum y; double len; len=exp(x.Re); y.Re=len*cos(x.Im); y.Im=len*sin(x.Im); return y; } cplxnum ln_cplx(cplxnum x){ // ln x cplxnum y; double arg; double len; len = sqrt(sqr(x.Re) + sqr(x.Im)); if (fabs(x.Re)<0.0001) if (x.Im>0) arg=0.5*pi; else arg=1.5*pi; else if (x.Re>0) if (x.Im>0) arg=atan(x.Im/x.Re); else arg=2*pi+atan(x.Im/x.Re); else arg=pi+atan(x.Im/x.Re); y.Re = log(len); y.Im = arg; return y; } cplxnum sqrt_cplx(cplxnum x){ // sqrt(x) cplxnum y; double arg; double len; len = sqrt(sqr(x.Re) + sqr(x.Im)); if (fabs(x.Re)<0.0001) if (x.Im>0) arg=0.5*pi; else arg=1.5*pi; else if (x.Re>0) if (x.Im>0) arg=atan(x.Im/x.Re); else arg=2*pi+atan(x.Im/x.Re); else arg=pi+atan(x.Im/x.Re); y.Re = sqrt(len)*cos(0.5*arg); y.Im = sqrt(len)*sin(0.5*arg); return y; } cplxnum sqr_cplx(cplxnum x){ // x^2 cplxnum y; y.Re=sqr(x.Re)-sqr(x.Im); y.Im=2*x.Re*x.Im; return y; } cplxnum recpcl_cplx(cplxnum x){ // 1/x cplxnum y; double b; b=sqr(x.Re)+sqr(x.Im); y.Re=x.Re/b; y.Im=-x.Im/b; return y; } cplxnum map(cplxnum x,double h){ //映射复变函数 x.Re*=pi; x.Im*=pi; x=exp_cplx(x); x.Re+=1; x=recpcl_cplx(x); x.Re*=-2; x.Im*=-2; x.Re+=1; x=sqr_cplx(x); x.Re+=sqr(tan(0.5*pi*h)); x=sqrt_cplx(x); x.Re*=-cos(0.5*pi*h); x.Im*=-cos(0.5*pi*h); x.Re+=1; x=recpcl_cplx(x); x.Re*=2; x.Im*=2; x.Re+=-1; x=ln_cplx(x); x.Re/=pi; x.Im/=pi; return x; } int main(){ double h; bool cube_x[pixel_w_max][pixel_h_max]; bool cube_y[pixel_w_max][pixel_h_max]; bool cubevalid[pixel_w_max][pixel_h_max]; int px,py,mx,my,mx_flip; BMPmap *m; cplxnum x,y; printf("h/a="); scanf("%lf",&h); if (h<=0 || h>=1) {printf("err");return -1;} for (px=0;px<pixel_w_max;px++) //计算正实部区域方格 for (py=0;py<pixel_h_max;py++){ x.Re=px*scale+move_x; x.Im=py*scale+move_y; cubevalid[px][py] = !(px==0 && x.Im<=h); y=map(x,h); cube_y[px][py] = (int)(y.Im/step_y)%2; cube_x[px][py] = (int)(y.Re/step_x)%2; } if ((m=newmap(pixel_w_max*2,pixel_h_max+4))==NULL) {printf("err
");return -1;} for (mx=pixel_w_max,mx_flip=pixel_w_max-1;mx<pixel_w_max*2;mx++,mx_flip--) //生成图像 for (my=0;my<pixel_h_max+4;my++){ px=mx-pixel_w_max; py=my-2; if (!cubevalid[px][py] || my<=1 || my>=pixel_h_max+2) { makepoint(m,mx ,my,0x00,0x00,0x00); makepoint(m,mx_flip,my,0x00,0x00,0x00); } else if (py!=0 && cube_y[px][py]!=cube_y[px][py-1] || py!=pixel_h_max-1 && cube_y[px][py]!=cube_y[px][py+1] || px!=0 && cube_y[px][py]!=cube_y[px-1][py] || px!=pixel_w_max && cube_y[px][py]!=cube_y[px+1][py] || py==0 || py==pixel_h_max-1 || px==1&&!cubevalid[0][py] || px==0 && !cubevalid[0][py-1]) { makepoint(m,mx ,my,0xff,0x80,0x00); makepoint(m,mx_flip,my,0xff,0x80,0x00); } else if (py!=0 && cube_x[px][py]!=cube_x[px][py-1] || py!=pixel_h_max-1 && cube_x[px][py]!=cube_x[px][py+1] || px!=0 && cube_x[px][py]!=cube_x[px-1][py] || px!=pixel_w_max && cube_x[px][py]!=cube_x[px+1][py] || px==0) { makepoint(m,mx ,my,0x66,0xcc,0xff); makepoint(m,mx_flip,my,0x66,0xcc,0xff); } else { makepoint(m,mx ,my,0xff,0xff,0xff); makepoint(m,mx_flip,my,0xff,0xff,0xff); } } savemap("1.bmp",m); cleanmap(m); printf("done!"); return 0; }
很敬佩那个PZ的认真精神,不过结果是错误的。既然评论被删除了,看来知乎这个问题下没能人,我就简要推导一下:
1.被截取一半面积处的导线,通以原导线的安全载流电流,被截取处首先会较热一些,热多少随你开心 ;
2.导体发热会增大自己的电阻率,阻值增大多少随你开心 ;
3.阻值增大后,相较其他未被截取部分,电源的能量将更明显地集中在被截取处,像红花配绿叶一样明显;
4.被截取处的温度继续升高,阻值继续增大,正反馈的圈圈,自我放大的圈圈;
5.放大到多少啊,放大到温升变量和散热变量相等,这个放大过程就到头了。裸导线直流电的散热更好一些,问题中没说明,那就按可能中更劣势的绝缘线交流电,带皮儿的噢,电气安全第一;
7.导体部分直接缺少一半导电截面,无论缺少的截面是什么形状,这都是极其危险严重的情况,任何电气从业人员都绝不能轻视;
8.自己拿一根一米长裸铜导线,煤气炉上烧一头,手拿另一头,算算时间,你就对最好的散热情况有数了,就对这个回答可不可信有数了;
理解难点在,安全载流量下的导体,所有地方都发热,越热的地方越热,热源趋向集中在一点。
次日增加:网查了公式,理论上截取一半截面积后,抗拉强度降低至1/2,载流能力降低至1/√2,短路能力降低至1/4。公式自己查哦