이 질문을 팔로우합니다.
- 팔로우하는 게시물 피드에서 업데이트를 확인할 수 있습니다.
- 정보 수신 기본 설정에 따라 이메일을 받을 수 있습니다.
Warning: Non-finite result. The integration was unsuccessful. Singularity likely.
조회 수: 6 (최근 30일)
이전 댓글 표시
Hi i run a code thta include two doyble integration i recieve e message Warning: Non-finite result. The integration was unsuccessful.
but the final resulta are finite what happen ? the results are reliably ?
the main code is
currentMoM()
f = 300000000
N = 40
ra = 1
k0 = 6.2832
Z0 = 376.9911
lambda = 1
ans = NaN + NaNi
Warning: Non-finite result. The integration was unsuccessful. Singularity likely.
ans = NaN + NaNi
Unrecognized function or variable 'Efieldin'.
Error in solution>@(x)(4./(Z0.*k0)).*triangle_basisn(x,index_i).*Efieldin(x) (line 37)
func=@(x)(4./(Z0.*k0)).*triangle_basisn(x,index_i).*Efieldin(x);
Error in integralCalc>iterateScalarValued (line 334)
fx = FUN(t);
Error in integralCalc>vadapt (line 148)
[q,errbnd] = iterateScalarValued(u,tinterval,pathlen, ...
Error in integralCalc (line 77)
[q,errbnd] = vadapt(vfunAB,interval, ...
Error in integral (line 87)
Q = integralCalc(fun,a,b,opstruct);
Error in solution>currentMoM (line 38)
gm(index_i) =integral(func,Phi0(index_i),Phi0(index_i)+2*pi/N);
function [Is]=currentMoM()
%UNTITLED2 Summary of this function goes here
% Detailed explanation goes here
[f,N,ra,k0,Z0,lambda] = parameter()
gamma_const=1.781;
%Phi0=zeros(N);
e=exp(1);
dftm=2.*pi./N;
for jj = 1:N
Phi0(jj)=(jj-1).*dftm;
end
% delta_c(i) = sqrt((pos(i,1) - pos(i+1,1))^2 + (pos(i,2) - pos(i+1,2))^2);
lmn = zeros(N);
%zmn = zeros(N);
gm = zeros(1,N);
zmn = zeros(N);
%vim = zeros(1,N);
%vsn = zeros(1,N);
coeif=(Z0.*k0./4).*ra.*dftm;
coeifn=(Z0./2).*sin(k0.*ra.*dftm./2);
for index_i = 1:N
for index_j = 1:N
if index_i == index_j
funa = @(x,y)triangle_basisn(x,index_i).*triangle_basisn(y,index_j).*ra.*(1-j.*(2/pi).*log((gamma_const./2).*k0.*ra.*sqrt(2-2.*cos(x-y)))) ;
funa(Phi0(index_i),Phi0(index_j))
lmn(index_i,index_j) =integral2(funa,Phi0(index_i),Phi0(index_i)+2*pi/N,Phi0(index_j),Phi0(index_j)+2*pi/N);
lmn(index_i,index_j)
else
funb = @(x,y)triangle_basisn(x,index_i).*triangle_basisn(y,index_j).*ra.*besselh(0,2,k0.*ra.*sqrt(2-2.*cos(x-y)));
lmn(index_i,index_j) =integral2(funb,Phi0(index_i),Phi0(index_i)+2*pi/N,Phi0(index_j),Phi0(index_j)+2*pi/N);
func=@(x)(4./(Z0.*k0)).*triangle_basisn(x,index_i).*Efieldin(x);
gm(index_i) =integral(func,Phi0(index_i),Phi0(index_i)+2*pi/N);
zmn(index_i,index_j) = lmn(index_i,index_j) ;
end
%vim(index_i) = delta_c(index_i) * exp(j*k0*(xm(index_i)*cos(phi_i)+ym(index_i)*sin(phi_i)));
%vsn(index_i) = delta_c(index_i) * exp(j*k0*(xm(index_i)*cos(phi_s)+ym(index_i)*sin(phi_s)));
end
end
W = linsolve(zmn,gm');
for ii=1:N
Is(ii)=W(ii);
end
y= Is;
end
function [f,N,ra,k0,Z0,lambda] = parameter()
%UNTITLED Summary of this function goes here
c0=3e8;
Z0=120.*pi;
ra=1;
N=40;
f=300e6;
lambda=c0./f;
k0=2*pi./lambda;
end
function z=triangle_basisn(phi,kk)
[~,N,ra,k0,Z0,lambda] = parameter();
%Phin=zeros(N)
dftm=2.*pi./N;
%for jj = 1:N+1
%Phi0(jj)=(jj-1).*dftm;
%end
%Phin=Phi0
if ( phi >=(kk-1).*dftm ) & ( phi <=kk.*dftm);
z=(phi-(kk-1).*dftm)./dftm;
elseif (phi >= kk.*dftm) & (phi <= (kk+1).*dftm);
z=((kk+1).* dftm -phi)./dftm;
else
z=0 ;
end
end
thank you
Goerge
댓글 수: 32
Torsten
2024년 11월 29일
Did you make any changes to your old code ? The same problem remained (see above).
Your function becomes NaN for
funa(Phi0(index_i),Phi0(index_j))
Torsten
2024년 11월 30일
편집: Torsten
2024년 11월 30일
In the computation of zmn, results from the case index_i = index_j (thus the case where NaN results are computed) are not used. Thus - although you get the warning: Non-finite result. The integration was unsuccessful, your results for Is might be reliable. Which raises the question: why do you compute lmn for index_i = index_j as below
if index_i == index_j
funa = @(x,y)triangle_basisn(x,index_i).*triangle_basisn(y,index_j).*ra.*(1-j.*(2/pi).*log((gamma_const./2).*k0.*ra.*sqrt(2-2.*cos(x-y)))) ;
lmn(index_i,index_j) =integral2(funa,Phi0(index_i),Phi0(index_i)+2*pi/N,Phi0(index_j),Phi0(index_j)+2*pi/N);
at all if the result is nowhere used ?
george veropoulos
2024년 11월 30일
hi
the element of z or l matrix with index_i == index_j are the diagonal element
in this cace i use a small approximation (1-j.*(2/pi).*log(A.*sqrt(2-2.*cos(x-y))))
of Hankel function besselh(0,2,kR)
Torsten
2024년 11월 30일
But you never write the results of the integration for index_i = index_j into the zmn matrix which is used to compute Is. So zmn(i,i) (the diagonal) remains at its initial values given to them by preallocation:
zmn = zeros(N);
george veropoulos
2024년 11월 30일
편집: Torsten
2024년 11월 30일
You are write.. i use an approximation diagonal teem log(A)+log(x-y+1e-6) i add a small number
idont receive any message from integral but receive a warning from matrix "Matrix is singular to working precision"
currentMoM()
f = 300000000
N = 40
ra = 1
k0 = 6.2832
Z0 = 376.9911
lambda = 1
Warning: Reached the maximum number of function evaluations (10000). The result fails the global error test.
Warning: Reached the maximum number of function evaluations (10000). The result fails the global error test.
Warning: Reached the maximum number of function evaluations (10000). The result fails the global error test.
Warning: Reached the maximum number of function evaluations (10000). The result fails the global error test.
Warning: Reached the maximum number of function evaluations (10000). The result fails the global error test.
Warning: Reached the maximum number of function evaluations (10000). The result fails the global error test.
Warning: Reached the maximum number of function evaluations (10000). The result fails the global error test.
Warning: Reached the maximum number of function evaluations (10000). The result fails the global error test.
Warning: Reached the maximum number of function evaluations (10000). The result fails the global error test.
Warning: Reached the maximum number of function evaluations (10000). The result fails the global error test.
Warning: Reached the maximum number of function evaluations (10000). The result fails the global error test.
Warning: Reached the maximum number of function evaluations (10000). The result fails the global error test.
Warning: Reached the maximum number of function evaluations (10000). The result fails the global error test.
Warning: Reached the maximum number of function evaluations (10000). The result fails the global error test.
Warning: Reached the maximum number of function evaluations (10000). The result fails the global error test.
Warning: Reached the maximum number of function evaluations (10000). The result fails the global error test.
Warning: Reached the maximum number of function evaluations (10000). The result fails the global error test.
Warning: Reached the maximum number of function evaluations (10000). The result fails the global error test.
Warning: Reached the maximum number of function evaluations (10000). The result fails the global error test.
Warning: Reached the maximum number of function evaluations (10000). The result fails the global error test.
Warning: Reached the maximum number of function evaluations (10000). The result fails the global error test.
Warning: Reached the maximum number of function evaluations (10000). The result fails the global error test.
Warning: Reached the maximum number of function evaluations (10000). The result fails the global error test.
Warning: Reached the maximum number of function evaluations (10000). The result fails the global error test.
Warning: Reached the maximum number of function evaluations (10000). The result fails the global error test.
Warning: Reached the maximum number of function evaluations (10000). The result fails the global error test.
Warning: Reached the maximum number of function evaluations (10000). The result fails the global error test.
Warning: Reached the maximum number of function evaluations (10000). The result fails the global error test.
Warning: Reached the maximum number of function evaluations (10000). The result fails the global error test.
Warning: Reached the maximum number of function evaluations (10000). The result fails the global error test.
Warning: Reached the maximum number of function evaluations (10000). The result fails the global error test.
Warning: Reached the maximum number of function evaluations (10000). The result fails the global error test.
Warning: Reached the maximum number of function evaluations (10000). The result fails the global error test.
Warning: Reached the maximum number of function evaluations (10000). The result fails the global error test.
Warning: Reached the maximum number of function evaluations (10000). The result fails the global error test.
Warning: Reached the maximum number of function evaluations (10000). The result fails the global error test.
Warning: Reached the maximum number of function evaluations (10000). The result fails the global error test.
Warning: Reached the maximum number of function evaluations (10000). The result fails the global error test.
Warning: Reached the maximum number of function evaluations (10000). The result fails the global error test.
Warning: Reached the maximum number of function evaluations (10000). The result fails the global error test.
ans =
Columns 1 through 9
0.0031 + 0.0015i 0.0023 + 0.0014i 0.0011 + 0.0010i 0.0001 + 0.0003i -0.0004 + 0.0000i -0.0011 + 0.0005i -0.0025 + 0.0007i -0.0035 - 0.0007i -0.0019 - 0.0026i
Columns 10 through 18
0.0019 - 0.0023i 0.0042 + 0.0012i 0.0024 + 0.0046i -0.0016 + 0.0041i -0.0036 + 0.0000i -0.0022 - 0.0044i 0.0012 - 0.0064i 0.0042 - 0.0059i 0.0057 - 0.0042i
Columns 19 through 27
0.0061 - 0.0027i 0.0061 - 0.0019i 0.0061 - 0.0020i 0.0061 - 0.0031i 0.0054 - 0.0048i 0.0033 - 0.0063i 0.0000 - 0.0060i -0.0030 - 0.0031i -0.0033 + 0.0016i
Columns 28 through 36
-0.0003 + 0.0048i 0.0034 + 0.0038i 0.0038 - 0.0002i 0.0006 - 0.0028i -0.0027 - 0.0021i -0.0034 - 0.0000i -0.0020 + 0.0007i -0.0008 + 0.0003i -0.0003 + 0.0001i
Columns 37 through 40
0.0004 + 0.0006i 0.0015 + 0.0012i 0.0026 + 0.0015i 0.0032 + 0.0015i
function [Is]=currentMoM()
%UNTITLED2 Summary of this function goes here
% Detailed explanation goes here
[f,N,ra,k0,Z0,lambda] = parameter()
gamma_const=1.781;
Phi0=zeros(N);
e=exp(1);
dftm=2.*pi./N;
for jj = 1:N
Phi0(jj)=(jj-1).*dftm;
end
lmn = zeros(N,N);
gm = zeros(1,N);
zmn = zeros(N,N);
%vim = zeros(1,N);
%vsn = zeros(1,N);
coeif=(Z0.*k0./4).*ra.*dftm;
coeifn=(Z0./2).*sin(k0.*ra.*dftm./2);
for index_i = 1:N
for index_j = 1:N
if index_i == index_j
A=(gamma_const./2).*k0.*ra ;
%funa = @(x,y)triangle_basisn(x,index_i).*triangle_basisn(y,index_j).*ra.*(1-j.*(2/pi).*ra.*(1-j.*(2/pi).*ra.*log(A.*sqrt(2-2.*cos(x-y))))) ;
funa = @(x,y)triangle_basisn(x,index_i).*triangle_basisn(y,index_j).*ra.*(1-j.*(2/pi).*(log(A)+log(x-y+1e-8)));
lmn(index_i,index_j) =integral2(funa,Phi0(index_i),Phi0(index_i)+2*pi/N,Phi0(index_j),Phi0(index_j)+2*pi/N);
zmn(index_i,index_j) = lmn(index_i,index_j) ;
else
funb = @(x,y)triangle_basisn(x,index_i).*triangle_basisn(y,index_j).*ra.*besselh(0,2,k0.*ra.*sqrt(2-2.*cos(x-y)));
lmn(index_i,index_j) =integral2(funb,Phi0(index_i),Phi0(index_i)+2*pi/N,Phi0(index_j),Phi0(index_j)+2*pi/N);
zmn(index_i,index_j) = lmn(index_i,index_j) ;
func=@(x)triangle_basisn(x,index_i).*(4./(Z0.*k0)).*Efieldin(x);
gm(index_i) =integral(func,Phi0(index_i) ,Phi0(index_i)+2*pi/N);
end
end
end
W = linsolve(zmn,gm');
for ii=1:N
Is(ii)=W(ii);
end
y= Is;
end
function [f,N,ra,k0,Z0,lambda] = parameter()
%UNTITLED Summary of this function goes here
c0=3e8;
Z0=120.*pi;
ra=1;
N=40;
f=300e6;
lambda=c0./f;
k0=2*pi./lambda;
end
function z=triangle_basisn(phi,kk)
[~,N,ra,k0,Z0,lambda] = parameter();
%Phin=zeros(N)
dftm=2.*pi./N;
%for jj = 1:N+1
%Phi0(jj)=(jj-1).*dftm;
%end
%Phin=Phi0
if ( phi >=(kk-1).*dftm ) & ( phi <=kk.*dftm);
z=(phi-(kk-1).*dftm)./dftm;
elseif (phi >= kk.*dftm) & (phi <= (kk+1).*dftm);
z=((kk+1).* dftm -phi)./dftm;
else
z=0 ;
end
end
function z=Efieldin(phi)
%amplitude
[f,N,ra,k0,Z0] = parameter();
E0=1;
%z=E0.*exp(j.*k0.*ra.*cos(phi)+j.*k0.*ra.*sin(phi));
z=E0.*exp(j.*k0.*ra.*cos(phi));
end
Torsten
2024년 11월 30일
편집: Torsten
2024년 11월 30일
idont receive any message from integral but receive a warning from matrix "Matrix is singular to working precision"
In R2024b, I get many warning that some of the integrals could not be computed reliably, but no warning about a matrix that is singular to working precision (see above). Do we use the same code ? What MATLAB release are you working with ?
george veropoulos
2024년 11월 30일
i receive the same message ... but also this the message with matrix i use 2024a
Torsten
2024년 11월 30일
It seems you try to integrate a discontinuous function. This will almost always fail.
if ( phi >=(kk-1).*dftm ) & ( phi <=kk.*dftm);
z=(phi-(kk-1).*dftm)./dftm;
elseif (phi >= kk.*dftm) & (phi <= (kk+1).*dftm);
z=((kk+1).* dftm -phi)./dftm;
else
z=0 ;
end
george veropoulos
2024년 11월 30일
if i remove the function triangle_basisn i receive the same message !!
Torsten
2024년 11월 30일
I understand that your computation doesn't succeed. And I gave you the most probable reason: the function you try to integrate is discontinuous. There can be other reasons: there is an error in your code, the parameters are too extreme and so on.
If I were you, I'd first make a surface plot of the real and imaginary parts of the functions you try to integrate and this way find out where "integral2" might encounter problems.
george veropoulos
2024년 11월 30일
i set triangle_basisn(phi,kk) equal to 1 . Ι receive problem from the integral in funa with the log singularity!
george veropoulos
2024년 11월 30일
Warning: Reached the maximum number of function evaluations (10000). The
result fails the global error test.
> In integral2Calc>integral2t (line 139)
In integral2Calc (line 9)
In integral2 (line 105)
In currentMoM (line 31)
this is the line 31
funa = @(x,y)triangle_basisn(x,index_i).*triangle_basisn(y,index_j).*ra.*(1-j.*(2/pi).*(log(A)+log(x-y+1e-9)));
Torsten
2024년 11월 30일
편집: Torsten
2024년 12월 1일
Of course you can do a Monte-Carlo integration. But if you change the integration method, the mathematical problem about the integrand won't vanish. In the Monte-Carlo integration, the problem will show up that you don't get a converged solution for the integral for an increasing number of random test points.
george veropoulos
2024년 12월 1일
이동: Torsten
2024년 12월 1일
this integral come out from the method of moment in EM...
Torsten
2024년 12월 1일
Do you have a literature link where this integral is written out in a mathematical way ?
답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!오류 발생
페이지가 변경되었기 때문에 동작을 완료할 수 없습니다. 업데이트된 상태를 보려면 페이지를 다시 불러오십시오.
웹사이트 선택
번역된 콘텐츠를 보고 지역별 이벤트와 혜택을 살펴보려면 웹사이트를 선택하십시오. 현재 계신 지역에 따라 다음 웹사이트를 권장합니다:
또한 다음 목록에서 웹사이트를 선택하실 수도 있습니다.
사이트 성능 최적화 방법
최고의 사이트 성능을 위해 중국 사이트(중국어 또는 영어)를 선택하십시오. 현재 계신 지역에서는 다른 국가의 MathWorks 사이트 방문이 최적화되지 않았습니다.
미주
- América Latina (Español)
- Canada (English)
- United States (English)
유럽
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom(English)
아시아 태평양
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)




