HOW TO FIND THE MODULUS OF THE COMPLEX SERIES

35 views (last 30 days)
yogeshwari patel
yogeshwari patel on 1 Jan 2026 at 4:10
Edited: Walter Roberson on 1 Jan 2026 at 10:09
syms x %a
syms t
a=1
a = 1
c=0.1
c = 0.1000
U=zeros(1,2,'sym');
A=zeros(1,2,'sym');
B=zeros(1,2,'sym');
C=zeros(1,2,'sym');
D=zeros(1,2,'sym');
series(x,t)=sym(zeros(1,1))
series(x, t) = 
0
modulus_complex_E=sym(zeros(1,1))
modulus_complex_E = 
0
modulus_exact=sym(zeros(1,1))
modulus_exact = 
0
U(1)=sqrt(-15*c*cosh(sqrt(0.1)*((x-c*t)/3)))*sqrt(-15*c*cosh(sqrt(0.1)*((x-c*t)/3)))
U = 
%%%%%%%%%%%%%%%%
for i=1:2
A(1)=0;
B(1)=0;
C(1)=0;
D(1)=0;
for j=1:i
for k=1:j
A(1)=A(1)+U(k)*U(j-k+1)*diff(U(i-j+1),x,1);
B(1)=B(1)+diff(U(k),x,1)*diff(U(j-k+1),x,1)*diff(U(i-j+1),x,1);
C(1)=C(1)+U(k)*U(j-k+1)*diff(U(i-j+1),x,3);
D(1)=D(1)+U(k)*diff(U(j-k+1),x,1)*diff(U(i-j+1),x,2);
end
end
U(i+1)=simplify((gamma(a*(i-1)+1)/gamma(a*i+1))*(0.3*A(1)-6*B(1)-3*C(1)-18*D(1)));
end
%U
for i=1:3
series(x,t)=series(x,t)+U(i)*(power(t,i-1));
end
%series
modulus_complex=abs(series)
modulus_complex(x, t) = 
modulus_complex_E=sqrt(-15*c*(cosh(sqrt(0.1)*(1/3)*(x-c*t)))^2)
modulus_complex_E = 
modulus_exact=abs(modulus_complex_E)
modulus_exact = 
% format long
x=0:0.05:1;
t=0:0.05:1;
row=0
row = 0
C=zeros(1)
C = 0
C1=zeros(1)
C1 = 0
% exact=zeros(1)
modulus_exact=zeros(1)
modulus_exact = 0
for i=1:length(x)
row=row+1;
col=0;
for j=1:length(t)
col=col+1;
C(row,col)=modulus_complex(x(row),t(col));
C1(row,col)=modulus_exact(x(row),t(col));
% C(row,col)=series(x(i),t(j));
%exact(row,col)=sqrt(-15*c*cosh((sqrt(0.1)*(x(i)-c*t(j)))/3)*cosh((sqrt(0.1)*(x(i)-c*t(j)))/3));
% abs_error(row,col)=abs(C(row,col)-C1(row, col));
end
end
Index in position 1 is invalid. Array indices must be positive integers or logical values.
% C
% exact
% abs_erro
WHEN I COMPLE IT I GOT THE FOLLOWING ERROR :
Index in position 1 is invalid. Array indices must be positive integers or logical values.

Answers (1)

Walter Roberson
Walter Roberson on 1 Jan 2026 at 10:06
Edited: Walter Roberson on 1 Jan 2026 at 10:09
Although modulus_complex is a function, modulus_exact is not a function, so modulus_exact(x(row),t(col)) is attempting to index the scalar symbol modulus_exact . You need
modulus_complex_E(x,t)=sqrt(-15*c*(cosh(sqrt(0.1)*(1/3)*(x-c*t)))^2)
Your code follows that with
modulus_exact=abs(modulus_complex_E)
which will work fine to create a function of x and t.
However, just before the loop you have
modulus_exact=zeros(1)
which overwrites modulus_exact

Tags

Community Treasure Hunt

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

Start Hunting!