필터 지우기
필터 지우기

How can I solve an integral equation with an unknown kernel?

조회 수: 4 (최근 30일)
Sergio Manzetti
Sergio Manzetti 2017년 12월 1일
댓글: Sergio Manzetti 2017년 12월 12일
The equation I am trying to solve is:
where f(x) and h(x) are both complex and known, and g(x) is an unknown function. Presumably, the result should be a function g(x), however, it is not to be excluded that g(x) could actually be an operator instead. Can this be solved for either cases in MATLAB?
Thanks!

채택된 답변

Torsten
Torsten 2017년 12월 1일
g is not unique - it can be of any function type you like (we already had this discussion).
g(x)=1/integral_{x=0}^{x=2*pi} f(x)*h(x)dx
or
g(x)=1/(f(x)*h(x)*2*pi)
or
...
Best wishes
Torsten.
  댓글 수: 10
Torsten
Torsten 2017년 12월 12일
Why don't you start from a solution that worked ?
syms L C x
assume (L>0);
h = 1;
g = 5;
y = C-exp(2*g*1i*x/h);
z = C-exp(-2*g*1i*x/h);
prod = y*z*(1+x^2);
Csol = solve(int(prod,x,0,L)-1==0,C);
Best wishes
Torsten.
Sergio Manzetti
Sergio Manzetti 2017년 12월 12일
Dear Torsten, I did! However, you used a different solution, with "assume" in it I will try it now!
Thanks!

댓글을 달려면 로그인하십시오.

추가 답변 (2개)

John D'Errico
John D'Errico 2017년 12월 1일
If g(x) is unknown, then if all you have is a single equation equal to a constant, then there is no simple solution. Or, you can look at it as if there are infinitely many solutions, one of them being a constant function.
Just compute the integral of h(x)*f(x). Take the reciprocal. That is the value of the constant g that will make int(h*f*g) equal 1. So as long as int(h*f) over [0,2*pi] is not identically 0, then A solution is trivial. Yes there may be infinitely many other solutions, but they cannot be found unless you have information as to the functional form of g(x).
  댓글 수: 11
John D'Errico
John D'Errico 2017년 12월 4일
I don't see why not. Integration is just a linear operator. If g is a constant, then it can be pulled outside the integral.
Sergio Manzetti
Sergio Manzetti 2017년 12월 5일
Thanks I will give it another look.

댓글을 달려면 로그인하십시오.


Sergio Manzetti
Sergio Manzetti 2017년 12월 5일
편집: Sergio Manzetti 2017년 12월 5일
Hi John, I found out that the non-hermitian nature of those functions makes them require a kernel, and not a constant, it appears to be (1+x^2). So I made this version to find the normalization constant when the integral is unity:
if true
% code
end
syms h g x C
h = 1
g = 5
y=@(x)(C - (exp(2.*g.*1i.*x./h));
z=@(x)(C - (exp(-2.*g.*1i.*x./h));
prod=@(x)y(x).*z(x)*(1+x^2);
W= integral(prod,0,2*pi)==1;
and I should get the result for "C", however that is simply 0. It looks incorrect, or is the W part correctly written?
Thanks!

카테고리

Help CenterFile Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

제품

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by