EXCEL VBA¨D¤@¤¸¤G¦¸¤èµ{¦¡ (¤£¥Î¤½¦¡¸Ñ)(2)
- ©«¤l
- 2025
- ¥DÃD
- 13
- ºëµØ
- 0
- ¿n¤À
- 2053
- ÂI¦W
- 0
- §@·~¨t²Î
- WIN7
- ³nÅ骩¥»
- Office2007
- ¾\ŪÅv
- 100
- ©Ê§O
- ¨k
- ¨Ó¦Û
- ¥x¥_¥«
- µù¥U®É¶¡
- 2011-3-2
- ³Ì«áµn¿ý
- 2024-3-14
|
¥»©«³Ì«á¥Ñ ML089 ©ó 2021-10-26 08:40 ½s¿è
¦^´_ 9# Andy2483
¬P´Á¤é¥hÅSÀç¡A¬P´Á¤@±ß¤W¦^®a¡A¬Ý¨ì§Aªºµ{¦¡¸Ñ¤@¤¸¥|¦¸¡A®M¨ì§Úì¥ýªºµ{¦¡¨S¦³¿ìªk§¹¦¨¸Ñ¥X¡A¤£§¹µ½¦a¤è«Ü¦h¡C
¥»¨ÓÅSÀç¦^¨Ó«Ü²ÖÀ³n¦ºÎªº«o¤SºÎ¤£µÛ¡A«·s×¥¿¤@¤Uì¥ýµ{¦¡¡A²×©ó§¹¦¨¥i¥HºÎı¤F¡C
1 ¤j°Ï¶¡ -10000 ~ 10000 ¬d¸ßn§Ö¡A±N ¬d¸ß Step ¤À¬° ¤j¡B¤¤¡B¤p(¥iÅÜ) ¡Aªì©l s = 100¡A¹J¨ì²Ä¤@¸Ñ«á §ï¬° s = s1 = 0.1¡A·í¸Ñ¦b°Ï¶¡(x ~ x+s)®É¦A²Ó¤À s/ss¡Ass=10³£¥i¥H¡C¥[³t¬d¸ß
¸Ñµª§¹4¦¸¸Ñ´N¥i¥H¸õÂ÷°j°é¡A¥[³t¬d¸ß
³o¦¸Àu¤Æpºâ°j°é¥Ñ 20800¦¸°¦Ü 500¦¸¥ª¥k
2 ¦³ªñ¦ü¸Ñ®É¡A¦A¥Hf( round(x,12) )Àˬd×¥¿¬°¯u¹ê¸Ñ¡C
3 Áٯʤ֧Aªº¤Íµ½¤H¾÷¤¶±¡A³o¬P´Á¦A¨Ó·Q¤@·Q¡C
Function f(x)
'f = x ^ 2 + 2 * x - 4
'f = x ^ 4 - 6 * x ^ 3 + x ^ 2 + 2 * x + 24
f = 2 * x ^ 4 - 4 * x ^ 3 - 3 * x ^ 2 + 7 * x - 2 '¤H¤u¶ñ¤J¤èµ{¦¡
End Function
Sub ¤@¤¸¤èµ{¦¡¼É¤O¸Ñªk_ML089()
Dim r, c1, c2, n, x, x2, s, s1, ss, ct, tm, xNo, xN
tm = Timer
ThisWorkbook.Sheets.Add(After:=Worksheets(1)).Name = Format(Now(), "dd_hhmmss") '
x1 = -10000: x2 = 10000: x = x1 '¬d¸ß°Ï¶¡
s = 100: s1 = 0.1: ss = 10: 'Step ªì©lȨϥÎs,§ä¸Ñ1°Ï¶¡«á¨Ï¥Îs1¡Ass°Ï¶¡²Ó¤À°£¼Æ
xNo = 4: xN = 0 '¤@¤¸´X¦¸ : p¦¸
r = 3: c1 = 1: c2 = 2 'cells ¦ì¸m
'Cells(r, c1).Resize(, 3) = Array("x1", "x2", "f(x1)")
While x <= x2
'DoEvents '·|¼W¥[pºâ®É¶¡
ct = ct + 1 '´`Àô¦¸¼Æ
If Application.Median(f(x), 0, f(x + s)) = 0 Then '¸Ñµª¬O§_¦bx»Px+s¤§¶¡
'r = r + 1: Cells(r, c1).Resize(, 3) = Array(x, x + s, f(x)) 'Debug ¥Î
If Round(f(x), 12) = 0 Then 'ºë«×¤p¼Æ12¦ì¼Æ¬°0®É¬°ªñ¦ü¸Ñ
xN = xN + 1: r = r + 1
ANS = "ªñ¦ü¸Ñ¡GX" & xN & " = "
If f(Round(x, 12)) = 0 Then '¯u¹ê¸Ñ§PÂ_»P×¥¿
x = Round(x, 12)
ANS = "¯u¹ê¸Ñ¡GX" & xN & " = "
End If
Cells(r, c1) = ANS & x & " ,f(x) = " & f(x)
If xN = xNo Then GoTo 999 '¸Ñµª§¹¦¨¸õ¥X°j°é
x = x + s
s = s1
Else
s = s / ss '¥Ø«ex~x+s°Ï¶¡¡As¦A²Ó¤À1/SS¿
End If
Else
x = x + s
End If
Wend
999:
Cells(r + 1, c1) = "¬d¸ß°Ï¶¡¡G" & x1 & " " & x2
Cells(r + 2, c1) = "Step ªì©lȤβӤÀ°£¼Æ¡G" & s1 & " " & ss
Cells(r + 3, c1) = "´`Àô¦¸¼Æ¡G" & ct
Cells(r + 4, c1) = "pºâ®É¶¡¡G" & Format(Timer - tm, "0.000")
End Sub
'¥i¥H§R°£¤é´ú¸Õ¤u§@ªí
Sub Del_Sheet()
Dim MyBook As Workbook, sh As Worksheet
Set MyBook = ThisWorkbook
Application.DisplayAlerts = False '°±¤î¨t²ÎªºÄµ¥Ü
For Each sh In MyBook.Sheets
If sh.Name Like Day(Now()) & "_*" Then sh.Delete '§R°£·í¤é DD_*
Next
Application.DisplayAlerts = True '«ì´_¨t²ÎªºÄµ¥Ü
End Sub |
|
{...} ªí¥Ü»Ýn¥Î CTRL+SHIFT+ENTER ¤TÁä¿é¤J¤½¦¡
|
|
|
|
|
- ©«¤l
- 1447
- ¥DÃD
- 40
- ºëµØ
- 0
- ¿n¤À
- 1471
- ÂI¦W
- 0
- §@·~¨t²Î
- Windows 7
- ³nÅ骩¥»
- Excel 2010 & 2016
- ¾\ŪÅv
- 50
- ©Ê§O
- ¨k
- ¨Ó¦Û
- ¥xÆW
- µù¥U®É¶¡
- 2020-7-15
- ³Ì«áµn¿ý
- 2024-12-5
|
¦^´_ 11# ML089
«e½ú±Ð®v¸`§Ö¼Ö
¦V±z¹Dºp sorry¡G
10¼Ó¤§«á¦£·sªº®×¥ó¡A¦nªø¤@¬q®É¶¡¨S¤W½×¾Â¾Ç²ß¡A«e´X¤Ñ¾Ç²ßFunction ()¤~¬Ý¨ì11¼Óªº«e½ú«ü¾É¦^ÂСA¤ßùؤ@ª½¹L·N¤£¥h¡A¶X¤µ¤Ñ±Ð®v¸`¦V«e½ú¦^ÂСA¨Ã¯¬«e½ú ±Ð®v¸`§Ö¼Ö |
|
|
|
|
|
|