מייפל/סקירת יכולות: הבדלים בין גרסאות בדף

מתוך testwiki
קפיצה לניווט קפיצה לחיפוש
imported>Mintz l
 
(אין הבדלים)

גרסה אחרונה מ־22:31, 17 ביולי 2007

תבנית:מייפל

סקירת יכולות

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

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

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

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

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

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

out:=diff(e^x*sin^3*x, x)
 exln(e)sin3x+exsin3
int(out,x)
 exsin3x
int(1/x^2, x = 2 .. infinity)
12

פתרון מד"ר

נבצע השמה:

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

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

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

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

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

תבנית:קלט פלט

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

תבנית:קלט פלט

  • לחילופין, ניתן להשתמש בפקודה 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])
 [1234]
det(A)
תבנית:משמאל לימין
with(linalg):
det(A)
תבנית:משמאל לימין
eigenvalues(A)
 52+1233,521233
  • עד עתה השתמשנו בפקודות פשוטות אשר ה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

גרפיקה

תבנית:קלט פלט

תבנית:מייפל