最大无法表示成px+qy(x>=0,y>=0)的数

本文探讨了两个互质数p和q的最大无法表示为px+qy形式的数为pq-q-p,并通过数学推导验证了该结论。进一步讨论了对于大于pq-q-p的所有数n,都能找到合适的x和y使得n=px+qy成立。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有俩个数p,q,且gcd(q,p)(最大公约数)=1,则最大无法表示成px+qy(x>=0,y>=0)的数是pq-q-p(对于n>pq-q-p,都可以表示成px+qy;而pq-q-p,就无法表示成px+qy)。
x>=0,y>=0很重要。
1.
假设可以表示为pq-q-p
那么
px+qy=pq-q-p
p(x+1)+q(y+1)=pq
两边同时MOD p
得到:  0+q(y+1)%p=0
因为 gcd(p,q)=1
所以 y+1=kp
同理 x+1=mq
且k,m为正整数

两边同时除以pq
(x+1)/q+(y+1)/p=1
k+m=1
y+1=kp
x+1=(1-k)q
但是x,y>=0故pq-q-p,就无法表示成px+qy
2.
(p-1)(q-1)=pq-p-q+1
对于n>pq-q-p即n>=(q-1)(p-1)
gcd(p,q)=1
对于z<min{p,q}存在a,b使得ap+bq=z
不妨设a>0>b,显然a>0
那么如果a>q,取a1=a-q,b1=b+p
那么有a1*p+b1*q=z.
如果a1>q,可以继续以得到
Ap+Bq=z,且0<|A|<q,0<|B|<p
pq-p-q=(p-1)q-q=(q-1)p-p
对于n>pq-q-p
n=pq-q-p+k*min{p,q}+r
r<z<min{p,q}
那么取A,B
Ap+Bq=r,且0<|A|<q,0<|B|<p
不妨设A>0
n=pq-q-p+k*min{p,q}+r
=(q-1)p-p+k*min{p,q}+Ap+Bq
=(A-1)p+(B+q-1)p+k*min{p,q}
其中(A-1),(B+q-1)>=0
那么无论min{p,q}是p还是q,都有
对于n>pq-q-p,都可以表示成px+qy

