Group Abstract Group Abstract

Message Boards Message Boards

0
|
6.4K Views
|
11 Replies
|
2 Total Likes
View groups...
Share
Share this post:

Solving integration for some parameters?

Posted 3 years ago

Hello everybody.

I wrote the attached code. this code gives a good result when "H" parameter is equal to 0.5. Even in this condition if I change other parameters, I can get a true result as well. But when I change "H" parameter to 0.6,0.7,0.8 or 0.9 the code can't be executed anymore and I can't get a result.

Based on the paper, for H=0.6,0.7,0.8 or 0.9. we have a result.

What's the problem?

Can anyone please help me to solve this problem?

thank you for your help in advance.

Attachments:
POSTED BY: M M
11 Replies

You may rewrite the nested integrals as double integrals on a two-variable domain. That way you can use a single NIntegrate.

POSTED BY: Gianluca Gorni
Posted 3 years ago
POSTED BY: M M
Posted 3 years ago

I could solve Integrals like this numerically. But there is a problem.

For example, I write q_1 enter image description here like this enter image description here

the result is close to real value but it is different a bit. For example for H=0.5, q_1 is computed 0.000195151 but it should be 0.0001943732.

why results are different a bit? this difference affects on the final result.

POSTED BY: M M

It is Fubini's theorem, hoping that your functions are bounded:

Integrate[f[s] Integrate[g[u], {u, 0, s}], {s, 0, T}] == 
 Integrate[Integrate[f[s] g[u], {u, 0, s}], {s, 0, T}] ==
 Integrate[f[s] g[u], {u, 0, s}, {s, 0, T}] ==
 Integrate[f[s] g[u], 
  Element[{u, s}, Triangle[{{0, 0}, {T, T}, {0, T}}]]]

It may be easier to set a precision target for a PrecisionGoal for a single NIntegrate than for a nested expression. However, I am no expert on this.

POSTED BY: Gianluca Gorni

This is what I was able to compute symbolically. The rest is to be done numerically:

\[Kappa] = 4; \[Gamma]0 = 1/10; \[Sigma]0 = 1/5; \[Theta] = 6/5;
H = 1/2 + 1/6; \[Rho] = -(3/4); K = 115;
Subscript[S, 0] = 100; r = 953/10000; T = 1/2;
F0[t_] = Subscript[S, 0]*E^(r*t);
Ktilde[t_] = 1 - K/F0[t];
Subscript[\[Lambda], 1][t_, s_] = (RealAbs[t - s])^(H - 1/2)/
  Gamma[H + 1/2];
E1[t_] = E^(\[Kappa]*t);
Ebar[t_] = E^(-\[Kappa]*t);
L0[t_] = \[Sigma]0*Ebar[t] + ((1 - Ebar[t])*\[Theta])/\[Kappa];
f0[t_] = L0[t];

Subscript[\[Lambda], 2][t_, s_] = 
 FullSimplify[\[Gamma]0*(Subscript[\[Lambda], 1][t, 
      s] - \[Kappa]^(1/2 - H) *E1[s]*Ebar[t]*
      (Integrate[x^(H - 1/2) E^x, {x, 0, (RealAbs[t - s]) \[Kappa]},
        Assumptions -> t > s > 0])),
  t > s > 0]
Vbar[s_] = FullSimplify[f0[s] +
   \[Rho]*Integrate[f0[u]  Subscript[\[Lambda], 2][s, u], {u, 0, s},
     Assumptions -> s > 0], s > 0]
POSTED BY: Gianluca Gorni
Posted 3 years ago
POSTED BY: M M
Posted 3 years ago

You have exponents of the form H-1/2, which are easy only when H=1/2. Otherwise all those nested integrals seem hopeless to evaluate symbolically in closed form. You may try numerical methods.

POSTED BY: Updating Name
Posted 3 years ago

Yes, exactly that's the problem. I've tried some numerical methods before, but unfortunately can't get a result. I don't know what I should do. I try different ways but none of them wasn't helpful.

do you know any special numerical methods or other suggestions that can be helpful in this condition?

POSTED BY: M M
Posted 3 years ago

Maybe for computing nested integrals, we can use numerical methods, but for example for computing q_1, first, we need to compute Inner integrals symbolically and after that use numerical methods. But as you can see in the picture, Inner integrals aren't computed.

enter image description here

POSTED BY: M M

Please don't unprotect Power, and please replace all those delayed definitions := with immediate definitions =. It does not make any sense to delay the calculation of all those integrals. This way I get CT = 3.53031

POSTED BY: Gianluca Gorni
Posted 3 years ago

Thanks Gianluca for your attention.

Yes, It's true. For H = 0.5, I got CT = 3.53031. In fact, for H=0.5 the code doesn't have any problems and can be executed well. but as I said before, the main problem appears when we change parameter H. For example, if you change parameter H to 0.6 or 0.7 the code can't be executed and this is my main problem.

how can I get true values for CT when parameter H is not equal to 0.5?

According to the paper, when H = 0.6 --> CT = 3.55 or when H = 0.7 --> CT = 3.58

POSTED BY: M M
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
Attachments
Remove
or Discard