A
Ali Baba
I would like to have a chart in excel with the x-axis and y-axis ranges from
-5 to 5 as illustrated in the link below.
http://phpaw.com/myscrpit/milt-up/jpg/jpg-1126029383.jpg
The problem is that I don't get square gridlines. I can only do this
visually by resizing the chart. I saw Jon Peltier traffic example of making
the gridlines square
(http://peltiertech.com/Excel/Charts/SquareGrid.html) but I found that when
I run it the scale changes to a value greater than 5. Also if I try to add
titles the gridlines become not squared.
Is there a way to fix the range of axes and have square gridlines?
The other problem I have which you may be able to help me with is that I am
trying to write a function to find the partial derivative of a function.
The function can then be called from a worksheet cell almost exactly as one
would write them normally.
For example,
we have this equation
f(Z1, Z2, Z3) = Z1^2+Z2*Z3^3-Z3^0.5
and Z1 = 2, Z2 = 4, Z3 = 6
if we want to find the partial derivative with respect to Z1 then:
= DerivativeZ("Z1^2+Z2*Z3^3-Z3^0.5", 2,"Z1")
= 4
with respect to Z2
= DerivativeZ("Z1^2+Z2*Z3^3-Z3^0.5", 4,"Z2")
= 216
and so on .............
So all I am doing is to substitute the values of Z2 and Z3 in the function
and then do a normal differentiation with respect to Z1. Similarity, I
substitute Z1 and Z3 to get the derivative with respect to Z2, .....
I don't know what is wrong with the code. So can anybody help me to correct
it and get it working.
Thanks for any help
____________________________________________________
Option Explicit
Dim Z1 As Double
Dim Z2 As Double
Dim Z3 As Double
Function DerivativeZ(func As String, a As Double, V As String) As Double
Const h = 0.0001
Dim n1 As Double, n2 As Double
Z1 = Range("C13")
Z2 = Range("C14")
Z3 = Range("C15")
Select Case UCase(Left(V, 2))
Case Is = "Z1"
func = Replace(func, "Z2", Z2)
func = Replace(func, "Z3", Z3)
n1 = (eval(func, a + (h / 2), Z1) - eval(func, a - (h / 2), Z1)) / h
n2 = (eval(func, a + h, Z1) - eval(func, a - h, Z1)) / (2 * h)
Case Is = "Z2"
func = Replace(func, "Z1", Z1)
func = Replace(func, "Z3", Z3)
n1 = (eval(func, a + (h / 2), Z2) - eval(func, a - (h / 2), Z2)) / h
n2 = (eval(func, a + h, Z2) - eval(func, a - h, Z2)) / (2 * h)
Case Is = "Z3"
func = Replace(func, "Z1", Z1)
func = Replace(func, "Z2", Z2)
n1 = (eval(func, a + (h / 2), Z3) - eval(func, a - (h / 2), Z3)) / h
n2 = (eval(func, a + h, Z3) - eval(func, a - h, Z3)) / (2 * h)
End Select
DerivativeZ = (4 * n1 - n2) / 3
End Function
Function eval(funct As String, Z As Double, V As String) As Double
eval = Evaluate(funct)
Select Case UCase(Left(V, 2))
Case Is = "Z1"
Z1 = Z
Case Is = "Z2"
Z2 = Z
Case Is = "Z3"
Z3 = Z
End Select
End Function
-5 to 5 as illustrated in the link below.
http://phpaw.com/myscrpit/milt-up/jpg/jpg-1126029383.jpg
The problem is that I don't get square gridlines. I can only do this
visually by resizing the chart. I saw Jon Peltier traffic example of making
the gridlines square
(http://peltiertech.com/Excel/Charts/SquareGrid.html) but I found that when
I run it the scale changes to a value greater than 5. Also if I try to add
titles the gridlines become not squared.
Is there a way to fix the range of axes and have square gridlines?
The other problem I have which you may be able to help me with is that I am
trying to write a function to find the partial derivative of a function.
The function can then be called from a worksheet cell almost exactly as one
would write them normally.
For example,
we have this equation
f(Z1, Z2, Z3) = Z1^2+Z2*Z3^3-Z3^0.5
and Z1 = 2, Z2 = 4, Z3 = 6
if we want to find the partial derivative with respect to Z1 then:
= DerivativeZ("Z1^2+Z2*Z3^3-Z3^0.5", 2,"Z1")
= 4
with respect to Z2
= DerivativeZ("Z1^2+Z2*Z3^3-Z3^0.5", 4,"Z2")
= 216
and so on .............
So all I am doing is to substitute the values of Z2 and Z3 in the function
and then do a normal differentiation with respect to Z1. Similarity, I
substitute Z1 and Z3 to get the derivative with respect to Z2, .....
I don't know what is wrong with the code. So can anybody help me to correct
it and get it working.
Thanks for any help
____________________________________________________
Option Explicit
Dim Z1 As Double
Dim Z2 As Double
Dim Z3 As Double
Function DerivativeZ(func As String, a As Double, V As String) As Double
Const h = 0.0001
Dim n1 As Double, n2 As Double
Z1 = Range("C13")
Z2 = Range("C14")
Z3 = Range("C15")
Select Case UCase(Left(V, 2))
Case Is = "Z1"
func = Replace(func, "Z2", Z2)
func = Replace(func, "Z3", Z3)
n1 = (eval(func, a + (h / 2), Z1) - eval(func, a - (h / 2), Z1)) / h
n2 = (eval(func, a + h, Z1) - eval(func, a - h, Z1)) / (2 * h)
Case Is = "Z2"
func = Replace(func, "Z1", Z1)
func = Replace(func, "Z3", Z3)
n1 = (eval(func, a + (h / 2), Z2) - eval(func, a - (h / 2), Z2)) / h
n2 = (eval(func, a + h, Z2) - eval(func, a - h, Z2)) / (2 * h)
Case Is = "Z3"
func = Replace(func, "Z1", Z1)
func = Replace(func, "Z2", Z2)
n1 = (eval(func, a + (h / 2), Z3) - eval(func, a - (h / 2), Z3)) / h
n2 = (eval(func, a + h, Z3) - eval(func, a - h, Z3)) / (2 * h)
End Select
DerivativeZ = (4 * n1 - n2) / 3
End Function
Function eval(funct As String, Z As Double, V As String) As Double
eval = Evaluate(funct)
Select Case UCase(Left(V, 2))
Case Is = "Z1"
Z1 = Z
Case Is = "Z2"
Z2 = Z
Case Is = "Z3"
Z3 = Z
End Select
End Function