מייפל/סקירת יכולות


סקירת יכולות

עריכה

חישובים פשוטים

עריכה
sum(n^2,n=1..1e9);
333333333833333333500000000
  • הריבוע אוטומטית הופך לכתב עילי
  • ה-e הופך מנטוי לרגיל.
100/3; %*4;
 
 
  • סימן ה-% (בגרסאות ישנות יותר זהו סימן ה-") אומר למייפל להשתמש בתוצאה האחרונה. בדומה, %% זה התוצאה לפני האחרונה, ו-%%% זו הקודמת להיא (הדרגה השלישית היא המקסימלית).

פתרון מערכת משואות לינאריות

עריכה

יש להעביר לפונקציה solve שני פרמטרים: האחד הוא מערכת משוואות והשני הוא המשתנים שרוצים לקבל את הביטוי עבורם:

solve({x+2*y+3*z = c, x-2*y+4*z = d, 3*x+6*y-2*z = e}, {z, x, d})
 
  • שימו לב כי כאן מייפל יודעת להבחין בין e המספר ו-e כמשתנה (כאן ההתייחסות ל-e היא כאל פרמטר לא ידוע), אך בכל זאת לא מומלץ להשתמש באותיות שמורות על מנת למנוע שגיאות.

גזירה ואינטגרציה

עריכה
out:=diff(e^x*sin^3*x, x)
 
int(out,x)
 
int(1/x^2, x = 2 .. infinity)
 

פתרון מד"ר

עריכה

נבצע השמה:

ode:=3*y''+2*y'-y=3*exp(x)
 
  • הפקודה הראשונה משתמש בשני אופרטורים. האופרטור הראשון הוא השמה, אשר אומר למייפל להשים משוואה לתוך המשתנה ode.
  • שימו לב כי מייפל זיהתה לבד שy היא פונקציה של x וכתבה את הביטוי מעט אחרת (ניתן גם להזין אותו בלשון diff)

כעת נשתמש בפקודה dsolve לשם פתרון. יש להעביר כפרמטרים את המשוואה (ניתן היה לכתוב אותה ישירות), תנאי התחלה, ואת המשתנה עבורו פותרים (במקרה שלנו - y)

sol:=dsolve({y(0) = 1, (D(y))(0) = 1, ode}, y(x));
 
  • שימו לב כי רק עבור dsolve, פירושו של D הוא נגזרת.
plot(rhs(sol),x=-5..5);
  • הפקודה rhs מחלצת את אגף ימין של הביטוי.
  • גרף בתחום הנ"ל יתווסף לגיליון העבודה.

פתרונות נומריים ודיוק

עריכה
  • גובה הדיוק מאוחסן במשתנה שמור בשם Digits בתור מספר הספרות אחרי הנקודה העשרונית:
Digits:=10:
solve(x+1 = tan(x), x);
RootOf(-tan(_Z)+_Z+1)
  • התקבל פתרון סימבולי, אך ניתן "להעריך" אותו נומרית:
evalf(%)

1.132267725


  • התקבל, כמבוקש, דיוק של 10 ספרות. ניתן להעביר פרמטר ל-evalf שיתעלם מברירת המחדל:
evalf(%%,3)

1.13


  • לחילופין, ניתן להשתמש בפקודה fsolve כלהלן:
fsolve(x+1 = tan(x), x);
1.132267725
Digits:=20:
fsolve(x+1 = tan(x), x);
1.1322677252728851316

מטריצות

עריכה
A := matrix(2, 2, [1, 2, 3, 4])
 
det(A)
det(A)
with(linalg):
det(A)
-2
eigenvalues(A)
 
  • עד עתה השתמשנו בפקודות פשוטות אשר הkernel יודע לפתור. על מנת להשתמש בפקודות מטריציות, היינו צריכים לטעון את הספרייה linalg.

פרוצדורות

עריכה
for i to 5 do print(i^i) end do
1

4
27
256

3125
toothF := proc (x) if x<5 or x>10 then 0 else 1 fi end;
proc (x) if x < 5 or 10 < x then 0 else 1 end if end proc
toothF(3); toothF(6.5);
1
0

גרפיקה

עריכה
plot3d(x^2+y^2,x=-2..2,y=-2..2,color=x^2+y^2)

 



- סקירת יכולות הפרק הבא:
חיפוש עזרה