assigning leads to empty value

11 visualizaciones (últimos 30 días)
Sef
Sef el 15 de Mayo de 2023
Comentada: Sef el 6 de Jul. de 2023
I construct some functions depending on w. But if I assign some value w (of type double) with nonnegativ y df_v returns just a empty value [ ].
func = parabolicCylinderD(x(w),y));
df = diff(func)
....
f_v = func(w);
df_v = df(w);
  2 comentarios
chicken vector
chicken vector el 15 de Mayo de 2023
You need to share the code of your function otherwise it's impossible for us to help you.
Sef
Sef el 15 de Mayo de 2023
The function is defined as follows
function [ Y1 ] = ypsilon1(a,z)
Y1 = exp(-0.25*z*z)*hypergeom(0.5*a+0.25,0.5,0.5*z*z);
end
function [ Y2 ] = ypsilon2(a,z)
Y2 = z*exp(-0.25*z*z)*hypergeom(0.5*a+0.75,1.5,0.5*z*z);
end
function [ U ] = Ufunction(a,z)
zeta = 0.5*a+0.25;
U = 1/(sqrt(pi)*2^(zeta))*(cos(pi*zeta)*gamma(0.5-zeta)*ypsilon1(a,z)-sqrt(2)*sin(pi*zeta)*gamma(1-zeta)*ypsilon2(a,z));
end
function [ D ] = parabolicCylinderD(v,z)
b = -v-0.5;
D = Ufunction(b,z);
end

Iniciar sesión para comentar.

Respuestas (2)

chicken vector
chicken vector el 15 de Mayo de 2023
Editada: chicken vector el 15 de Mayo de 2023
The function fe containts a function called whittakerM which is not explicit and it can't be derived.
The problem originates from these two expression included in df:
diff(whittakerM(E.^2./2.0-M.^2./2.0+1.0./4.0,-1.0./4.0,k),E)
diff(whittakerM(E.^2./2.0-M.^2./2.0+1.0./4.0,1.0./4.0,k),E)
When you substitute values for E, M and k, the diff operation becomes numerical but is performed on only one double thus returning an empty value:
diff([1 2])
ans = 1
diff(1)
ans = []
In general you would have two options: either you derive a close form of whittakerM so you can perform analytical derivation, or you opt for numerical methods.
In your case you can't do neither of these because, as you can see from the expresions above, your variable E is also the degree of the derivative that has to be computed [diff(f,n) computes the n-th derivative].
This means that your function is defined for non-negative integers only and it is not continuous, thus the derivative has no mathematical meaning.
  7 comentarios
Sef
Sef el 5 de Jun. de 2023
@chicken vector okay lets say (W-A)*parabolicCylinder(W^2-A,4*y) = f. And I would like to solve f=0 and plot than sotosay the results like W vs y
Sef
Sef el 6 de Jul. de 2023
@chicken vector do you know what i mean. Do you have an idea to fix

Iniciar sesión para comentar.


Walter Roberson
Walter Roberson el 15 de Mayo de 2023
The basic problem is that there are two important functions named diff.
The primary diff() function calculates x(2:end) - x(1:end-1) which is numeric differences.
In the special case that the first parameter to diff() is symbolic or symfun then you instead get symbolic derivative (calculus).
Your code is working purely numerically, so diff() is numeric differences.
Note that numeric diff() does not do a numeric estimate of derivative: you need gradient() for that.
  1 comentario
Sef
Sef el 24 de Mayo de 2023
alsowith gradient() there is the same error

Iniciar sesión para comentar.

Community Treasure Hunt

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

Start Hunting!

Translated by