זהו הפקודה ג'ינש שניתן להפעיל בספק האירוח החינמי של OnWorks באמצעות אחת מתחנות העבודה המקוונות המרובות שלנו, כגון Ubuntu Online, Fedora Online, אמולטור מקוון של Windows או אמולטור מקוון של MAC OS
תָכְנִית:
שֵׁם
ginsh - GiNaC Interactive Shell
תקציר
ג'ינש [קוֹבֶץ...]
תיאור
ג'ינש הוא חזית אינטראקטיבית עבור מסגרת החישוב הסימבולית GiNaC. זה
מיועד ככלי לבדיקה והתנסות בתכונות של GiNaC, לא בתור א
תחליף למערכות אלגברה ממוחשבות אינטראקטיביות מסורתיות. למרות שזה יכול לעשות הרבה
דברים שהמערכות המסורתיות האלה יכולות לעשות, ג'ינש לא מספקת מבני תכנות כמו
לולאות או ביטויים מותנים. אם אתה זקוק לפונקציונליות זו, מומלץ לכתוב
התוכנית שלך ב-C++, תוך שימוש במסגרת הכיתה ה"מקורית" של GiNaC.
נוהג
קלט פורמט
לאחר ההפעלה, ginsh מציג הנחיה ("> ") המסמנת שהוא מוכן לקבל את שלך
קֶלֶט. קלט מקובל הם ביטויים מספריים או סמליים המורכבים ממספרים (למשל
42, 2/3 or 0.17), סמלים (למשל x or תוצאה), אופרטורים מתמטיים כמו + ו *, ו
פונקציות (למשל חטא or נוֹרמָלִי). כל ביטוי קלט חייב להסתיים ב-a
נקודה-פסיק (;) או נקודתיים (:). אם יסתיים עם נקודה-פסיק, ג'ינש יעריך את
ביטוי והדפיס את התוצאה ל-stdout. אם מסתיים עם נקודתיים, ג'ינש יהיה רק
להעריך את הביטוי אך לא להדפיס את התוצאה. אפשר להזין מרובים
ביטויים על שורה אחת. ניתן להחיל רווחים (רווחים, כרטיסיות, שורות חדשות) בחופשיות ביניהם
אסימונים. כדי להפסיק את הג'ינס, הכנס להפסיק or יציאה, או הקלד EOF (Ctrl-D) בהנחיה.
תגובות
כל דבר בעקבות נטוי כפול (//) עד סוף השורה, וכל השורות מתחילות
עם סימן חשיש (#) מתייחסים כהערה ומתעלמים מהם.
מספרים
ginsh מקבל מספרים בסימון העשרוני הרגיל. זה כולל דיוק שרירותי
מספרים שלמים ורציונלים כמו גם מספרי נקודה צפה בסטנדרטים או מדעיים
סימון (למשל 1.2E6). הכלל הכללי הוא שאם מספר מכיל נקודה עשרונית
(.), זהו מספר נקודה צפה (לא מדויקת); אחרת זה מספר שלם (מדויק) או
רַצִיוֹנָלִי. ניתן לציין מספרים שלמים בבינארי, אוקטלי, הקסדצימלי או שרירותי (2-36)
בסיס על ידי הקדמתם #b, #o, #x, או #nR , בהתאמה.
סימבולים
סמלים מורכבים ממחרוזת של תווים אלפאנומריים ומהקו התחתון (_), עם
התו הראשון אינו מספרי. לְמָשָׁל a ו mu_1 הם שמות סמלים מקובלים, בעוד
2pi לא. אפשר להשתמש בסמלים עם אותם שמות כמו פונקציות (למשל חטא);
ג'ינש מסוגל להבחין בין השניים.
ניתן להקצות לסמלים ערכים על ידי הזנה
סמל = ביטוי;
כדי לבטל את הקצאת הערך של סמל שהוקצה, הקלד
בטל הקצאה('סמל');
סמלים שהוקצו מוערכים באופן אוטומטי (= מוחלפים בערך שהוקצה להם) כאשר
הם משומשים. כדי להתייחס לסמל הלא מוערך, הכנס מרכאות בודדות (') סביב השם,
כפי שהודגם עבור הפקודה "בטל הקצאה" למעלה.
סמלים נחשבים כברירת מחדל לתחום המורכב, כלומר מתייחסים אליהם כאילו
הם מייצגים מספרים מרוכבים. ניתן לשנות התנהגות זו באמצעות מילות המפתח
סמלים_אמיתיים ו מורכבים_סמלים ומשפיע על כל הסמלים החדשים שנוצרו.
הסמלים הבאים הם קבועים מוגדרים מראש שלא ניתן להקצות להם ערך על ידי ה
מִשׁתַמֵשׁ:
Pi הקבוע של ארכימדס
קטלאנית הקבוע של קטלאנית
אוילר אוילר-מסצ'רוני קונסטנט
I sqrt (-1)
FAIL אובייקט ממחלקת GiNaC "fail".
יש גם את המיוחד
ספרות
סמל השולט על הדיוק המספרי של חישובים עם מספרים לא מדויקים.
הקצאת ערך מספר שלם לספרות ישנה את הדיוק למספר הנתון של
מקומות עשרוניים.
WILDCARDS
הפונקציות has(), find(), match() ו-subs() מקבלות תווים כלליים כמצייני מקום עבור
ביטויים. לאלה יש את התחביר
$מספר
למשל $0, $1 וכו'.
אחרון מודפס ביטויים
ginsh מספק את שלושת הסמלים המיוחדים
%, %% ו-%%%
המתייחסים לביטוי המודפס האחרון, השני האחרון והשלישי האחרון, בהתאמה.
אלה שימושיים אם אתה רוצה להשתמש בתוצאות של חישובים קודמים בחדש
ביטוי.
מפעילים
ginsh מספקת את האופרטורים הבאים, המפורטים בסדר עדיפות יורד:
! פקטורי של postfix
^ כוח
+ פלוס אחד
- מינוס אחד
* כפל
/ חלוק
+ תוספת
- - חיסור
< פחות מ
> גדול מ
<= פחות או שווה
>= גדול או שווה
== שווה
!= לא שווה
= הקצאת סמלים
כל האופרטורים הבינאריים הם אסוציאטיביים לשמאל, למעט ^ ו = שהם צודקים-
אסוציאטיבי. התוצאה של מפעיל ההקצאה (=) הוא הצד הימני שלו, אז זהו
ניתן להקצות מספר סמלים בביטוי אחד (למשל a = b = c = 2;).
רשימות
רשימות משמשות את :05 ו לפתור פונקציות. רשימה מורכבת מסד מתולתל נפתח
({), רצף (אולי ריק) של ביטויים מופרדים בפסיקים, וסוגר מסולסל סוגר
(}).
מטריצות
מטריצה מורכבת מסוגר מרובע נפתח ([), רצף לא ריק מופרד בפסיקים
של שורות מטריצה, וסוגר מרובע סוגר (]). כל שורת מטריצה מורכבת מפתח
סוגר מרובע ([), רצף לא ריק של ביטויים מופרדים בפסיקים וסגירה
סוגר מרובע (]). אם השורות של מטריצה אינן באורך זהה, רוחב ה-
המטריצה הופכת לזו של השורה הארוכה ביותר ושורות קצרות יותר מתמלאות בסוף עם
אלמנטים של ערך אפס.
פונקציות
לקריאה לפונקציה בג'ינש יש את הצורה
שם(טיעונים)
איפה טיעונים הוא רצף מופרד בפסיקים של ביטויים. ginsh מספק כמה
פונקציות מובנות וגם "מייבא" את כל הפונקציות הסמליות המוגדרות על ידי GiNaC ו
ספריות נוספות. אין דרך להגדיר פונקציות משלך מלבד קישור
ginsh כנגד ספרייה המגדירה פונקציות GiNaC סימבוליות.
ginsh מספק השלמת Tab על שמות פונקציות: אם אתה מקליד את החלק הראשון של פונקציה
שם, לחיצה על Tab תשלים את השם אם אפשר. אם החלק שהקלדת אינו ייחודי,
לחיצה נוספת על Tab תציג רשימה של פונקציות תואמות. לחיצה על Tab פעמיים ב-
הנחיה תציג את רשימת כל הפונקציות הזמינות.
להלן רשימה של הפונקציות המובנות. כמעט כולם עובדים בתור GiNaC המתאים
שיטות באותו שם, ולכן לא אתאר אותן בפירוט כאן. אנא עיין ב
תיעוד GiNaC.
charpoly(מַטרִיצָה, סמל) - פולינום אופייני של מטריצה
coeff(ביטוי, אובייקט, מספר) - מחלץ מקדם של מספר אובייקט מ-a
פולינום
לאסוף(ביטוי, חפץ או רשימה) - אוסף מקדמים של כוחות דומים (תוצאה
בצורה רקורסיבית)
collect_distributed(ביטוי, רשימה) - אוסף מקדמים של כוחות דומים
(התוצאה בצורה מבוזרת)
collect_common_factors(ביטוי) - אוסף גורמים משותפים מתנאי הסכומים
לְהַטוֹת(ביטוי) - צימוד מורכב
תוֹכֶן(ביטוי, סמל) - חלק תוכן של פולינום
decomp_rational(ביטוי, סמל) - לפרק פונקציה רציונלית לפולינום
ותפקוד רציונלי תקין
תואר (ביטוי, אובייקט) - דרגת פולינום
דנום(ביטוי) - מכנה של פונקציה רציונלית
קוֹצֵב(מַטרִיצָה) - דטרמיננט של מטריצה
דיאג(ביטוי...) - בונה מטריצה אלכסונית
הבדל(ביטוי, סמל [, מספר]) - בידול חלקי
לחלק(ביטוי, ביטוי) - חלוקה פולינומית מדויקת
eval(ביטוי [, רָמָה]) - מעריך ביטוי, מחליף סמלים שלהם
ערך מוקצה
evalf(ביטוי [, רָמָה]) - מעריך ביטוי למספר נקודה צפה
evalm(ביטוי) - מעריך סכומים, תוצרים וחזקות מספרים שלמים של מטריצות
לְהַרְחִיב(ביטוי) - מרחיב ביטוי
גורם(ביטוי) - מפרק ביטוי (חד משתנה)
למצוא(ביטוי, דפוס) - מחזירה רשימה של כל המופעים של דפוס ב-an
ביטוי
fsolve(ביטוי, סמל, מספר, מספר) - מצא מספרית שורש של ערך אמיתי
לתפקד בתוך מרווח
gcd(ביטוי, ביטוי) - המחלק המשותף הגדול ביותר
יש ל(ביטוי, דפוס) - מחזירה "1" אם הביטוי הראשון מכיל את התבנית
כתת-ביטוי, "0" אחרת
integer_content(ביטוי) - תוכן מספר שלם של פולינום
הפוך(מַטרִיצָה) - הפוך למטריצה
הוא(יחס) - מחזירה "1" אם היחס נכון, "0" אחרת (false או
לֹא הֶחלֵטִי)
lcm(ביטוי, ביטוי) - כפולה משותפת מינימאלית
lcoeff(ביטוי, אובייקט) - מקדם מוביל של פולינום
תואר (ביטוי, אובייקט) - דרגה נמוכה של פולינום
לפתור (רשימת המשוואות, רשימת סמלים) - לפתור מערכת משוואות ליניאריות
מַפָּה(ביטוי, דפוס) - החל פונקציה על כל אופרנד; הפונקציה להיות
היישום מצוין כתבנית כאשר התו הכללי "$0" מייצג את האופרנדים
התאמה(ביטוי, דפוס) - בדוק אם ביטוי מתאים לתבנית; מחזיר א
רשימה של החלפות תווים כלליים או "FAIL" אם אין התאמה
לא (ביטוי) - מספר אופרנדים בביטוי
נוֹרמָלִי(ביטוי [, רָמָה]) - נורמליזציה של תפקוד רציונלי
מספר(ביטוי) - מונה של פונקציה רציונלית
numer_denom(ביטוי) - מונה וממנה של פונקציה רציונלית כ-a
רשימה
אופ(ביטוי, מספר) - לחלץ אופרנד מביטוי
כּוֹחַ(expr1, expr2) - אקספוננציה (שווה ערך לכתיבת expr1^expr2)
prem(ביטוי, ביטוי, סמל) - פסאודו-שארית של פולינומים
primpart(ביטוי, סמל) - חלק פרימיטיבי של פולינום
quo(ביטוי, ביטוי, סמל) - מנה של פולינומים
דַרגָה(מַטרִיצָה) - דרגה של מטריצה
rem(ביטוי, ביטוי, סמל) - שאר הפולינומים
כתוצאה(ביטוי, ביטוי, סמל) - תוצאה של שני פולינומים עם
כבוד לסמל ס
סִדרָה(ביטוי, יחס-או-סמל, להזמין) - הרחבת סדרה
sprem(ביטוי, ביטוי, סמל) - פסאודו-שארית דלילה של פולינומים
sqrfree(ביטוי [, רשימת סמלים]) - פירוק ללא ריבוע של פולינום
sqrt(ביטוי) - שורש ריבועי
subs(ביטוי, קשר-או-רשימה)
subs(ביטוי, חפש רשימה, החלפה לפי רשימה) - תחליף ביטויי משנה (אתה
עשוי להשתמש בתווים כלליים)
tcoeff(ביטוי, אובייקט) - מקדם נגרר של פולינום
זְמַן(ביטוי) - מחזיר את הזמן בשניות הדרוש להערכת הנתון
ביטוי
זֵכֶר(מַטרִיצָה) - עקבות של מטריצה
לְשַׁרבֵּב(מַטרִיצָה) - טרנספוזיציה של מטריצה
בטל הקצאה('סֵמֶל') - בטל את ההקצאה של סמל שהוקצה (שים לב למרכאות, בבקשה!)
יחידה(ביטוי, סמל) - חלק יחידה של פולינום
מיוחד פקודות
כדי לצאת מגינש, היכנס
להפסיק
or
יציאה
ginsh יכול להציג עזרה (קצרה) עבור נושא נתון (בעיקר על פונקציות ואופרטורים)
על ידי כניסה
?נושא
הקלדה
??
יציג רשימה של נושאי עזרה זמינים.
הפקודה
הדפס(ביטוי);
ידפיס dump של הייצוג הפנימי של GiNaC עבור הנתון ביטוי. זה
שימושי לניפוי באגים וללמידה על רכיבים פנימיים של GiNaC.
הפקודה
print_latex(ביטוי);
מדפיס ייצוג LaTeX של הנתון ביטוי.
הפקודה
print_csrc(ביטוי);
מדפיס את הנתון ביטוי באופן שניתן להשתמש בו בתוכנית C או C++.
הפקודה
iprint(ביטוי);
מדפיס את הנתון ביטוי (שחייב להעריך למספר שלם) בעשרוני, אוקטלי ו
ייצוגים הקסדצימליים.
לבסוף, הפגז נמלט
! [הפקודה [טיעונים]]
עובר את הנתון הפקודה ובאופציה טיעונים לקליפה לביצוע. עם זה
בשיטה, אתה יכול לבצע פקודות מעטפת מתוך ג'ינש מבלי שתצטרך להפסיק.
דוגמאות
> a = x^2-x-2;
-2-x+x^2
> b = (x+1)^2;
(x+1)^2
> s = a/b;
(x+1)^(-2)*(-2-x+x^2)
> הבדל(ים, x);
(2*x-1)*(x+1)^(-2)-2*(x+1)^(-3)*(-x+x^2-2)
> רגיל(ים);
(x-2)*(x+1)^(-1)
> x = 3^50;
717897987691852588770249
> s;
717897987691852588770247/717897987691852588770250
> ספרות = 40;
40
> evalf(ים);
0.999999999999999999999995821133292704384960990679
> unassign('x');
x
> s;
(x+1)^(-2)*(-x+x^2-2)
> series(sin(x),x==0,6);
1*x+(-1/6)*x^3+1/120*x^5+Order(x^6)
> lsolve({3*x+5*y == 7}, {x, y});
{x==-5/3*y+7/3,y==y}
> lsolve({3*x+5*y == 7, -2*x+10*y == -5}, {x, y});
{x==19/8,y==-1/40}
> M = [ [א, ב], [ג, ד] ];
[[-x+x^2-2,(x+1)^2],[c,d]]
> דטרמיננט (M);
-2*d-2*x*cx^2*cx*d+x^2*dc
> collect(%, x);
(-d-2*c)*x+(dc)*x^2-2*dc
> לפתור את תורת השדות הקוונטיים;
שגיאת ניתוח בקוונטים
> להתפטר
דיאגנוסטיקה
שגיאת ניתוח ב Foo
הזנת משהו שגינש לא הצליח לנתח. אנא בדוק את התחביר של
הקלט שלך ונסה שוב.
טענה NUM ל פונקציה חייב להיות סוג
מספר הטיעון NUM לנתון פונקציה חייב להיות מסוג מסוים (למשל א
סמל, או רשימה). לארגומנט הראשון יש מספר 0, הארגומנט השני מספר 1,
וכו '
השתמש ב-ginsh באופן מקוון באמצעות שירותי onworks.net