2009-11-06 13 views
7

से कस्टम स्वरूपित अभिव्यक्ति निर्यात करें मैं गणित को उचित फोर्टन 77 प्रारूपण, यानी 72 कॉलम और छठे कॉलम पर निरंतरता मार्कर के साथ एक टेक्स्ट फ़ाइल को निर्यात/सहेजने/लिखने के लिए कैसे प्राप्त कर सकता हूं?गणित

मैं बड़े और जटिल विश्लेषणात्मक अभिव्यक्ति उत्पन्न करने के लिए गणित का उपयोग कर रहा हूं, जिसे मुझे पूर्व-मौजूदा फोरट्रान 77 कोड में डालने की आवश्यकता है। मैं सब कुछ FortranForm[] और

SetOptions[$Output, PageWidth -> 72]

साथ मेथेमेटिका के सामने के छोर में सही ढंग से काम हालांकि, मैं समझ नहीं कैसे किसी पाठ फ़ाइल में सही ढंग से उत्पादन के लिए मेथेमेटिका निकलना है। मैं कुछ इस तरह हैं:

MM11 = mH1**2 + (g2**2*v1**2)/2. - 
    - (g2**2*(v1**2/2. - 
    -  ((v2*Cos(phi2) - (0,1)*v2*Sin(phi2))* 
    -   (v2*Cos(phi2) + (0,1)*v2*Sin(phi2)))/2.))/2. 
... 

लेकिन या तो यह मिलता है:

MM11 = FortranForm[mH1^2 + (g2^2*v1^2)/2 - ... 

या इस:

MM11 = mH1**2 + (g2**2*v1**2)/2. - (g2**2* 
(v1**2/2. - ((v2*Cos(phi2) - (0,1)*v2*Sin(phi2))* 
... 
+0

मैंने प्रश्न का शीर्षक अधिक सामान्य होने के लिए बदल दिया, क्योंकि उत्तर गणित में कस्टम आउटपुट स्वरूपण की अधिक सामान्य समस्या हल करता है। – Timo

उत्तर

8

यह आश्चर्यजनक रूप से कम से जाना जाता Splice समारोह के लिए एक काम है। सबसे पहले, आप एक टेम्पलेट फ़ाइल, विस्तार ".mf" साथ, ताकि जैसे: अब

file = "test.mf"; 

out = OpenWrite[file]; 

WriteString[out, "MH1 = <* form *>"]; 

Close[out]; 

जब आप Splice उपयोग करते हैं, मेथेमेटिका स्वचालित रूप से अपने में मूल्यांकन फार्म के साथ <* और *> सीमांकक के बीच सब कुछ बदल देगा। तो अगर आप

form = 4 + b9^2 + c1^5 + c4^5 + h10^4 + j2 + k10^4 + p10^4 + q5^5 + 
     q8 + s3^3 + s7^2 + t6^3 + u3^2 + u9^3 + x8^4 + z2^3; 

सेट और फोन

Splice["test.mf", PageWidth -> 72]; 

जो स्वचालित रूप से आप फाइल एक्सटेंशन से FortranForm उत्पादन चाहते हैं उसका अनुमान लगा होगा, और जो आप एक विकल्प के रूप PageWidth स्थापित करने के लिए अनुमति देता है, तो आप एक बहुत सभ्य मिल जाएगा स्वचालित रूप से उत्पन्न फ़ाइल "test.f" में परिणाम (नया विस्तार पर ध्यान दें):

MH1 =   4 + b9**2 + c1**5 + c4**5 + h10**4 + j2 + k10**4 + p10**4 + 
    - q5**5 + q8 + s3**3 + s7**2 + t6**3 + u3**2 + u9**3 + x8**4 + 
    - z2**3 

के लिये दस्तावेज में देखोअधिक विकल्पों के लिए (आउटपुट फ़ाइल का नाम बदलना और इसी तरह)।

+0

धन्यवाद एक गुच्छा! मैंने स्प्लिस की कोशिश करने के बारे में सोचा नहीं था। अब मुझे test.mf फ़ाइल की कुछ गतिशील पीढ़ी करने की आवश्यकता है (जैसे स्प्लिस सहायता पृष्ठ में) और मैं कर रहा हूं। – Timo

+0

पिल्सी, मैंने कुछ गणितीय एस/डब्ल्यू लिखने के लिए विस्तृत परीक्षण मामलों को उत्पन्न करने के लिए 'स्प्लिस' का उपयोग किया है। बहुत उपयोगी, लेकिन कभी-कभी सही उत्पादन का उत्पादन करने के लिए गणित प्राप्त करने में मुश्किल होती है। – rcollyer