以下是你提供的两页矢量衍射场角谱表示相关公式的整理: ### 第一页公式(矢量衍射场的角谱表示) 自由空间中的矢量波动方程: \[ \nabla^2 \vec{E} + k^2 \vec{E} = 0 \] 在 \( z>0 \) 空间内的解(角谱展开): \[ E_x(x,y,z) = \iint_{-\infty}^{\infty} A_x(p,q) e^{ik(px + qy + mz)} \, dp dq \] \[ E_y(x,y,z) = \iint_{-\infty}^{\infty} A_y(p,q) e^{ik(px + qy + mz)} \, dp dq \] \[ E_z(x,y,z) = -\iint_{-\infty}^{\infty} \left( \frac{p}{m} A_x(p,q) + \frac{q}{m} A_y(p,q) \right) e^{ik(px + qy + mz)} \, dp dq \] 其中: - \( k = \frac{2\pi}{\lambda} \) 为波(\( \lambda \) 是波长); - \( m = \sqrt{1 - p^2 - q^2} \)(满足 \( p^2 + q^2 + m^2 = 1 \),描述平面波传播方向的归一化方向余弦); - \( A_x(p,q) \)、\( A_y(p,q) \) 是 \( x \)、\( y \) 偏振分量的**角谱函**,需从初始场 \( z=0 \) 平面求解。 ### 第二页公式(角谱函的求解) 角谱函 \( A_x(p,q) \)、\( A_y(p,q) \) 由 \( z=0 \) 平面的初始场通过**逆傅里叶变换**定义: \[ A_x(p,q) = \left( \frac{k}{2\pi} \right)^2 \iint_{-\infty}^{\infty} E_x(x,y,0) \exp\left( -ik(px + qy) \right) dx dy \] \[ A_y(p,q) = \left( \frac{k}{2\pi} \right)^2 \iint_{-\infty}^{\infty} E_y(x,y,0) \exp\left( -ik(px + qy) \right) dx dy \] ### 公式的物理意义与关联 1. **矢量波动方程**:基础控制方程,描述自由空间中单色光场(时谐场)的传播规律。 2. **角谱展开**:将空间域光场分解为无穷多平面波分量(不同 \( p,q \) 对应不同传播方向),通过叠加平面波的传播(乘以相位因子 \( e^{ikmz} \))得到 \( z \) 平面的光场。 3. **角谱函**:初始场的“平面波分量振幅谱”,通过傅里叶变换提取不同空间频率的分量,是连接初始场与传播场的桥梁。 ### 代码实现的核心逻辑 1. **初始场定义**:设定 \( z=0 \) 平面的 \( E_x(x,y,0) \)、\( E_y(x,y,0) \)(如高斯光束、线偏振光等)。 2. **角谱计算**:用FFT(快速傅里叶变换)近似积分,计算 \( A_x(p,q) \)、\( A_y(p,q) \)。 3. **传播相位叠加**:对每个角谱分量乘以 \( e^{ikmz} \),模拟平面波传播。 4. **逆变换重建场**:用IFFT(快速逆傅里叶变换)将传播后的角谱转回空间域,得到 \( z \) 平面的 \( E_x, E_y, E_z \)。 请你学习这个并总结
最新发布
06-20
function [X,Y,d0] = plannet_adjustment(d,m,s) global plan_pathname plan_filename plan_netname; global yzd_x0; if(isempty(plan_pathname) || isempty(plan_netname)) [plan_filename, plan_pathname] = uigetfile({ '*.yzd;*.fxz', 'data Files(*.yzd,*.fxz)'; '*.yzd', 'yzd(*.yzd)'; '*.*', 'All Files(*.*)' }, 'Pick a file'); if (isempty(plan_pathname)) return; end i = find('.' == plan_filename); plan_netname = plan_filename(1:i - 1); end yzd_filepath = strcat(plan_pathname, plan_netname, '.yzd'); fxz_filepath = strcat(plan_pathname, plan_netname, '.fxz'); pyzd = dlmread(yzd_filepath); pyzd_n = pyzd(:, 1); pyzd_count = length(pyzd_n); yzd_x0 = pyzd(:, 2); yzd_y0 = pyzd(:, 3); pfxz = dlmread(fxz_filepath); pfxz_qdh = pfxz(:, 1); pfxz_zdh = pfxz(:, 2); pfxz_f = pfxz(:, 3); pfxz_d = pfxz(:, 4); pfxz_f = dms_rad(pfxz_f); bcz_h = find(pfxz_d > 0); Zc = find(pfxz(:, 3) == 0); pcz_count = length(Zc); pbcz_count = length(bcz_h); all_count = max(pfxz_qdh); wzd_count = all_count - pyzd_count; jszb_x(1:all_count, 1) = nan; jszb_y(1:all_count, 1) = nan; jszb_x(1:pyzd_count, 1) = yzd_x0; jszb_y(1:pyzd_count, 1) = yzd_y0; pfxz_count = length(pfxz_f); ZA = ones(pfxz_count, 1).* 9999.999; pfwj = [pfxz, ZA]; ei = 0; while (1) for n = 1:pfxz_count n1 = pfxz_qdh(n); n2 = pfxz_zdh(n); z1 = find(pyzd_n == n1, 1); z2 = find(pyzd_n == n2, 1); if (pfwj(n, 5) ~= 9999.999) continue; end if (~isempty(z1) && ~isempty(z2)) x1 = yzd_x0(n1); y1 = yzd_y0(n1); x2 = yzd_x0(n2); y2 = yzd_y0(n2); [ds, da] = xy_inv(x1, y1, x2, y2); if da < 0 da = da + 2*pi; end pfwj(n, 5) = da; pfwj(n, 4) = ds; ei = ei + 1; n1 = find(pfxz_zdh == n1); n2 = find(pfxz_zdh == n2); n3 = intersect(n1, n2); if (~isempty(n3)) pfwj(n3, 5) = da + pi; pfwj(n3, 4) = ds; ei = ei + 1; end else XZ = find(pfxz(:, 3) == 0); X1 = pfxz_qdh(XZ); z = X1 == n1; z = XZ(z); if (z > 0) if (pfwj(z, 5) ~= 9999.999) pfwj(n, 5) = pfwj(z, 5) + dms_rad(pfxz(n, 3)); ei = ei + 1; n1 = find(pfxz_zdh == n1); n2 = find(pfxz_zdh == n2); n3 = intersect(n1, n2); if (~isempty(n3) && pfwj(n3, 5) == 9999.999) pfwj(n3, 5) = pfwj(n, 5) + pi; ei = ei + 1; end else XZ = find(pfxz(:, 3) ~= 0); X1 = pfxz_qdh(XZ); z2 = X1 == n1; z2 = XZ(z2); if (z2 > 0) zw = pfwj(z2, 5) ~= 9999.999; zp = z2(zw); if (pfwj(zp, 5) ~= 9999.999) zm = zp(1); pfwj(n, 5) = pfwj(zm, 5) - dms_rad(pfxz(zm, 3)) + dms_rad(pfxz(n, 3)); ei = ei + 1; n1 = find(pfxz_zdh == n1); n2 = find(pfxz_qdh == n2); n3 = intersect(n1, n2); if (~isempty(n3)&&pfwj(n3,5)==9999.999) pfwj(n3, 5) = pfwj(n, 5) + pi; ei = ei + 1; end end end end end end end if(ei==pfxz_count) pfwj(:,5)=mod(pfwj(:,5),2*pi); pfwj(:,3)=dms_rad(pfwj(:,3)); break; end end for n=1: pfxz_count if(pfwj(n,4)~=0) continue; end n1=pfxz_qdh(n); n2=pfxz_zdh(n); z1=find(pfxz_qdh==n2); z2=find(pfxz_zdh==n1); n3=intersect(z1,z2); if(n3>0) pfwj(n,4)=pfwj(n3,4); end end e2=0; while(1) for n=1: pfxz_count n1=pfxz_qdh(n); n2=pfxz_zdh(n); if(n1<=pyzd_count && n2<=pyzd_count) continue; elseif(n1<=pyzd_count && n2>pyzd_count) if(isnan(jszb_x(n2))==1) jszb_x(n2)=jszb_x(n1)+pfwj(n,4)*cos(pfwj(n,5)); jszb_y(n2)=jszb_y(n1)+pfwj(n,4)*sin(pfwj(n,5)); e2=e2+1; end elseif(n1>pyzd_count && n2<=pyzd_count) if(isnan(jszb_x(n1))==1) jszb_x(n1)= jszb_x(n2)+pfwj(n,4)*cos((pfwj(n,5)-pi)); jszb_y(n1)= jszb_y(n2)+pfwj(n,4)*sin((pfwj(n,5)-pi)); e2=e2+1; end else if(isnan(jszb_x(n1))==0 && isnan(jszb_x(n2))==1) jszb_x(n2)=jszb_x(n1)+pfwj(n,4)*cos(pfwj(n,5)); jszb_y(n2)=jszb_y(n1)+pfwj(n,4)*sin(pfwj(n,5)); e2=e2+1; elseif (isnan (jszb_x(n1))==1 &&isnan(jszb_x(n2))==0) jszb_x(n1)=jszb_x(n2)+pfwj(n,4)*cos(pfwj(n,5)-pi); jszb_y(n1)=jszb_y(n2)+pfwj(n,4)*sin(pfwj(n,5)-pi); e2=e2+1; end end end if(e2==wzd_count) break; end end Bxx=[]; Bss=[]; Lss=[]; Lxx=[]; Ls=[]; e3=0; for n=1: pcz_count sz=find(pfwj(:,1)==n); dw=pfwj(sz,5)-pfwj(sz,3); sw=find(dw<0); dw(sw)=dw(sw)+2*pi; z0=mean(dw); ni=length(sz); Bx=zeros(ni,2*all_count); Lx=zeros(ni,1); Bs=zeros(1,2*all_count); Ls=zeros(1,1); px(n)=-1/ni; for ii=1: ni nx=sz(ii); n1=pfxz_qdh(sz(ii)); n2=pfxz_zdh(sz(ii)); x1=jszb_x(n1); y1=jszb_y(n1); x2=jszb_x(n2); y2=jszb_y(n2); [a,b]=xy_inv(x1,y1,x2,y2); aij =sin(b).*2062.648./a; bij=-cos(b).*2062.648./a; Lx(ii)=(b-pfwj(nx,3)-z0); if(Lx(ii)<-pi) Lx(ii)= Lx(ii)+2*pi; end Lx(ii)=Lx(ii)*206264.8; if(n1<=pyzd_count&&n2>pyzd_count) Bx(ii,n1*2-1)=0; Bx(ii,n1*2)=0; Bx(ii,n2*2-1)=-aij; Bx(ii,n2*2)=-bij; elseif(n1>pyzd_count&&n2<=pyzd_count) Bx(ii,n1*2-1)=aij; Bx(ii,n1*2)=bij; Bx(ii,n2*2-1)=-0; Bx(ii,n2*2)=-0; elseif(n1<=pyzd_count&&n2<=pyzd_count) Bx(ii,n1*2-1)=0; Bx(ii,n1*2)=0; Bx(ii,n2*2-1)=-0; Bx(ii,n2*2)=-0; else Bx(ii,n1*2-1)=aij; Bx(ii,n1*2)=bij; Bx(ii,n2*2-1)=-aij; Bx(ii,n2*2)=-bij; end if(ii==length(sz)) e3=e3+1; Bxx=[Bxx; Bx]; Bs=sum(Bx); Bss=[Bss;Bs]; Lxx=[Lxx; Lx]; Ls=sum(Lx); Lss=[Lss;Ls]; end end end bz=find(pfxz_d~=0); sz=length(bz); Bx=zeros(sz,2*all_count); Ls=zeros(sz,1); Ps=zeros(sz,1); for ii=1:sz nx=bz(ii); n1=pfxz_qdh(nx); n2=pfxz_zdh(nx); x1=jszb_x(n1); y1=jszb_y(n1); x2=jszb_x(n2); y2=jszb_y(n2); [a,b]=xy_inv(x1,y1,x2,y2); dx=x2-x1; dy=y2-y1; bij=(y1-y2)/a; aij=(x1-x2)/a; lij=(a-pfwj(nx,4))*100; xs=m+s*pfwj(nx,4)/1000; xs=xs/10; Ps(ii)=(10/xs)^2; if(n1<=pyzd_count&&n2>pyzd_count) Bx(ii,n1*2-1)=-0; Bx(ii,n1*2)=-0; Bx(ii,n2*2-1)=-aij; Bx(ii,n2*2)=-bij; Ls(ii)=lij; elseif(n1>pyzd_count&&n2<=pyzd_count) Bx(ii,n1*2-1)=aij; Bx(ii,n1*2)=bij; Bx(ii,n2*2-1)=-0; Bx(ii,n2*2)=-0; Ls(ii)=lij; elseif(n1>pyzd_count&&n2>pyzd_count) Bx(ii,n1*2-1)=aij; Bx(ii,n1*2)= bij; Bx(ii,n2*2-1)=-aij; Bx(ii,n2*2)=-bij; Ls(ii)=lij; end end Bxx=[Bxx;Bx]; Lxx=[Lxx;Ls]; Bxx=[Bxx;Bss]; Lxx=[Lxx;Lss]; B=Bxx(:,pyzd_count *2+1:end); Om1=ones(1,pfxz_count); Om2=blkdiag(px); Om3=blkdiag(Ps); Om=[Om1,Om3',Om2]; P=diag(Om); Pv=diag([Om1,Om3']); N=B'*P*B; W=B'*P*Lxx; dx=N\W; X1=dx(2:2:end,:); Y1=dx(2:2:end,:); X=jszb_x(pyzd_count+1:end,:)+X1./100; Y=jszb_y(pyzd_count+1:end,:)+Y1./100; Vx=B*dx-Lxx; Vd=length(Vx); V=Vx(1:Vd-pcz_count); n=pbcz_count+pfxz_count; r=n-2* wzd_count; d0=sqrt(V'*Pv*V/r); fprintf('\n平面网平差参:\n'); fprintf('角度观测精度: %.2f 秒\n', d); fprintf('测距固定误差: %.2f mm\n', m); fprintf('测距比例误差: %.2f ppm\n', s); fprintf('单位权中误差: %.4f\n', d0); fprintf('X=: ', X=jszb_x(pyzd_count+1:end,:)+X1./100); fprintf('Y=: ', Y=jszb_y(pyzd_count+1:end,:)+Y1./100); hold on; title('乔培控制网略图'); xlabel('Y'); ylabel('X'); for n=1: pfxz_count n1=pfxz_qdh(n); n2=pfxz_zdh(n); x1=jszb_x(n1); y1=jszb_y(n1); x2=jszb_x(n2); y2=jszb_y(n2); hold on; if(n1<=pyzd_count &&n2<=pyzd_count) plot([y1, y2],[x1, x2],'->b','LineWidth', 2); text(y1+50,x1+50,num2str(n1)); elseif(n1>pyzd_count &&n2>pyzd_count) plot([y1,y2],[x1,x2],'-sb'); text(y1+50,x1+50,num2str(n1)); else plot([y1, y2],[x1,x2],'b'); end end i=1; for j=1: wzd_count Qx=N(i,i); Qy=N(i+1, i+1); Qxy=N(i,i+1); K=sqrt((Qx-Qy).^2+4*Qxy.^2); EE=d0.^2*(Qx+Qy+K)./2; FF=d0.^2*(Qx+Qy-K)./2; E=sqrt(EE); F=sqrt(FF); i=i+2; Qe=EE/d0; fe=atan((Qe-Qx)/Qxy); yy=Y(j)+(E*cos(0: 0.01:2*pi)* sin(fe)+F*sin(0:0.01:2*pi)* cos(fe))* 100; xx=X(j)+(E*cos(0: 0.01:2*pi)* cos(fe)-F*sin(0:0.01:2*pi)* sin(fe))* 100; plot(yy,xx,'r'); end axis equal; end
05-31
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值