how to plot compelex function

조회 수: 1 (최근 30일)
Aisha Mohamed
Aisha Mohamed 2022년 3월 25일
답변: Abhishek Chakram 2023년 12월 19일
I want to add some information that make this question more clear
1- I use p=[(0.9-0.124i) (0.4243 + 0.0017i) (0.10 + 0.3i)]; and as t change time = 0:0.01:2*pi (polynomial in z inthe second degree) f(z) = (0.10 + 0.3i) + (0.4243 + 0.0017i)z + (0.9-0.124i)z^2
the coefficients of p will cange with time by using this relation | f(t)> =exp(i t H)|f(0)>,for some H (given) and |f(0)> are the coefficients of p at t=o, and at every time I have new coefficients | f(t)> and plot the function p.
2- the function f(1/z) at every time must use the complex conjugate of the coeffecients of p (multiply in some constants)which also change with time t by the same way that coefficients of p do(in this case f(1/z) is the function of 1/z in the third degree) f(1/z) = (0.10 0.3i)z^-1 + (0.2121 0.0008i)z^−2 + (0.9 + 0.001i)z^−3.
How can I plot the two function in this case?
When I am trying to plot f(z) and f(1/z) I got paths in complex plane (not serface). and I am not sure that plots are correct.
I will appreciate any help
  댓글 수: 1
Torsten 2022년 3월 25일
편집: Torsten 2022년 3월 25일
So f will depend on t and on z :
f(z,t) = exp(i*t*H) * p * [z.^2;z;1]
g(z,t) = exp(i*t*H) * conj(p) * [z.^3;z.^2;z]
And how do you want to plot f(z,t) and g(1/z,t) ?
If the above form of the functions is true, f and g are functions from C x R -> C.
I don't understand how you want to plot them.

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

답변 (1개)

Abhishek Chakram
Abhishek Chakram 2023년 12월 19일
Hi Aisha Mohamed,
It appears to me that you're dealing with a time-dependent complex polynomial function “f(z)” and its reciprocal ”f(1/z)”, where the coefficients change with time according to a quantum mechanical evolution expressed by “|f(t)> = exp(i t H)|f(0)>”. Here are the steps on how to plot these functions:
  • Define the initial coefficients for “f(z)” as given by your polynomial “p” at time t=0.
  • Compute the time evolution of the coefficients. This involves defining the Hamiltonian H and using the relation “|f(t)> = exp(i t H)|f(0)>”. The Hamiltonian H should be a matrix that describes the evolution of the system. This matrix is needed to proceed with the calculation.
  • Update the coefficients at each time step to get the new coefficients for ”f(z)”.
  • Calculate the complex conjugate of the coefficients for “f(1/z)”, and apply any necessary constants to get the coefficients for the reciprocal polynomial.
  • Evaluate “f(z)” and “f(1/z)” at a range of “z” values for each time step. Since these are complex functions, plotting their real and imaginary parts, which will give paths in the complex plane.
  • Plot the functions for each time step using the “plot” function where the x-axis represents the real part, and the y-axis represents the imaginary part of the function values.
Here is a sample code for the same:
% Define the initial coefficients for f(z) at t=0
p0 = [0.9 - 0.124i, 0.4243 + 0.0017i, 0.10 + 0.3i];
% Define the time array
time = 0:0.01:2*pi;
% Define a simple Hermitian Hamiltonian matrix H
H = [1, 0.1 - 0.2i, 0.1 + 0.3i;
0.1 + 0.2i, 2, 0.1 - 0.1i;
0.1 - 0.3i, 0.1 + 0.1i, 3];
% Preallocate arrays for plotting
f_z_real = zeros(length(time), 1);
f_z_imag = zeros(length(time), 1);
f_invz_real = zeros(length(time), 1);
f_invz_imag = zeros(length(time), 1);
% Define a range of z values to evaluate the polynomials
% For this example, let's assume we evaluate at z = 1
z = 1;
for t_idx = 1:length(time)
t = time(t_idx);
% Compute |f(t)> using the matrix exponential
f_t = expm(1i * t * H) * p0.';
% Update the coefficients of f(z)
f_z = polyval(f_t, z);
% Compute the complex conjugate and apply constants to get coefficients for f(1/z)
% Assuming the constants are 1 for simplicity, adjust as needed
f_invz = polyval(conj(f_t), 1/z);
% Store the real and imaginary parts for plotting
f_z_real(t_idx) = real(f_z);
f_z_imag(t_idx) = imag(f_z);
f_invz_real(t_idx) = real(f_invz);
f_invz_imag(t_idx) = imag(f_invz);
% Plot the real vs. imaginary parts of f(z)
plot(f_z_real, f_z_imag);
title('Evolution of f(z) in the Complex Plane');
xlabel('Real Part');
ylabel('Imaginary Part');
% Plot the real vs. imaginary parts of f(1/z)
plot(f_invz_real, f_invz_imag);
title('Evolution of f(1/z) in the Complex Plane');
xlabel('Real Part');
ylabel('Imaginary Part');
You can refer to the following documentation to know more about the functions used:
Best Regards,
Abhishek Chakram


Help CenterFile Exchange에서 Ordinary Differential Equations에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by