[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
## Re: Deal with the complex functions

**From**: |
Miroslaw Kwasniak |

**Subject**: |
Re: Deal with the complex functions |

**Date**: |
Mon, 15 Jan 2007 20:53:53 +0100 |

**User-agent**: |
Mutt/1.5.9i |

On Mon, Jan 15, 2007 at 07:58:41PM +0800, marchriver wrote:
>* Hi*
>* I am trying to solve the complex differential equations with octave.*
>* However from the manual and examples, it seems to limit to real*
>* equations. And when I write the equation in the form*
>* dx=i*a*t+i*b*x+i*c*x^2*
>* The result said it contains image numbers. Does octave can deal with*
>* complex equations? Or I have to separate the real and image part to*
>* solve? But the real equations I have to solve are quite complicit and a*
>* large number. It will be very hard to do so. Can anyone give me some*
>* clues?*
It's easy ;)
Assuming that your complex valued function is:
function dx=f(t,x);
a=-1;b=-.5;c=.01;
dx=i*a*t+i*b*x+i*c*x^2;
endfunction
just write a wrapper:
function DX=freal(t,X);
n=1:2:length(X);
x=complex(X(n),X(n+1));
dx=f(t,x);
DX=zeros(size(X));
DX(n)=real(x)
DX(n+1)=imag(dx);
endfunction
... and calculate it :
[tout, xout] = ode45('freal',[0 8],[1; -11]);
n=1:2:columns(xout);
xcomplex=complex(xout(:,n),xout(:,n+1));