| ²é¿´: 3960 | »Ø¸´: 27 | |||
zdzqyгæ (СÓÐÃûÆø)
|
[ÇóÖú]
MathematicaÀïµÄcompileÔõôʹÓà ÒÑÓÐ1È˲ÎÓë
|
||
| Çë½Ìһϸ÷λ£ºMathematicaÀïµÄcompileÔõôʹÓã¿ÎÒÏÖÔڵijÌÐòÀïÐèÒªÒ»¸ö´óµÄÑ»·Êý×飬¼ÆËãµÄʱ¼äÌ«³¤£¬ÏëÌá¸ßһϼÆËãËÙ¶È¡£ |
» ÊÕ¼±¾ÌûµÄÌÔÌûר¼ÍƼö
Èí¼þ |
» ²ÂÄãϲ»¶
»¯Ñ§0703-Ò»Ö¾Ô¸211-338·ÖÇóµ÷¼Á
ÒѾÓÐ9È˻ظ´
Çóµ÷¼Á£¡ÉúÎïÓëҽҩר˶
ÒѾÓÐ8È˻ظ´
275 Çóµ÷¼Á
ÒѾÓÐ5È˻ظ´
Ò»Ö¾Ô¸085404£¬×Ü·Ö291£¬Ëļ¶Òѹý£¬Çóµ÷¼Á
ÒѾÓÐ10È˻ظ´
085600ר˶²ÄÁÏÓ뻯¹¤348·ÖÇóµ÷¼Á
ÒѾÓÐ12È˻ظ´
µç×ÓÐÅÏ¢346
ÒѾÓÐ3È˻ظ´
0703×Ü·Ö331Çóµ÷¼Á
ÒѾÓÐ21È˻ظ´
301Çóµ÷¼Á
ÒѾÓÐ9È˻ظ´
²ÄÁÏר˶µ÷¼Á
ÒѾÓÐ12È˻ظ´
327Çóµ÷¼Á
ÒѾÓÐ9È˻ظ´
» ±¾Ö÷ÌâÏà¹Ø¼ÛÖµÌùÍÆ¼ö£¬¶ÔÄúͬÑùÓаïÖú:
QE°²×°³ö´í£¬ÇóÖú´óÉñ
ÒѾÓÐ6È˻ظ´
mathematica 10.0 °Ù¶ÈÔÆ·ÖÏíÁ´½Ó
ÒѾÓÐ17È˻ظ´
Çë½ÌmathematicaÖÐÇó½âÎÊÌâ
ÒѾÓÐ8È˻ظ´
Ò»¸öºÜ²»´íµÄmathematica½Ì³Ì
ÒѾÓÐ507È˻ظ´
MathematicaÎÊÌâÇóÖú
ÒѾÓÐ7È˻ظ´
ÓÐûÓÐoriginʹÓøßÊÖ£¿
ÒѾÓÐ3È˻ظ´
Çë½ÌLSDA+U¼ÆËãµÄÎÊÌâ
ÒѾÓÐ24È˻ظ´
ËÀ´°ïÎÒһϺò»ºÃ£¿mathematica ·½³Ì×éÊäÈëÒ»Ö±´íÎ󣬲»ÖªµÀÔõô°ì
ÒѾÓÐ3È˻ظ´
Mathematicaµü´úÔËËãµÄÖÕÖ¹Ìõ¼þÔõô¼Ó½øÈ¥
ÒѾÓÐ7È˻ظ´
¡¾Ô´´¡¿ÔÚWORDÖÐʹÓÃMathematica»µÄͼÐεÄÌå»á
ÒѾÓÐ13È˻ظ´
chyanog
½ð³æ (СÓÐÃûÆø)
- ³ÌÐòÇ¿Ìû: 1
- Ó¦Öú: 12 (СѧÉú)
- ½ð±Ò: 808.1
- ºì»¨: 5
- Ìû×Ó: 85
- ÔÚÏß: 52.8Сʱ
- ³æºÅ: 1540955
- ×¢²á: 2011-12-17
- ÐÔ±ð: GG
- רҵ: ¼ÆËãÊýѧÓë¿ÆÑ§¹¤³Ì¼ÆËã
zdzqy: »ØÌûÖö¥ 2013-08-07 10:44:14
|
CompileÒ»µãÒ²²»¼¦Àߣ¬²¢²»ÊÇÖ»ÄܱàÒëһЩ¼òµ¥º¯Êý£¬Ò»Ð©ÊýÖµ¼ÆËã³ÌÐò¿ÉÒÔÌáËÙ30~100±¶ÒÔÉÏ£¬µ«Ê¹ÓÃһЩ¸ß¼¶µÄº¯Êýʱ£¨NSolve£¬NIntegrateµÈ£©¾Íû±ØÒªCompileÁË£¬²»»áÓмÓËÙЧ¹û£¬ ʹÓÃCompilationTarget -> "C"£¬ÐèÒª±¾»ú°²×°ÓÐC±àÒëÆ÷£¬ÈçVisualStudio,GCC¶¼¿ÉÒÔ£¬Ã»Óеϰ¼´Ê¹¼ÓÁËÕâ¸öÑ¡ÏÈÔÈ»ÊÇÏ൱ÓÚCompilationTarget -> "WVM"£¬Í¬Ê±»áÓÐÒ»¸ö¾¯¸æ ¿ÉÒÔ²âÊÔÏÂÃæÒ»¶Î³ÌÐò ggs[m_Integer] := Block[{t}, Do[t = Sqrt@N[i*i + j*j]; If[FractionalPart[t] == 0, Sow@{i, j, Round@t}], {i, m}, {j, i + 1, m}]]; cggs = Compile[{{m, _Integer}}, Block[{t}, Do[t = Sqrt@N[i*i + j*j]; If[FractionalPart[t] == 0, Sow@{i, j, Round@t}], {i, m}, {j, i + 1, m}]]]; Reap[ggs@1000][[2, 1]] // Length // AbsoluteTiming Reap[cggs@1000][[2, 1]] // Length // AbsoluteTiming |
7Â¥2013-08-03 20:11:32
mshwangg
ÖÁ×ðľ³æ (ÕýʽдÊÖ)
- ³ÌÐòÇ¿Ìû: 5
- Ó¦Öú: 206 (´óѧÉú)
- ½ð±Ò: 10702.8
- É¢½ð: 100
- ºì»¨: 19
- Ìû×Ó: 597
- ÔÚÏß: 195.4Сʱ
- ³æºÅ: 576702
- ×¢²á: 2008-06-21
- רҵ: ÎïÀíѧI
¡¾´ð°¸¡¿Ó¦Öú»ØÌû
¡ï
¸Ðл²ÎÓ룬ӦÖúÖ¸Êý +1
zdzqy: ½ð±Ò+1, ¡ï¡ï¡ïºÜÓаïÖú 2013-08-07 10:40:49
¸Ðл²ÎÓ룬ӦÖúÖ¸Êý +1
zdzqy: ½ð±Ò+1, ¡ï¡ï¡ïºÜÓаïÖú 2013-08-07 10:40:49
|
Mathematica°ïÖúÎļþÀï¹ØÓÚCompileÓÐÕâÑùÁ½¶Î»°£º If you make a definition like f[x_]:=x Sin[x], Mathematica will store the expression x Sin[x] in a form that can be evaluated for any x. Then when you give a particular value for x, Mathematica substitutes this value into x Sin[x], and evaluates the result. The internal code that Mathematica uses to perform this evaluation is set up to work equally well whether the value you give for x is a number, a list, an algebraic object, or any other kind of expression. Having to take account of all these possibilities inevitably makes the evaluation process slower. However, if Mathematica could assume that x will be a machine number, then it could avoid many steps, and potentially evaluate an expression like x Sin[x] much more quickly. ¿´Ã÷°×Á˰ɣ¿Mathematica´¦ÀíÒ»¸ö±äÁ¿µÄʱºòÒª¿¼ÂǺܶàÖÖ¿ÉÄܵÄÇé¿ö£¬±ÈÈç˵Õâ¸ö±äÁ¿ÊÇʵÊý¡¢¸´Êý¡¢Êý×黹ÊÇ´úÊý·ûºÅµÈµÈ£¬ËùÒÔ´¦ÀíÆðÀ´±È½ÏÂý¡£¶øÓÃCompile²»¹ýÊÇÉ趨ʹÓõıäÁ¿ÊǾßÌåµÄÄÇÖÖÊý¾ÝÀàÐÍ£¬¼ÆËãÆðÀ´µ±È»Òª¿ìһЩ¡£ ʵ¼ÊÉÏ£¬¸öÈËÈÏΪCompileµÄ¹¦ÄÜÓе㼦Àߣ¬Ëü²»Éú³É¿ÉÖ´ÐÐÎļþ£¬Ò²²»¿ÉÒÔÍÑÀëMathematica»·¾³ÔËÐгÌÐò¡£Èç¹ûÔÚ³ÌÐòÖÐÿ¸ö±äÁ¿ÔÚʹÓÃ֮ǰ¸³Öµ²¢ÇÒËùÓпÉÄܵĺ¯Êý¶¼×öÊýÖµÔËË㣬±ÈÈçNSolve£¬NIntegrate£¬ÄÇôCompileÓë·ñÆäʵ²î±ð²»´ó£¬²»»áΪÄã½ÚÊ¡¶àÉÙʱ¼ä¡£ ComplieµÄʹÓ÷½·¨²Î¿¼£ºÔÚMathematicaÀï¼üÈë¡°Compile¡±£¬È«Ñ¡£¬°´¼üÅÌÉϵġ°F1¡±£¡ ËäÈ»µÈÓÚû˵£¬µ«ÊDZÈ˵ÁË»¹Ïêϸ¡£ |
2Â¥2013-06-04 09:39:06
walk1997
½ð³æ (ÖøÃûдÊÖ)
- Ó¦Öú: 1 (Ó×¶ùÔ°)
- ½ð±Ò: 4676.2
- ºì»¨: 22
- Ìû×Ó: 1066
- ÔÚÏß: 798.1Сʱ
- ³æºÅ: 416039
- ×¢²á: 2007-06-29
- ÐÔ±ð: GG
- רҵ: Á£×ÓÎïÀíѧºÍ³¡ÂÛ
|
1. °²×°ºÃC 2. Ö±½Óµ÷ÓÃcomplile¡£ ¶ÔÓÚ¸´ÔÓº¯ÊýµÄ¼ÆËãµÄ »¹ÊÇÓбȽÏÃ÷ÏÔËٶȵÄÌá¸ßµÄ ²»¹ý±àÒë³ÉCºÍVMµÄ ¿´ÆðÀ´²î±ð²»ÊǺܴó Ò²Ðí·Ç³£¸´Ôӵıí´ïʽ»áÓвî±ð ÁíÍâ Èç¹ûÊDZí´ïʽ·Ç³£¸´Ôӵϰ ×îºÃÏàÓÅ»¯Ï±í´ïʽ an example to show the difference Clear["Globale`*"]; f[x_Real] := x^2 + 1; c1 = Compile[ {{x, _Real}}, x^2 + 1, CompilationTarget -> "C"]; c2 = Compile[ {{x, _Real}}, x^2 + 1]; Do[c1, {i, 1.0, 10.0^6, 1.0}] // Timing Do[c2, {i, 1.0, 10.0^6, 1.0}] // Timing Do[f, {i, 1.0, 10.0^6, 1.0}] // Timing Do[c1, {i, 1, 10^6, 1}] // Timing Do[c2, {i, 1, 10^6, 1}] // Timing Do[f, {i, 1, 10^6, 1}] // Timing |
3Â¥2013-06-06 08:23:10
walk1997
½ð³æ (ÖøÃûдÊÖ)
- Ó¦Öú: 1 (Ó×¶ùÔ°)
- ½ð±Ò: 4676.2
- ºì»¨: 22
- Ìû×Ó: 1066
- ÔÚÏß: 798.1Сʱ
- ³æºÅ: 416039
- ×¢²á: 2007-06-29
- ÐÔ±ð: GG
- רҵ: Á£×ÓÎïÀíѧºÍ³¡ÂÛ
4Â¥2013-06-06 08:24:22
zdzqy
гæ (СÓÐÃûÆø)
- Ó¦Öú: 4 (Ó×¶ùÔ°)
- ½ð±Ò: 176.3
- É¢½ð: 199
- ºì»¨: 1
- Ìû×Ó: 245
- ÔÚÏß: 136.9Сʱ
- ³æºÅ: 1163354
- ×¢²á: 2010-12-06
- ÐÔ±ð: MM
- רҵ: ¹ÌÌåÁ¦Ñ§
5Â¥2013-06-07 19:47:38
zdzqy
гæ (СÓÐÃûÆø)
- Ó¦Öú: 4 (Ó×¶ùÔ°)
- ½ð±Ò: 176.3
- É¢½ð: 199
- ºì»¨: 1
- Ìû×Ó: 245
- ÔÚÏß: 136.9Сʱ
- ³æºÅ: 1163354
- ×¢²á: 2010-12-06
- ÐÔ±ð: MM
- רҵ: ¹ÌÌåÁ¦Ñ§
6Â¥2013-06-07 19:49:43
zdzqy
гæ (СÓÐÃûÆø)
- Ó¦Öú: 4 (Ó×¶ùÔ°)
- ½ð±Ò: 176.3
- É¢½ð: 199
- ºì»¨: 1
- Ìû×Ó: 245
- ÔÚÏß: 136.9Сʱ
- ³æºÅ: 1163354
- ×¢²á: 2010-12-06
- ÐÔ±ð: MM
- רҵ: ¹ÌÌåÁ¦Ñ§
8Â¥2013-08-04 20:31:05
zdzqy
гæ (СÓÐÃûÆø)
- Ó¦Öú: 4 (Ó×¶ùÔ°)
- ½ð±Ò: 176.3
- É¢½ð: 199
- ºì»¨: 1
- Ìû×Ó: 245
- ÔÚÏß: 136.9Сʱ
- ³æºÅ: 1163354
- ×¢²á: 2010-12-06
- ÐÔ±ð: MM
- רҵ: ¹ÌÌåÁ¦Ñ§
|
ÏëÇëÎÊһϣ¬ÏÂÃæµÄÕâ¸öС³ÌÐòÔõôʹÓÃCompileÃüÁî¡£ \!\(\(M1 = \@\(\((x - x1)\)\^2 + \((y - y1)\)\^2\);\)\[IndentingNewLine] \(M2 = \@\(\((x - x2)\)\^2 + \((y - y2)\)\^2\);\)\[IndentingNewLine] \(M3 = \@\(\((x - x3)\)\^2 + \((y - y3)\)\^2\);\)\[IndentingNewLine]\[IndentingNewLine] \(M11 = M1*\((\((x1 - x2)\)\ y + x2\ y1 - x1\ y2 + x\ \((\(- y1\) + y2)\))\);\)\[IndentingNewLine] \(M12 = M2*\((\((x1 - x2)\)\ y + x2\ y1 - x1\ y2 + x\ \((\(-y1\) + y2)\))\);\)\[IndentingNewLine] \(M13 = M1*\((\((\(-x1\) + x3)\)\ y - x3\ y1 + x\ \((y1 - y3)\) + x1\ y3)\);\)\[IndentingNewLine] \(M14 = M3*\((\((\(-x1\) + x3)\)\ y - x3\ y1 + x\ \((y1 - y3)\) + x1\ y3)\);\)\[IndentingNewLine] \(M15 = M2*\((\((x2 - x3)\)\ y + x3\ y2 - x2\ y3 + x\ \((\(-y2\) + y3)\))\);\)\[IndentingNewLine] \(M16 = M3*\((\((x2 - x3)\)\ y + x3\ y2 - x2\ y3 + x\ \((\(-y2\) + y3)\))\);\)\[IndentingNewLine]\[IndentingNewLine]\ \[IndentingNewLine] \(QQ = \(\((x - x1)\)\ \((x1 - x2)\) + \((y - y1)\)\ \((y1 - y2)\)\)\/M11 + \(\(( x - x2)\)\ \((\(-x1\) + x2)\) + \((y - y2)\)\ \((\(- y1\) + y2)\)\)\/M12 + \(\((x - x1)\)\ \((x1 - x3)\) + \((y - y1)\)\ \((y1 - y3)\)\)\/M13 + \(\((x - \ x3)\)\ \((\(-x1\) + x3)\) + \((y - y3)\)\ \((\(-y1\) + y3)\)\)\/M14 + \(\((x \ - x2)\)\ \((x2 - x3)\) + \((y - y2)\)\ \((y2 - y3)\)\)\/M15 + \(\((x - x3)\)\ \ \((\(-x2\) + x3)\) + \((y - y3)\)\ \((\(-y2\) + y3)\)\)\/M16;\)\n\ \[IndentingNewLine]\n \(zz1 = \(-b11\)*\((c13*dd11 - s1*\((c33*da11 - e33*db11)\))\)*QQ - \ b21*\((c13*dd21 - s2*\((c33*da21 - e33*db21)\))\)*QQ - b31*\((c13*dd31 - \ s3*\((c33*da31 - e33*db31)\))\)*QQ;\)\[IndentingNewLine]\n \(zz2 = \(-b12\)*\((c13*dd11 - s1*\((c33*da11 - e33*db11)\))\)*QQ - \ b22*\((c13*dd21 - s2*\((c33*da21 - e33*db21)\))\)*QQ - b32*\((c13* dd31 - s3*\((c33*da31 - e33*db31)\))\)*QQ;\)\n\n\n \(dz1 = b11*\((s1*\((e33*da11 + ep33*db11)\) - e31*dd11)\)*QQ + b21*\(( s2*\(( e33*da21 + ep33*db21)\) - e31*dd21)\)*QQ + b31*\((s3*\((e33*da31 + ep33*db31)\) - e31*dd31)\)*QQ;\)\n\[IndentingNewLine] \(dz2 = b12*\(( s1*\((e33*da11 + ep33*db11)\) - e31*dd11)\)*QQ + b22*\((s2*\((e33* da21 + ep33*db21)\) - e31*dd21)\)*QQ + b32*\((s3*\(( e33*da31 + ep33*db31)\) - e31*dd31)\)*QQ;\)\n\[IndentingNewLine] AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\ AAAAAAAAAAAAAAAAAAA\[IndentingNewLine] \(AA = Array[A, {NN2, NN2}];\)\[IndentingNewLine]\n Do[A[\((i - 1)\)*2 + 1, \((j - 1)\)*2 + 1] = zz1 /. {x -> cn[\([i, 1]\)], y \ -> cn[\([i, 2]\)], x1 -> nxx[\([j, 1]\)], x2 -> nxx[\([j, 2]\)], x3 -> \ nxx[\([j, 3]\)], y1 -> nyy[\([j, 1]\)], y2 -> nyy[\([j, 2]\)], y3 -> nyy[\([j, 3]\)]}; \[IndentingNewLine]A[\((i - 1)\)*2 + 1, \((j - 1)\)*2 + 2] = zz2 /. {x -> cn[\([i, 1]\)], y -> cn[\([i, 2]\)], x1 -> nxx[\([j, 1]\)], x2 -> nxx[\([j, 2]\)], x3 -> nxx[\([j, 3]\)], y1 -> nyy[\([ j, 1]\)], y2 -> nyy[\([j, 2]\)], y3 -> nyy[\([j, 3]\)]}; A[\((i - 1)\)*2 + 2, \((j - 1)\)*2 + 1] = dz1 /. {x -> cn[\([i, 1]\)], y -> cn[\([i, 2]\)], x1 -> nxx[\([j, 1]\)], x2 -> nxx[\([ j, 2]\)], x3 -> nxx[\([j, 3]\)], y1 -> nyy[\([ j, 1]\)], y2 -> nyy[\([j, 2]\)], y3 -> nyy[\([ j, 3]\)]}; A[\((i - 1)\)*2 + 2, \((j - 1)\)*2 + 2] = dz2 /. {x -> cn[\([i, 1]\)], y -> cn[\([i, 2]\)], x1 -> nxx[\([j, 1]\)], x2 -> nxx[\([j, 2]\)], x3 -> nxx[\([j, 3]\)], y1 -> nyy[\([j, 1]\)], y2 -> nyy[\([j, 2]\)], y3 -> nyy[\([j, 3]\)]}, \[IndentingNewLine]{i, 1, NN1}, {j, 1, NN1}]\[IndentingNewLine] \) |
9Â¥2013-08-05 10:50:18
walk1997
½ð³æ (ÖøÃûдÊÖ)
- Ó¦Öú: 1 (Ó×¶ùÔ°)
- ½ð±Ò: 4676.2
- ºì»¨: 22
- Ìû×Ó: 1066
- ÔÚÏß: 798.1Сʱ
- ³æºÅ: 416039
- ×¢²á: 2007-06-29
- ÐÔ±ð: GG
- רҵ: Á£×ÓÎïÀíѧºÍ³¡ÂÛ
10Â¥2013-08-06 23:58:27














»Ø¸´´ËÂ¥