اعمال و دستورات مقدماتي
خود آموز نرم افزار
> cylinderplot([z*theta,theta,cos(z^2)],theta=0..Pi,z=-2..2);
[pic]
مركز نرم افزار و محاسبات رايانه اي دانشگاه گيلان
اسماعيل خالقی
مقدمــه :
با پيدايش و پيشرفت كامپيوتر نرم افزارهاي مختلفي براي منظور هاي مشخصي طراحي و ساخته شد كه اين نرم افزارها علاوه برآسان نمودن بسياري از امور در پيشرفت سريع علوم نقش مهمي را ايفا نموده اند.
در اين ميان رياضيدانان محققين و مهندسين نيز در جهت انجام محاسبات واجرا اهداف خود نرم افزارهاي محاسباتي گوناگوني طراحي وعرضه نموده اند كه هر يك در زمان خودداراي معايب ومحاسني بوده است.
آنچه پيش رو داريد خودآموز استفاده از دستورات نرم افزار محاسبــاتي Mapleاست . اين نرم افزار از دهه هشتاد به بعد توسط چندين موسسه رياضي وتحقيقاتي نظير دانشگاهWaterlo و دانشگاه Drexel طراحی و با رفع نسخه های قبلی و اعمال روشهای جديد رياضی برای انجام امور محاسباتی عرضه گرديد .
اين نرم افزار ، همانند ديگر نرم افزارهاي محاسباتي نظير Mathematica و Matlab ، يك سيستم جبري كامپيوتري قوي و هوشمند در انجام محاسبا ت است و يكي از ويژگيهاي مهم آن پيوند دستورات و توابع مهمMaple با اين نرم افزارها مي باشد. لذا يكي از نقاط قوت اين نرم افزار پوشش دادن كامل Mathematica و Matlab و علاوه بر آن سادگي دستورات و ويرايش داده هاي خروجي مي باشد كه بعد از مدتي كار كردن با اين نرم افزار نكا ت مطاوب آن بر كاربر روشن خواهد شد .
Maple نه تنها قادر است بسياري از محاسبات را به صورت تحليلي يا عددي محاسبه نمايد بلكه مي توان آن را به عنوان يك زبان برنامه نويسي سطح بالا بكار برد ، با اين تفاوت كه نرم افزار به علت داشتن سابروتين ها و توابع كتابخانه اي قدرتمند ، از ساير كامپايلر هاي برنامه نويسي نظير فرترن و پاسكال راحت تر و قوي تر مي باشد . اما نبايد اين نكته را از ياد برد كه هيچگاه نرم افزار معجزه گر نيست و مسلماَ با يك دستور بسيار ساده آن نبايد توقع محاسبات فوق العاده پيچيده را نمود . ولي به هر حال نرم افزار به عنوان يك ابزار مناسب در دسترس كساني است كه نياز به كار محاسباتي دارند و در واقع اين محاسبه گر توانا و آشنا به قضايا و روشهاي رياضي است كه مي تواند با تركيب دستورات نرم افزار و استفاده از روشهاي رياضي ، نرم افزار را مجبور به انجام محاسبات بسيار پيچيده و سنگين نمايد .
اساس كار Maple
وقتي Maple راه اندازي و اجرا مي شود ، فقط هسته آن كه پايه و اساس سيستم است و شامل دستورا ت بنيادي و اوليه مي باشد به حافظه منتقل مي شود . هسته به زبان C نوشته شده و تقريبا ده درصد از كل سيستم Maple است كه طراحان اين نرم افزار به منظور سرعت و كارايي بيشتر هسته را كوچك نگه داشته و نود درصد نرم افزار به زبان Maple نوشته شده ودر كتابخانه Maple قرار دارد.
كتابخانه به سه دسته تقسيم مي گردد :
1- كتابخانه اصلي : شامل دستوراتي است كه در صورت فرا خواني خيلي سريع به حافظه منتقل و اجرا ميگردد. اين دستورات بيشتر با دستور with(...)اجرا مي گردد .
مثال :
الف- بار سازي بسته Linalg مر بوط به دستورات و توابع جبر خطي with(Linalg)
ب- بار سازي بسته plots مربوط به تر سيمات گرافيكي with(plots)
2 - كتا بخانه متفرقه : شامل بسياري از دستوراتي است كه كمتر بكا ر مي روند و آنها را بايد قبل از استفاده با دستور readilb(..) فراخواني نمود .
مثال
بار سازي بسته cost براي تعيين ارزش اعما ل readlib(cost)
ليست بسته هاي[1] مهم موجود در نرم افزا ر Maple
student - حساب ديفرانسيل و انتگرال –سري ها –دنباله ها –روشهاي ذوزنقه و سيمپسون در انتگرالگيري و...
combinate - توابع تركيباتي (محاسبه جايگشتها, تركيب ليستها , افراز اعداد )
combstract - توليد و شمارش ساختارهاي تر كيباتي
- DEtoolsرسم دستگاههاي معادله ديفرانسيل
difforms - فرمهاي ديفرانسيل (مسائل مربوط به هندسه ديفرانسيل)
domains - ايجاد دامنه هاي محاسبه (براي چند جمله ايها , ماتريسها و...)
- gaussIntكار با اعداد صحيح گاوسي (فاكتور گيري , اول بودن و...)
geometry - هندسه ا قليدسي(دو بعدي)
- geo3dهندسه اقليدسي (سه بعدي)
group - گروههاي جايگشت و گروههاي متناهي
linalg - جبر خطي و كار با ماتريسها
grobner - محاسبا ت در پايه Grobner
inttrans - تبديلات انتگرا لي و معكو س آنها
liesymm - ارتباط متقارن دستگاههاي ديفرانسيل با مشتقا ت جزئي
logic - كار با عبارات و توابع بولي
LREtools - رسم و حل معادلات باز گشتي خطي
networks - نظريه گراف
numapprox - تقريب چند جمله اي براي توابع روي يك بازه
umtheory - تئوري اعداد
orthoply- توليد چند جمله ايهاي متعامد
plots - رسم انواع نمودار هاي خاص
powseries - سريهاي تواني
simplex - الگوريتم سيمپلكس
sum tools - محاسبه مجمو عه هاي متناهي و نا متناهي
padic - تقريبات p-adic
plottools - بكار گيري عناصر گرافيكي
process - بر نامه نويسي تحت UNIX
stats - كار هاي آماري
tensor - اعمال با تانسورها
البته بسته هاي ديگري در كتابخانه نرم افزار موجود است كه كاربر با رجوع به Help نرم افزار مي تواند اين بسته ها (pakages) را ياد گيري و بارسازي نمايد. هر بسته نرم افزاري با دستور with(...) بار سازي شده و تمام دستورات اين بسته به صورت خروجي نمايش داده مي شود .
در اين خود آموز بيشتر سعي شده است تا دستورات مهمي كه بيشترين كاربرد را دارد و مسائل مختلف رياضي كه در دوره هاي كارشناسي رياضي و رشته هاي فني مطرح مي گردد ، ذكر و از پرداختن به مسائلي كه دانش رياضي پيشرفته تري را مي طلبد خودداري شده است . ولي به هر حال چنانچه به دستور خاصي از يكي از بسته هاي فوق نياز داشته باشيم ، با انتخاب آن دستور و فشار دادن كليد F1 مي توان طرز نوشتار آن دستور و توضيحات به همراه چند مثال را در Help ملاحظه نمود .
مثال : بسته plot كه مربوط به رسم توابع و نمودار هاست را بارسازي مي كنيم .
> with(plots);
[pic][pic]
همانگونه كه ملاحظه مي گردد تمام دستورات بسته plot بر طبق حروف الفبا در خروجي دستور نشان داده شده است .
نكات اوليه در مورد اجرا دستورا ت Maple
نكته 1 - برا ي اجرا هر دستور Maple بايد در انتهاي دستور علامت ; (سمي كالن) را درج نموده و كليد Enter را فشار دهيم .
اگر در انتهاي هر دستور بجاي ; ا ز : استفاده شود , دستور اجرا مي گردد ولي خروجي آن نمايش داده نمي شود.
نكته 2- اگر بين دستورات Maple در يك خط علامت, قرا ردهيم خروجي ها نيز د ر يك خط نمايش داده مي شود.
مثال
> 2^10,2^15,2^20;
[pic]
اگر بين دستورلت از علامت ; استفاده كنيم خروجي به صورت ستوني نمايش داده ميشود.
> 10!;15!;20!;
[pic]
[pic]
[pic]
نكته 3- براي درج انديس از علامت [] استفاده مي كنيم .
مثال :
> a[1],a[2],a[3];
[pic]
نكته 4 – جهت دسترسي به آخرين خروجي مي توان از علامت % استفاده نمود .
اعمال و دستورات مقدماتي :
اعمال ، همانند ساير برنامه هاي كامپيوتري به صورت زير است:
|توان |^ |
|ضرب |* |
|تقسيم |/ |
|جمع |+ |
|تفريق |- |
و اولويت اجرا به ترتيب با اعمال ( ) و ^ و * و / و + و - است .
مثال:
>3.2^35;
>45^2*3.2/4;
تذكر: اگر در محاسبه تقسيم اعداد علامت نقطه ( . ) قرار دهيم كسر به صورت تقريبي و اعشاري نمايش داده مي شود.
مثال:
>2/3.;
>34/3.+69/5.;
تعريف ثابتهاي رياضي:
|ثابت اويلر |gamma |
|عدد پي |Pi |
|عدد نپرe |exp(1) |
|واحد موهومي |I |
|بينهايت |infinity |
مثال:
>I^2;
>exp(3);
>Pi*5^2;
|اختصاص دادن مقادير به اسامي |a:=value |
|پاك كردن مقدار ا زحافظه |a:=’a’; |
مثال:
به حرف a وكلمه art مقادير3.1 , 4 اختصاص مي دهيم .
>a:=3.1;
>art:=4;
>a+art;
>a:=’a’;
>a+art;
تذكر: از دو دستورassign , unassign نيز براي مقدار دهي مي توان استفاده كرد.
مثال:
>assign(a,5);
>unassign(‘a’);
مقادير < يا >و يا < > را به عنوان مخالف ميتوان تعريف كرد.
مثال:
> a0;
>b>=3;
>x^3-3*x^2+4*x Pi:=6;
Error, attempting to assign to `Pi` which is protected
>exp:=b;
Error, attempting to assign to `exp` which is protected
پس اگر در محاسبات بخواهيم از حروف و كلمات به عنوان متغير استفاده كنيم بايد از اسامي غير حفاظت شده استفاده كنيم.
تذكر2: با دستورات زير اسامي حفاظت شده را مي توان به حفاظت نشده و بالعكس تبديل كرد.
|اسم حفاظت نشده c را به اسم حفاظت شده و غير قابل تغيير در maple تبديل مي كند |protect(c); |
|اسم حفاظت شده d را به اسم حفاظت نشده قابل تغيير در maple تبديل مي كند |unprotect(d); |
مثال:
>c:=3.99999;
>protect(c);
>c:=4;
Error, attempting to assign to `c` which is protected
مثال:
>unprotect(Pi);
>Pi:=6;
عبارات و اعمال جبر مقدماتي :
|ثبت عبارت جبري exprبا نام p |p:=expr |
مثال:
>P:=x^2+3*x^3+4;
| factor(p); |فاكتورگيري از يك عبارت جبري p |
|expand(q); |بسط يك عبارت جبري q |
مثال:
>q:=(x+y)^3*(x-y);
>expand(q);
[pic]
>factor(%);
[pic]
|simplify(p); |تبد يل p به ساده ترين فرم ممكن |
مثال :
> p:=exp(3*x*y)*4*exp(4*x*y);
[pic]
> simplify(p);
[pic]
| normal(q); |ساده ترين فرم گوياي يك عبارت كسري |
مثال :
> p:=(x^2-1)^12/(x-1)^2;
> normal(p);
> normal( 1/x+x/(x+1) );
|numer(p); |دسترسي به صورت و مخرج كسر p |
|denum(p); | |
مثال :
>numer(p);
>denumer(p);
> q:=1/x^3-(1-x+x^2)/x^3;
> denom(q);
> denuom(normal(q));
|divide(p,q); |تحقيق بخش پذيري عبارت جبري p بر q |
مثال 1:
> p:=x^3-3*x^2+4:
> q:=x^2-2:
> divide(p,q);
false
مثال 2 :
> R:=x-2:
> divide(p,R);
true
> factor(p);
|rem(p,q,x); |محاسبه باقيمانده تقسيم عبارت p بر q بر حسب x |
|quo(p,q,x); |محاسبه خارج قسمت عبارت p بر q بر حسب x |
مثال :
> rem(p,q,x);
> quo(p,q,x);
در جهت چك نمودن موارد فوق دستور زير را اجرا نمائيد.
> normal(%*q+%%);
تذكر : براي تعيين باقيمانده و خارج قسمت دو چندجمله اي از دستور زير نيز مي توان استفاده نمود .در اين دستور نياز به درج دستور quo نميباشد .
> rem(p,q,x,w);
> w;
|coff(p,x^k); |تعيين ضريب xk در عبارت p |
مثال:
> p:=(x+y+z)^22;
> coeff(p,x^16);
و بادستور زير ضريب x16 را ساده نمائيد .
> simplify(%);
مثال :
با دستور زير ضريب x در عبارت p تعيين مي گردد .
> p := 3*a*(x+1)^2 + sin(a)*x^2*y - y^2*x + x - a:
> coeff(p,x);
|collect(p,x); |دسته بندي عبارت p به صورت توانهاي x |
مثال:
> p := 3*a*(x+1)^2 + sin(a)*x^2*y - y^2*x + x - a:
> collect(p,x);
|gcd(p,q); |محاسبه بزرگترين مقسوم عليه مشتركp وq |
مثال :
> p:=x^7-y^7;
> q:=x^4-y^4;
> gcd(p,q);
|subs(x=a,p); |جايگذاري مقدار x=a در عبارت p |
مثال:
> p:=x^7-x^3-x+4^x+x^2.3-x^x/2*x;
> subs(x=2.044,p);
حل معادلات و نامعادلات :
|Solve(p,x) |حل معادله P نسبت به متغير x |
مثال:
> p:=x^7-x^3-x+x^2.3;
> solve(p,x);
[pic]
تذكر 1:
همانگونه كه در مثال فوق نيز ملاحظه ميگردد تمام ريشه هاي مختلط و حقيقي عبارت p محاسبه گرديده . در روشهاي محاسباتي ، بهتر است به مجموعه جواب فوق اسمي نسبت داده ، تا در مراحل بعدي محاسباتمان هر يك از جوابها قابل فراخواني باشد .
مثال: با نسبت دادن اسم s1 به مجموعه جواب فوق ، سومين ريشه را فراخواني مي كنيم.
> s1:= solve(p,x);
> s1[3];
[pic]
مثال: ريشه چهارم را در عبارت p جاگذراي ميكنيم .
> subs(x=s1[3],p);
[pic]
تذكر 2: گاهي پس از اجراء دستور solve خروجي به صورت RootOf ... نشان داده مي شود كه با دستور evalf
مي توان مقدار تقريبي ريشه هاي معادله را بدست آورد .
مثال :
> p:=x^7-x^3+x^2+1;
> s1:=solve(p,x);
[pic]
> evalf(s1);
[pic]
البته ريشه هاي يك معادله جبري را به روشهاي عددي نيز ميتوان به صورت تقريبي حل نمود ، كه دستورات آن در ذيل داده شده است .
|realroot(p,1/k); |تعيين بازه اي با دقت 1/ k كه ريشه هاي حقيقي p در اين |
| |بازه قرار دارند . |
مثال:
> p:=x^7-x^3+x^2+1;
> realroot(p,1/1000);
[pic]
دقت شود كه هر چه k عددي بزرگتر باشد بازه ريشه هاي حقيقي كوچكتر و دقيقتر است .
|Solve(p solve( x^2+x+1>=5, x );
[pic]
مثال:
> solve( x^3+4*x>5, x );
[pic]
|Solve({p,q,R},{x,y,z}); |حل دستگاه معادلات p و q وR نسبت به x و y|
| |وz |
مثال:
> p:=4*x+3*y+4*z=2;
q:=x+2*y-3*z=1;
R:=3*x-4*y-7*z=3;
> solve({p,q,R},{x,y,z});
[pic]
تذكر : با دستور فوق بسياري از دستگاه معادلات غير خطي را نيز مي توان حل نمود .
مثال:
> p:=4*x+3*y^2+4*z^2=2;
q:=x*y+2*y-3*z=1;
R:=3*x*y-7*z=3;
> solve({p,q,R},{x,y,z});
[pic]
كه با دستور evalf جواب تقريبي بدست مي آيد .
> evalf(%);
[pic]
حل دستگاه معادلات غيرخطي و با روشهاي عددي به صورت ذيل خواهد بود .
|fsolve(p,x); |حل عددي معادله p نسبت به x |
مثال :
> p:=exp(x)*x^2-3*x^4+4;
[pic]
> fsolve(p,x);
[pic]
|fsolve({p,q,R},{x,y,z}); |حل دستگاه معادلات p و q وR نسبت به x و y|
| |وz |
مثال :
> p:=4*x+3*y^2+4*z^2=2;
q:=x*y+2*y-3*z=1;
R:=3*x*y-7*z=3;
> fsolve({p,q,R},{x,y,z});
[pic]
حساب ديفرانسيل و انتگرال
|تعريف تابعf(x) |f:=x->expr |
مثال :
> f:=x->3*x^2+exp(x);
|تبديل عبارتexpr به تابع f |f:=unapply(expr,x) |
مثال :
> p:=3*x^2+exp(x);
> f:=unapply(p,x);
تذكر: همانگونه كه در دستورات قبلي ديديم ، اگر p به صورت يك معادله جبري شامل متغير xتعريف شده باشد و بخواهيم درآن به جاي x مقدار aرا جايگذاري كنيم بايد از دستور subs استفاده كنيم. ولي اگرp به عنوان يك تابع بر حسب xتعريف شده باشد براي محاسبه p(a)فقط دستور p(a)را اجرا ميكنيم.
مثال:
تعريف p بعنوان يك عبارت جبري
> p:=3*x^2+exp(x);
> subs(x=6,p);
تعريفp بعنوان يك تابعي از x
> p:=x->3*x^2+exp(x);
> p(6);
|تعريف توابع چند ضابطه اي |f:=x->piecewise(xa1 andxpiecewise(x0and x1,x^3-sin(x));
[pic]
با دستور normal نيز در صورت نياز مي توان شكل استاندارد تابع را بدست آورد .
> normal(f(x));
[pic]
تركيب توابع
براي محاسبه تركيب توابع fogاز عملگر @استفاده مي كنيم وبا تكراراين عملگر مي توان مقدار nتركيب اين توابع را حساب كرد.
|تعيين fog(x) |(f@g)(x) |
مثال :
> g:=x->x^2;
> f:=x->sin(x)+Ln(x);
> (f@g)(x);
[pic]
|معكوس تابع f(x) |invfunc |
مثال :
> invfunc[exp](x);
تذكر : در محاسبه معكوس توابع از علامت @@ نيز مي توان استفاده كرد .
مثال :
> sin@@(-1);
حد وپيوستگي:
|حد f(x) در نقطه x=a |limit(f(x),x=a) |
مثال :
> limit(sin(x^2)/(3*x^2),x=0);
[pic]
|حد چپ fدر نقطه x=a |limit(f(x),x=a,left); |
|حد راست fدر نقطه x=a |limit(f(x),x=a,right); |
مثال :
> limit(1/x,x=0,left);
> limit(1/x,x=0,right);
تذكر : مي توان دستور limit را به صــــورتي اجرا كردكه خروجــي آن يك نماد رياضي وار بهتري داشته وقابل درك باشد.براي اين منظور حرف اول دستور را با حروف بزرگ تايپ مي كنيم .
مثال:
> Limit(sin(x^2)/(3*x^2),x=0)= limit(sin(x^2)/(3*x^2),x=0);
[pic]
در بعضـــي از دستـــورات maple نظـــــير محاسبه مشتق,انتگرال و... نيز مي توان به هــمين گونه عمل كرد.
گاهي براي محاسبه حد يك تابع نياز داريم كه از خاصيت تركيب خطي استفاده كنيم يعني :
limit(af(x)+bg(x))=alimitf(x)+blimitg(x)
اين كار را در mapleبا دستورات زير انجام مي دهيم
|بسط حد h(x) وقتي h(x)=a1f1(x)+a2f2(x)+...+anfn(x) |expand(limit(h(x),x=a); |
مثال :
> expand(limit(x^3+4*sin(x)+exp(x^6),x=2));
[pic]
|تركيب ,limf(x)+limg(x)+c به صورت يك حد |combine(Limit(f1,x=a)*Limit(f2,x=a)+c); |
مثال:
> combine(Limit(x^3,x=1)+Limit(sin(X),x=1)^2+5);
[pic]
> evalf(%);
[pic]
تذكر :اگر در دستــور اجرائي حــــد به جايa ، بينهايت قرار دهيم حد تابع در بينهايت محاسبه مي گردد.
مثال:
:: :
> limit((x^2+3*x)/(4*x^2),x=infinity);
> limit(1/x,x=0);
undifined
تابعي كه حد ندارد با رسم يك تابع در همسايگي نقطه a به صورت شهودي مي توان وضعيت حد تابع در آن نقطه را بررسي كرد ( در صورت نياز به بخش رسم نمودار مراجعه شود)
مثال:
> plot(sin(1/x),x=-1..1);
[pic]
به علت نوسان تابع sin(1/x)در نزديكي صفر تابع در x=0حد ندارد.
|تعيين نقاط ناپيوستگيf(x) |discont(f(x),x); |
تذكر : براي اجرا صحيح دستور فوق بهتر است تابع كتابخانه اي discontفراخواني گردد.
مثال:
> readlib(discont);
> discont(1/(x^2-5*x+6),x);
[pic]
|تحقيق اينكه آياتابع f درفاصلهa iscont(sin(1/x),x=-1..1);
false
> iscont(sin(x),x=-1..1);
true
تذكر2: مي دانيم يك تابع در x=a پيــوسته است هرگاه مقدارحددر نقطه x=aبا f(x)برابر باشد.اين مطلب را در mapleبه صورت زير تعيين مي كنيم :
مثال: تابع قطعه اي f را در نظر ميگيريم .
> f:=x->piecwise(x2,2*x+1);
[pic]
> limit(f(x),x=2);
> f(2);
مشتق:
|مشتق fنسبت به x |D(f)(x); يا diff(f(x),x); |
تذكر1: از دستور diff بيشتر براي محاسبه مشتقات جزئي استفاده ميگردد ولي به هر حال براي تعيين ديفرانسيل معمولي نيز مي توان از آن استفاده كرد.
مثال:
> diff(arctan(x)+3*x^2,x);
[pic]
مثال:
> f:=x-> arctan(x)+3*x^2:
> D(f)(x);
[pic]
تذكر2: مثال زير نشان مي دهد كه مقدار مشتق يك تابع را در نقطه x=aچگونه مي توان بدست آورد.
مثال:
> f:=x->arctan(x)+3*x^2:
> D(f)(0);
يا به صورت زير نيز مي توان محاسبه كرد.
> diff(f(x),x);
> subs(x=0,%);
تذكر3: در صورت نياز با استفاده از تعريف مشتق يعني [pic] ، نيز مي توان مقدار مشتق تابع fرا در نقطه x=x0بررسي كرد.
مشتقا ت مراتب بالا
|*مشتق مرتبه nام تابع f |(D@@n)(f); |
| |diff(f(x),x$n); |
مثال: محاسبه مشتق سوم تابع f
> f:=x-> arctan(x)+3*x^2:
> diff(f(x),x$3);
[pic]
يا به صورت زير نيز مي توان محاسبه كرد .
> (D@@3)(f);
[pic]
تذكر : همانگونه كه در مثالهاي فوق نيز مشاهده مي گردد ، در محاسبه مشتق f ، تفاوت دو دستور diff و D(f) در اين است كه خروجي دستور D ، مشتق f و به صورت يك تابع است ، ولي خروجي دستور diff ، مشتق f و به صورت يك عبارت جبري مي باشد .
|مشتق ضمني يك عبارت با فرض اينكه xمتغير مستقل |implicitdiff(expr,y,x); |
|است. | |
مثال:
> p:=x^2*y-3*x*y+y^2:
> implicitdiff(p,y,x);
[pic]
|محاسبه مقدار اكسترمم يك تابع |extrema(f(x),x); |
تذكر:قبل از اجرا دستور فوق بايد تابع كتابخانه اي extrema فراخواني شود.
مشتقات جزئي:
|*مشتق جزئي fنسبت به iامين متغير |D[i](f); |
| |diff(f,var); |
|مشتق جزئي fنسبت به i,j,kامين متغير |D[i,j,k](f); |
| |Diff(f,var1,var2,var3); |
مثال: تابع دو متغيره f(x,y) را به صورت زير در نظر مي گيريم :
> f:=(x,y)->x^2+y^2-3*x*y;
محاسبه [pic]
> D[1](f)(x,y);
[pic]
اين مشتق را با دستور زير نيز مي توان محاسبه نمود .
> diff(f(x,y),x);
[pic]
محاسبه [pic][pic][pic]
> D[1,2](f)(x,y);
[pic]
يا
> diff(f(x,y),x,y);
[pic]
محاسبه [pic]
> D[1$2](f)(x,y);
2
يا
> diff(f(x,y),x$2);
2
محاسبه [pic]
> D[1$2,2](f)(x,y);
يا
> diff(f(x,y),x$2,y);
در مورد توابع چند متغيره نيز ميتوان اكسترمم راتعيين كرد.
|مينيمم تابع دو متغيره f(x,y) |minimize(f(x,y)); |
تذكر:ابتدا بايد بسته studentبارسازي شود.
مثال :
> with(student);
> f:=(x,y)->x^2+y^2-3*x*y;
> minimize(f(x,y));
|ماكزيمم تابع دو متغيره f(x,y) |maximize(f(x,y)); |
|مينيمم تابع دو متغيره f(x,y)نسبت به x |minimize(f(x,y),{x}); |
|مينيمم تابع دو متغيره f(x,y)نسبت به x,y |minimize(f(x,y),{x,y}); |
|مينيمم تابع دو متغيره f(x,y)نسبت |minimize(f(x,y),x=a..b,y=c..d); |
|بهx,yدر فاصله a with(student):
> p:=x^2+3*x+4*x^5-2;
> extrema(p,x);
براي تعيين مقدا ر اكسترمم و نقطه عطف از دستوراتي كه تاكنون آموخته ايم نيز مي توان استفاده كرد.
به طور مثال براي تعيين ماكزيمم تابع fبا دستور diffاز آن مشتق گرفته و بادستور solveريشه هاي آن رابدست مي آوريم.
|نمايش خط مماس بر fدر نقطهx=a |showtangent(f,x=a); |
تذكر : براي اجراء اين دستور لازم است تا بسته student بار سازي شود .
مثال:
> with(student):
f:=x->x^2+exp(x)+2:
> showtangent(f,x=7);
[pic]
انتگرال:
|محاسبه انتگرال نا معين fنسبت به x |int(f(x),x); |
مثال:
> f:=x->x^2+exp(x)+2;
> int(f(x),x);
[pic]
|محاسبه انتگرال معين fاز aتا b |int(f(x),x=a..b); |
مثال :
> int(f(x),x=0..1);
[pic]
تذكر: در دستور فوق a,bمي تواند مقادير infinity,-infinityرا بعنوان انتگرال ناسره انتخاب كند.
|محاسبه انتگرال معين دوگانه |Doubleint(f(x,y),x=a..b,y=c..d); |
| |value(%); |
تذكر : در محاسبه انتگرال دوگانه ابتدا بسته student بارسازي شده و پس از اجراء دستور انتگرال دوگانه براي بدست آوردن مقدار دستور value يا evalf را اجراء ميكنيم .
مثال:
> f:=(x,y)->x^2+x*y+sin(x*y):
> Doubleint(x*y,x=0..Pi/2,y=0..1);
[pic]
> value(%);
[pic]
انتگرال دوگانه تابع دو متغيره فوق را نيز به صورت زير ميتوان محاسبه نمود.
> Doubleint(x*y,x,y);
[pic]
> value(%);
[pic]
|محاسبه انتگرال معين|Tripleint(f(x,y,z),x=a..b,y=c..d,z=k..h); |
|سه گانه | |
مثال:
> f:=(x,y,z)->x*y*z+(4*x*y)/z;
> Tripleint(f(x,y,z),x=0..1,y=0..1,z=0..1);
[pic]
> value(%);
[pic]
محاسبه انتگرال نامعين تابع فوق نيز به صورت زير است .
> Tripleint(f(x,y,z),x,y,z):
> value(%);
[pic]
تذكر: براي محاسبه انتگرال دو گانه يا سه گانه به صورت تو درتو ( مثال زير ) نيز ميتوان عمل كرد.
مثال:
> int(int(f(x,y),x),y);
كه البته بهتر است به صورت زير عمل شود:
> R1:=int(f(x,y),x);
> int(R1,y);
|روش تغيير متغير در حل انتگرال |t1:=int(f(x),x); |
| |changevar(g(x)=u,t1,u); |
تذكر : بسيار اتفاق مي افتد كه نرم افزار با دستور انتگرال گيري خود قادر به محاسبه صريح يك انتگرال نيست ، در اين مواقع است كه كاربر با بكاربردن روشهاي مختلف انتگرال گيري مي تواند نرم افزار را به محاسبه انتگرال مجبور سازد .
مثال: دستور انتگرال گيري نرم افزار قادر به محاسبه انتگرال نامعين تابع f كه به صورت زير تعريف ميگردد، نيست .
> f:=x->(cos(x)+1)^3*sin(x)^x;
[pic]
> int(f(x),x);
[pic]
لذا با استفاده از روش تغيير متغير و با در نظر گرفتن u = cos(x)+1 به صورت زير انتگرال را حل مي كنيم :
> t1:=Int(f(x),x):
> changevar(cos(x)+1=u,t1,u);
[pic]
> value(%);
[pic][pic]
حال با استفاده از دستور subs مقدار u = cos(x)+1 را در عبارت فوق جاگذاري كرده ، سپس آن را ساده ميكنيم :
> subs(u=cos(x)+1,%):
> simplify(%);
[pic]
كه عبارت اخير جواب انتگرال f(x) است .
|روش جزبه جز در حل انتگرال |T1:=int(f(x),x); |
| |t3:=intparts(T1,u); |
توجه: به عنوان كاربردهايي از انتگرال با دستورات انتگرال گيري فوق به راحتي مي توان ناحيه محصور بين دو منحني حجم حاصل از دوران يك منحني حول محور xها يا y ها و طول يك منحني را بدست آورد.
حل عددي انتگرال :
|روش ذوزنقه در حل انتگرال معين |trapezoid(f(x),x=a..b,n); |
مثال:
> f:=x->exp(x^3)+2*x:
> with(student):
> trapezoid(f(x),x=0..1);
[pic]
> evalf(%);
[pic]
|روش سيمپسون |Simpson(f(x),x=a..b,n); |
مثال :
> simpson(f(x),x=0..1);
[pic]
> evalf(%);
[pic]
تذكر: n تعداد زير فاصله در بازه [a,b]است كه واضح است هر چه اين تعداد بيشتر باشد مقدارانتگرالگيري دقيق تر است. و در صورت عدم درج n نرم افزار بطور پيش فرض چهار زير فاصله را در نظر مي گيرد .
> simpson(f(x),x=0..1,1000);
[pic]
> evalf(%);
[pic]
دنباله ها و سريها:
|دنباله [pic] |seq(an,n=1..m); |
مثال:
> seq(1/(n^2),n=1..10);
[pic]
تذكر : با استفاده از دستور pointplot مي توان دنباله ها را رسم نمود ، كه جهت توضيح بيشتر مي توانيد به قسمت رسم نمودار مراجعه نمائيد .
مثال:
> with(plots);
> pointplot({seq([n,1/(n^2)],n=1..10)});
[pic]
تذكر: براي تعيين همگرايي و يا واگرايي يك دنباله از دستور limitو مشابه آنچه در بخش توابع بحث شد مي توان استفاده نمود.
مثال:
> limit(1/(n^2),n=infinity);
|محاسبه مجموع [pic] |Sum(an , n=0..N); |
مثال:
> Sum(1/n,n=1..100);
[pic]
> evalf(%);
[pic]
مثال:
> Sum(1/(n^2),n=1..infinity);
[pic]
> value(%);
[pic]
تذكر2: هر يك از آزمونهاي همگرايي را به راحتي مي توان درباره يك سري دستورات mapleبكار برد.
مثال: آزمون دالامبر براي تعيين همگرايي سري[pic]
> a:=n->(-1)^n*n^n/n!:
> limit(abs(a(n+1)/a(n)),n=infinity);
[pic]
> evalf(%);
[pic]
كه چون مقدار حد از يك بيشتر است پس سري واگراست .
آزمون همگرايي انتگرالي را نيز با استفاده از همين دستورات ابتدايي maple مي توان بكاربست .
|محاسبه حاصلضرب[pic] |product(ak,k=0..n); |
مثال:
> product(k^2,k=1..5);
[pic]
|محاسبه سري تواني تابع f(x)حول نقطه x=aبا nجمله |Series(f(x),x=a,n); |
مثال:
> f:=x->sin(x)/x;
[pic]
> p:=series(f(x),x=0,10);
[pic]
تذكر: بعلت وجود جمله O(xn)در خروجي دستور فوق نمي توان به سري مقدار دهي يا آن را رسم كرد لذا با دستورconvertآن را حذف كرده و سري تواني f(x)را تا nجمله به عنوان تقريبي از f(x)به صورت چند جمله اي محاسبه مي كنيم.
مثال:
> convert(p,polynom);
[pic]
|سري تيلرf(x) حول نقطه x=aبا در نظر گرفتن nجمله |taylor(f(x),x=a,n); |
مثال:
> f:=x->x*sin(x)/(x+2);
[pic]
> taylor(f(x),x=1,5);
[pic]
همانند تذكر فوق در اينجا براي دستيابي به چند جمله اي تقريبي سري تيلر با خطاي برش nاز دستور convertاستفاده مي كنيم.
> P:=convert(%,polynom);
براي مشاهده نمودار f(x)و تقريب آن كه از سري تيلر حاصل گر ديده است دستور زير را اجرا كنيد.
> plot({P,f(x)},x=-1.6..1.6);
[pic]
در دستور فوق با قراردادن a=0سري مك لورن حاصل ميگر دد.
> taylor(f(x),x=0,5);
[pic]
|بسط تيلر تابع دو متغيره تا توانهاي كمتر از n |mtaylor(f(x,y),[x,y],n,[a,b]); |
|حول نقطه (a,b) | |
تذكر: قبل از اجرا دستور فوق تابع كتابخانه اي mtaylorبايد فراخواني شود.
مثال:
> f:=(x,y)->sin(x^2+y^2);
> readlib(mtaylor);
> mtaylor(f(x,y),[x,y],10);
[pic]
گراديان و مشتق سوئي
|گراديان f(x,y,z) |grad(f(x,y,z),[x,y,z]); |
تذكر: براي اجرا دستور gradلازم است بسته linalgبارسازي شود.
مثال:
> with(linalg):
grad(x^2*y-3*x*z^2+x*y*z,[x,y,z]);
[pic]
با دستور زير مي توان تابع گراديان را به صورت دوبعدي يا سه بعدي رسم كرد.
> gradplot(f(x,y),x=a..b,y=c..d,arrows=SLIM);
> gradplot3d(f(x,y,z),x=a..b,y=c..d,z=k..h);
مي دانيم كه مقدار مشتق سوئي fدر جهت بردار يكه u عبارت است از ضرب نقطه اي [pic] در بردار يكه u يعني [pic] پس
|مشتق سوئي در جهتu |dotprod(grad(f(x,y,z),[x,y,z]),u); |
مثال:
>f:=(x,y,z)->x^2+y^2+z^2;
> with(linalg);
> v:=[3,1,7];
> u:=normalize(v);
> grd:=grad(f(x,y,z),[x,y,z]);
[pic]
> dotprod(grd,u);
[pic]
با استفاده از دستورات مشتق جزئي و... كه تاكنون آموخته ايم به راحتي مي توان معادله صفحه مماس بريك منحني در نقطه (x,y,z) و معادله خط قائم را حساب و رسم كر د.
|ديوژانس تابع پتانسيلf |diverge(f,[x,y,z]); |
مثال:
> with(linalg);
> f:=[x^2,y^2,z^2];
> diverge(f,[x,y,z]);
[pic]
|محاسبه كرل تابع پتانسيل f |Curl(f,[x,y,z]); |
جبر خطي
تذكر : قبل از اجراء دستورات جبر خطي لازم است تا بسته LinearAlgebra با دستور with(linalg); بارسازي گردد .دستورات پيشرفته تر جبر خطي را مي توان در اين بسته مشاهده نمود و مي توان از Help نرم افزار نيز كمك گرفت .
> with(linalg);
[pic][pic][pic]
تعاريف بردار ها و آرايه :
|آرايه n عضوي |array(1..n,[x1,x2,...,xn]); |
مثال :
> array(1..3,[6,5,9]);
[pic]
|بردار n عضوي |vector([x1,x2,...,xn]); |
مثال :
> vector([3,5,7]);
[pic]
مثال : برداري با چهار مؤلفه كه همگي عدد 3 باشد .
> vector(4,3);
[pic]
|بردار تصادفي n عضوي |randvector(n); |
مثال :
> randvector(4);
[pic]
تعاريف ماتريس
|ماتريسm × n |matrix(n,m,[a11,...a1m,a21,...anm]); |
| |يـا |
| |matrix([[a11,...a1m],[a21,...a2m],...,[an1,...anm]]); |
مثال:
> matrix(2,3,[1,2,3,4,5,6]);
[pic]
> matrix([[1,2,3],[4,5,6]]);
[pic]
|ماتريس m×nاي كه تمام درايه هايش عنصر pاست |matrix(n,m,p); |
مثال :
> matrix(4,4,.02);
[pic]
|ماتريس تصادفي m×n |randmatrix(n,m); |
مثال:
> randmatrix(3,2);
[pic]
|ماتريس تصادفي بالا مثلثي |randmatrix(n,m,unimodular); |
مثال :
> randmatrix(4,4,unimodular);
[pic]
|ماتريسي كه درايه هاي آن ازتابع f(x,y) بدست مي آيد |matrix(n,m,f); |
مثال:
> f:=(i,j)->1/(i*j);
[pic]
> matrix(4,4,f);
[pic]
|ماتريسي كه درايه هاي آن مشتق درايه هاي Aاست |map(diff,A,x); |
مثال :
> f:= (i,j) -> x^(i+j-1):
A:=Matrix(2,f);
[pic]
> map(diff,A,x);
[pic]
|ماتريسي كه درايه هاي آن انتگرال درآيه هاي A نسبت به xاست|map(int,A,x); |
مثال :
> map(int,A,x);
[pic]
عمليات سطري و ستوني:
|دسترسي به سطر iام A |row(A,i) |
مثال : دسترسي به سطر دوم ماتريس A
> A:=matrix(3,3,[1,2,3,4,5,6,7,8,9]);
[pic]
> row(A,2);
[pic]
|دسترسي به ستون jام A |col(A,j); |
مثال : دسترسي به ستون سوم ماتريس A
> col(A,3);
[pic]
|سطرi ام تا kام A |row(A,i..k); |
مثال :
> row(A,1..2);
[pic]
|حذف سطرr ام تاsام A |delrows(A,r..s); |
مثال :
> delrows(A,2..3);
[pic]
|حذف ستونr ام تاs امA |delcols(A,r..s); |
مثال :
> delcols(A,1..2);
[pic]
|جابجايي سطرi,k |swaprow(A,i,k); |
مثال :
> swaprow(A,2,3);
[pic]
|جابجايي ستون i,t |swapcol(A,i,t); |
مثال :
> swapcol(A,1,2);
[pic]
|ضرب سطرi ام در اسكالرa |mulrow(A,i,a); |
مثال :
> mulrow(A,3,5.5);
[pic]
|ضرب ستونj ام در اسكالر b |mulcol(A,i,a) |
مثال :
> mulcol(A,2,3.01);
[pic]
|سطرjام به اضافهa برابرسطرi ام |addrow(A,i,j,a); |
مثال :
> addrow(A,1,2,a);
[pic]
|ستونj ام به اضافهa برابر ستونi ام |addcol(A,i,j,a); |
مثال :
> addcol(A,2,3,x);
[pic]
|ضرب اسكالرa در ماتريسA |scalarmul(A,a); |
مثال :
> scalarmul(A,2.02);
[pic]
برخي از اعما ل ماتريسها
تذكر : هنگام كار با ماتريسها و بردار ها ، براي ارزيابي يك ماتريس يا بردار كه محاسباتي بر روي آن انجام شده از دستور evalm استفاده مي كنيم .
|محاسبه جمع دو ماتريس A , B |evalm(A+B); |
| |matadd(A,B); |
مثال : ابتدا دو ماتريس A , B را معرفي و اين دستور و دستوراتي كه در ذيل خواهد آمد بر اين دو ماتريس اعمال
مي كنيم .
> A:=matrix(3,3,[1,2,3,4,5,6,7,8,9]);
[pic]
> B:=matrix(3,3,[1,0,2,0,3,6,5,8,1]);
[pic]
> evalm(A+B);
[pic]
براي محاسبه جمع دو ماتريس از دستور matadd نيز ميتوان استفاده نمود .
> matadd(A,B);
[pic]
|محاسبه تفريق دو ماتريس A , B |evalm(A-B); |
|محاسبه ضرب دو ماتريس A , B |evalm(A&*B); |
| |multiply(A,B); |
مثال :
> evalm(A&*B);
[pic]
براي محاسبه ضرب دو ماتريس از دستور multiply نيز ميتوان استفاده نمود .
> multiply(A,B);
[pic]
|محاسبه ترانهاده ماتريس A |transpose(A); |
مثال :
> transpose(A);
[pic]
|محاسبه معكوس ماتريس A |inverse(A); |
مثال :
> inverse(B);
[pic]
تذكر : اگر ماتريس A وارون پذير نباشد هنگام اجراء دستور inverse پيغام خطاي زير ظاهر مي گردد.
> inverse(A);
Error, (in inverse) singular matrix
|اضافه كردن ماتريس يا بردار B به ماتريس يا بردار A |augment(A,B); |
مثال :
> augment(A,B);
[pic]
|محاسبه دترمينان A |det(A) |
مثال :
> A:=matrix(3,3,[1,2,3,3,5,6,7,8,9]);
[pic]
> det(A);
[pic]
|محاسبه اثر A |trace(A) |
مثال :
> trace(A);
[pic]
|محاسبه ماتريس ويژه A |Charmat(A,x) |
مثال :
> charmat(A,x);
[pic]
|محاسبه چند جمله اي ويژه ماتريس A |charpoly(A,x) |
مثال :
> charpoly(A,x);
[pic]
|محاسبه مقادير ويژه ماتريس A |eigenvalues(A); |
مثال :
> eigenvalues(A);
[pic]
|محاسبه بردار هاي ويژه ماتريس A |eigenvectors(A); |
مثال :
> eigenvectors(A);
[pic]
> evalf(%);
[pic]
|مثلثي كردن ماتريس A با روند حذفي گاوس |gauselim(A); |
مثال :
> gausselim(A);
[pic]
|نرم ماتريس A |norm(A) |
مثال :
> norm(A);
[pic]
براي ماتريسها و بردار ها مي توان نرم هاي مختلف را محاسبه نمود .البته نرم افزار بطور پيش فرض نرم بينهايت را محاسبه مي كند .
> norm(A,infinity);
[pic]
> norm(A,2);
[pic]
> norm(A,frobenius);
[pic]
تجزيه ماتريسها
|تجزيه LU |Ludecomp(A,L=l,U=u); |
مثال : تجزيه ماتريس A به يك ماتريس پايين مثلثي L و بالا مثلثي U بطوريكه A = L(U
> A:=matrix(3,3,[1,0,2,0,3,6,5,8,1]);
[pic]
> LUdecomp(A,L=l,U=u):
> L:=evalm(l);
U:=evalm(u);
[pic]
[pic]
> evalm(L&*U);
[pic]
|تجزيه QR |Qrdecomp(A); |
مثال : تجزيه ماتريس A به صورت A = Q ( R
> R:=QRdecomp(A,Q=q);
[pic]
> Q:=evalm(q);
[pic]
> evalm(Q&*R);
[pic]
|تجزيه چولسكي |Cholesky(A); |
مثال : تجزيه ماتريس متقارن A به صورت A = M ( Mt كه در آن M ماتريسي پائين مثلثي مي باشد .
> A := matrix([[1, 2, 3], [2, 5, 7], [3, 7, 26]]);
[pic]
> M:=cholesky(A);
[pic]
> tM:=transpose(M);
[pic]
> evalm(M&*tM);
[pic]
|تجزيه اسميت |ismith(A,u,v); |
| |eval(u); |
| |eval(v); |
مثال :
> A:=matrix(3,3,[1,2,3,3,5,6,7,8,9]);
[pic]
> ismith(A,u,v);
[pic]
> eval(u);
[pic]
> eval(v);
[pic]
|تجزيه جردن A |jordan(A) |
كه ماتريسي قطري است وJ=p-1Ap و ماتريس p را نيز مي توان برآورد نمود .
مثال :
> A := matrix(2,2,[1,0,3,2]);
[pic]
> J := jordan(A, 'P');
[pic]
> print(P);
[pic]
> evalm(P^(-1)&*A&*P);
[pic]
حل دستگاه معادلات خطي
1- استفاده از دستور داخلي Maple در حل دستگاه معادلات خطي
|حل دستگاه Ax = b |linsolve(A,b); |
مثال :
> A:=matrix(3,3,[1,2,3,3,5,6,7,8,9]);
b:=vector([3,5,6]);
[pic]
[pic]
> x:=linsolve(A,b);
[pic]
2- استفاده از روند حذفي گاوس
در استفاده از روند حذفي گاوس ، ابتدا با دستورaugment ماتريس افزوده را تشكيل وبا دستور gausselim ماتريس افزوده را مثلثي مي كنيم ، سپس با دستور backsub اين دستگاه را روبه بالا حل كرده جواب دستگاه معادلات بدست مي آيد .
مثال : دستگاه Ax = b كه در مثال فوق داده شد را مجدداَ با استفاده از روند حذفي گاوس حل مي كنيم .
> B:=augment(A,b);
[pic]
> gausselim(B);
[pic]
> x:=backsub(%);
[pic]
3- استفاده از تجزيه LU
ابتدا ماتريس A را به دو ماتريس بالا و پائين مثلثي U و L تجزيه مي كنيم . داريم
A = L(U
لذا
[pic]
حال اگر قرار دهيم [pic] داريم [pic] لذا كافيست اين دستگاه را رو به پائين جاگذاري كرده تا بردار c بدست آيد و پس از آن دستگاه [pic] را رو به بالا جايگذاري ، تا بردار x بدست آيد .
مثال : دستگاه Ax = b را از مثال فوق در نظر مي گيريم .
> LUdecomp(A,L=l,U=u):
> L:=evalm(l);
U:=evalm(u);
[pic]
[pic]
> c:=forwardsub(L,b);
[pic]
> x:=backsub(U,c);
[pic]
4- استفاده از روش كمترين مربعات
|روش كمترين مربعات leastsquar |Leastsqrs(A,b) |
مثال : دستگاه معادلات خطي مثال فوق را در نظر ميگيريم ، آن را با روش كمترين مربعات حل مي كنيم .
> x:=leastsqrs(A,b);
[pic]
تعاريف ماتريسهاي خاص
|ماتريس قطري n×n با قطر a1,...,an |diag(a1,...,an) |
مثال :
> diag(2,3,6);
[pic]
مثال :
> A:=randmatrix(3,3):
B:=diag(2,3,6):
> diag(A,B);
[pic]
|ماتريس قطري n×n كه قطر آن عنصرa است |band([a],n); |
مثال :
> band([2.01],3);
[pic]
|ماتريس سه قطريn×n |band([a,b,c],n); |
مثال :
> band([a,b,c],4);
[pic]
|ماتريس هيلبرت مرتبه n |hilbert(n); |
مثال:
> hilbert(3);
[pic]
مثال:
> hilbert(3,x+3);
[pic]
|ماتريس واندر موند |vandermonde([x,y,z,...]); |
مثال:
> vandermonde([x,y,z]);
[pic]
|ماتريس هرميت |hermit(A,x); |
|ژاكوبين بردار v=(x1,...xn) |jacobian(v,[x1 ,..., xn]); |
مثال :
> v:= vector( [x^2, x*y, x*z] );
[pic]
> jacobian(v,[x,y,z]);
[pic]
|ماتريس مشابه |issimilar(A,B,p); |
بررسي تشابه ماتريسهاي A ,B و برآورد ماتريس وارون پذير p بطوريكه A=p-1Bp
مثال :
ماتريسهاي A و B را به صورت زير تعريف مي كنيم
> A := matrix(3,3,[1,2,3,4,5,6,7,8,9]);
[pic]
> B := matrix([[0, 0, 0], [0, 15/2+3/2*33^(1/2), 0], [0, 0, 15/2-3/2*33^(1/2)]]);
[pic]
بررسي مي كنيم كه آيا اين دو ماتريس متاشبه اند يا خير
> issimilar(A,B,P);
[pic]
ماتريس p را برآورد مي كنيم .
> print(P);
[pic]
حاصلضرب p-1( B ( p را محاسبه و ملاحظه مي گردد كه برابر ماتريس A است .
> map(normal,evalm(P^(-1) &* B &* P));
[pic]
|ماتريس فيبو ناچي مرتبه n |fibonacci(n); |
مثال:
> fibonacci(3);
[pic]
|رونسكين |A:=vector([f1(x),...,fn(x)]); |
| |wronskian(A,x); |
| |det(%); |
مثال :
> A := vector([exp(x),cosh(x),sinh(x)]);
[pic]
> Wr := wronskian(A,x);
[pic]
> det(Wr);
|تحقيق متعامد بودن ماتريس A |orthog(A); |
مثال : تحقيق اينكه آيا ماتريس Aمتعامد است يا خير؟
> A := matrix(3,3,[1,2,3,4,5,6,7,8,9]);
[pic]
> orthog(A);
[pic]
|هسته A |kernel(A); |
مثال :
> A := matrix(3,3,[1,2,3,4,5,6,7,8,9]);
[pic]
> kernel(A);
[pic]
|ماتريس فروبينيوسA |frobenius(A); |
| |frobenius(A,p); |
| |print(p); |
مثال :
> A := matrix(3,3,[1,2,3,4,5,6,7,8,9]);
[pic]
> frobenius(A,p);
[pic]
> print(p);
[pic]
|ماتريس تاپليس |toeplitz([x1,...xn]); |
مثال:
> toeplitz([x,y,z]);
[pic]
|ماتريس الحاقيA |adj(A); |
مثال :
> A := matrix([[1, 2, 3], [2, 5, 7], [3, 7, 26]]);
[pic]
> adj(A);
[pic]
|ماتريس مينور |minor(A,i,j); |
|ماتريس حاصل از حذف سطر i وستون j | |
مثال :
> A := matrix([[1, 2, 3], [2, 5, 7], [3, 7, 26]]);
[pic]
> minor(A,2,3);
[pic]
رسم منحني ها-توابع واشكال هندسي
هنگام اجرا mapleدستورات مقدمــاتي ترسيمي بطور خودكار بار سازي مي شودوليكن براي اجرا دستورات ترسيمي پيشرفته تر بايد بسته plotsبار سازي گردد. دستورات ترسيمي را در اين بسته مي توانيد مشاهده نمائيد .
> with(plots);
[pic][pic]
|رسم تابعf(x)در فاصله[a,b]در دستگاه دكارتي دو بعدي |plot(f(x),x=a..b); |
| | |
مثال:
> plot(exp(x),x=-1..2);
[pic]
|رسم تابع f(x)در دستگاه دكارتي سه بعدي |plot3d(f(x,y),x=a..b,y=c..d); |
مثال:
> f:=(x,y)->x^2-y^2;
> plot3d(f(x,y),x=-2..2,y=-2..2);
[pic]
|رسم توابع f,gبطور توام |plot({f(x),g(x)},x=a..b); |
مثال:
> f:=sin(x);
g:=cos(x);
> plot({f,g},x=-2*Pi..2*Pi);
[pic]
|رسم نقاط (a,b),(c,d)و.. |pointplot({[a,b],[c,d],...}); |
مثال:
> pointplot([[1,1],[2,3],[4,3]]);
[pic]
|رسم خطوط واصل بين نقاط(a,b),(c,d) |plot([a,b],[c,d]); |
مثال:
> plot({[1,2],[2,4]});
[pic]
مثال زير نشان مي دهد كه چگونه مي توان خط واصل بين چند خط را رسم نمود .
> plot([[2,2],[2,4],[4,4],[4,3],[3,3],[3,3.5],[3.5,3.5]]);
[pic]
|رسم توابع ضمني |implicitplot({f(x,y),g(x)},x=a..b,y=c..d); |
مثال:
> implicitplot({x^2+y^2=1,y=exp(x)},x=-Pi..Pi,y=-Pi..Pi);
[pic]
|رسم منحني هاي پارامتري در مختصات قطبي |polarplot([x(t),y(t)],t=a..b); |
مثال:
رسم منحني [pic] در بازه [pic]
> polarplot([cos(8*t),sin(8*t)],t=-Pi..Pi);
[pic]
|رسم منحني فضائي |Spacecurre([x(t),y(t),z(t)],t=a..b); |
|f(t)=(x(t),y(t),z(t)) | |
|در فاصله aتا b | |
مثال:
رسم منحني فضائي f(t)=(tsin(t),tcos(t),t) درفاصله[pic]
> spacecurve([t*sin(t),t*cos(t),t],t=Pi..6*Pi);
[pic]
|رسمf(t)درمختصات استوانه اي در |cylinderplot(f(t),theta=c..d,z=a..b); |
|فاصله a dsolve( q*p);
[pic]
رسم جواب معادلات ديفرانسيل:
براي رسم جواب عمومي معادلات به روشهاي زير مي توان عمل نمود
الف – استفاده از منحني هاي تراز
بطور مثال معادله ديفرانسيل زير را در نظر بگيريد
> [pic]
حال اين معادله را با دستور زير حل مي كنيم
> q:=dsolve(p);
[pic]
كه q جواب عمومي معادله فوق است . براي رسم اين خانواده از جوابها لازم است q را بر حسب ثابت اختياري _C1 حل نمائيم
> solve(q,_C1);
[pic]
در مقدار فوق y(x) را با y تعويض مي نمائيم
> c:=subs(y(x)=y,%);
[pic]
حال منحني هاي تراز معادله c كه بالا بدست آمده رسم مي كنيم
> with(plots):
> contourplot(c,x=-3..3,y=-3..7);
[pic]
اين نمودار خانواده جوابهاي معادله ديفرانسيل مي باشد .
ب - رسم جواب معادله براي چند ثابت اختياري .
معادله ديفرانسيل فوق را در نظر مي گيريم
> p:=D(y)(x)=y(x)+x^2;
> dsolve(p);
[pic]
با دستور زير به سمت راست جواب دسترسي پيدا كرده ، آن را m مي ناميم
> m:=rhs(%);
[pic]
حال بجاي ثابت اختياري _C1 چند مقدار مختلف قرار مي دهيم
> p1:=subs(_C1=1,m);
p2:=subs(_C1=0,m);
p3:=subs(_C1=-2,m);
p4:=subs(_C1=4,m);
حال p1, p2 , p3 , p4 را رسم مي كنيم .
> plot({p1,p2,p3,p4},x=-3..3);
[pic]
ج - استفاده از دستور Deplot
جهت استفاده از اين دستور بايد شرط اوليه را اعمال كرد .
بطور مثال معادله فوق را در نظر بگيريد .
> p:=D(y)(x)=y(x)+x^2;
> dsolve(p);
[pic]
پس از بارسازي بسته Detools دستور زير را اجراء مي كنيم .
> DEplot(p,y(x),x=-3..3,[[y(0)=1]]);
[pic]
حل معادلات مرتبه دوم و بالاتر نيز با دستورات فوق امكان پذير است .
مثال : معادله ديفرانسيل مرتبه دوم p را به صورت [pic] زير در نظر بگيريد .
> p:=D(D(y))(x)+3*D(y)(x)=y(x);
[pic]
با همان دستور dsolve كه در بالا ديديم ، اين معادله مرتبه دو را حل مي كنيم
> dsolve(p);
[pic]
كه _C1 , _C2 ثابتهاي اختياري مي باشد .
مثال : معادله فوق را با شرايط اوليه y(0) = 0 , Dy(0) = 1 حل مي كنيم
> b:=y(0)=0,D(y)(0)=1;
> dsolve({p,b});
[pic]
معادلات مرتبه بالاتر را نيز مي توان با دستورات فوق حل نمود
حل دستگاه معادلات ديفرانسيل
|حل معادلات ديفرانسيل p1 تا pn نسبت به |dsolve({p1,...,pn},{y1(x),...,yn}) |
|y1,...,yn | |
مثال : دستگاه معادلات ديفرانسيل [pic] را در نظر بگيريد
> [pic]
با دستور زير اين دستگاه حل مي شود .
> dsolve({p1,p2},{y1(x),y2(x)});
[pic][pic]
دستگاه فوق را با شرايط اوليه [pic] به صورت زير حل مي كنيم
> dsolve({p1,p2,y1(0)=1,y2(0)=1,D(y2)(0)=0});
[pic]
كه با دستور Deplot نيز دستگاه معادلات را مي توان به صورت زير رسم نمود
> DEplot([p1,p2],[y1(x),y2(x)],x=-8..5,[[y1(0)=1,y2(0)=1,D(y2)(0)=0],[y1(0)=2,y2(0)=-1,D(y2)(0)=0]]);
[pic]
|حل معادله ديفرانسيل p با استفاده از سريهاي تواني |dsolve(p,y(x),type=series); |
تذكر : برخي از معادلات ديفرانسيل ، بخصوص معادلات غير خطي را كه با دستورات معمولي قابل حل نيستند ، با استفاده از سريهاي تواني مي توان حل نمود
مثال : معادله ديفرانسيل غير خطي [pic] را در نظر مي گيريم :
> p:=D(y)(x)+x*(D(y)(x))^3=y(x)*exp(x);
[pic]
معادله غير خطي فوق را با دستور زير حل مي كنيم
> dsolve(p,y(x),type=series);
[pic][pic]
تبديلات لاپلاس
|تبديل لاپلاس g(t) بر حسب s |laplace(g(t),t,s); |
تذكر : قبل از اجراء دستور فوق لازم است بسته inttrans بار سازي گردد . در اين بسته بسياري از تبديلات انتگرالي نظير تبديل فوريه ، تبديل هيلبرت و تبديل ميلن وجود دارد ، كه براي حل معادلات مي توان از اين تبديلات استفاده نمود
مثال : تبديل لاپلاس تابع g با دستور زير را محاسبه مي كنيم
> g:=exp(t)+4*t*sin(5*t);
[pic]
> laplace(g,t,s);
[pic]
كه با دستور زير شكل ساده شده و نرمال آن را مي نويسيم
> F:=normal(%);
[pic]
|تبديل معكوس لاپلاس F(s) |invlaplace(F(s),s,t); |
مثال : از تابع F كه در مثال فوق تبديل لاپلاس گرفتيم ، تبديل معكوس ميگيريم .
> invlaplace(F,s,t);
[pic]
ملاحظه مي گردد كه جواب همان تابع g تعريف شده در مثال فوق است .
| |Dsolve({p,b},y(x),method=laplace); |
مثال : معادله ديفرانسيل p را به صورت زير تعريف مي كنيم
> p:= diff(y(t),t$2) + 5*diff(y(t),t) + 6*y(t) = 0;
[pic]
اين معادله را به كمك تبديلات لاپلاس و با شرايط اوليه b به صورت زير حل مي كنيم :
> b:=y(0)=0, D(y)(0)=1;
> dsolve({p, b}, y(t),method=laplace);
[pic]
|حل عددي معادله ديفرانسيل p با شرايط اوليه b |dsolve({p,b},y(x),numeric); |
مثال :معادله ديفرانسيل مرتبه سه p را به صورت زير در نظر مي گيريم
> p:= diff(y(t),t$3) - 2*diff(y(t),t$2) + 2*y(t);
[pic]
شرايط اوليه b را به صورت زير تعريف مي كنيم .
> b:= y(0)=1, D(y)(0)=1, (D@@2)(y)(0)=1 ;
حال معادله p را با شرايط اوليه b به صورت عددي حل مي كنيم .
> g := dsolve({p,b}, y(t), type=numeric);
[pic]
با توجه به g تعريف شده مي توان مقدار تقريبي را براي tهاي مختلف بدست آورد
> g(.2);
[pic]
> g(2.2);
[pic]
حل معادلات ديفرانسيل با مشتقات جزئي
|حل معادله ديفرانسيل با مشتقات جزئي p |Pdsolve(p) |
تذكر : در هنگام كار با معادلات ديفرانسيل با مشتقات جزئي ، لازم است تا بسته pdtools بارسازي شود . در اين بسته دستورات پيشرفته اي در باره حل معادلات با مشتقات جزئي موجود است كه در كارهاي محاسباتي مي توان از آنها استفاده نمود .
مثال :معادله ديفرانسيل با مشتقات جزئي p را به صورت زير تعريف مي كنيم .
> p:= x*diff(u(x,y),y)-diff(u(x,y),x)=u(x,y)^2;
[pic]
و با دستور pdsolve اين معادله را به صورت زير حل مي كنيم .
> pdsolve(p);
[pic]
دستورات مقدماتي برنامه نويسي
الف - دستورات حلقه for - do - end do
|تكرار حلقه براي محاسبه pi وقتي I از r تا n تغيير مي كند |for i from r to n do |
| |p[i]; |
| |od; |
تذكر : براي اعلام اتمام حلقه از دستور od استفاده مي گردد ، ولي در ويرايش maple6 از دستور end do نيز مي توان استفاده نمود .
مثال : چاپ اعداد زوج تا 100
> p[0]:=0;
for i from 1 to 50 do
p[i]:=p[i-1]+2;
end do;
ب- دستورات حلقه for - by -do-end do
|تكرار حلقه براي محاسبه pi وقتي i از r تا n با طول |for i from r by s to n do |
|گام s تغيير مي كند |p[i]; |
| |od; |
مثال : چاپ اعداد زوج از صفر تا 10
> for i from 0 by 2 to 10 do
print(i) end do;
ج - دستورات حلقه for-while-do-end do
|تكرار حلقه براي محاسبه pi وقتي i از r شروع و تا وقتي |for i from r while Mi do |
|كه شرط Mi برقرار باشد حلقه را ادامه مي دهد . |p[i]; |
| |od; |
مثال: محاسبه جمع اعدا د صحيح از صفر تا 100
> t := 0:
for i from 1 while i A:=matrix(5,5):
> for i to 5 do
for j to 5 do
if iint(%?,%?=%?,...%?)
درج مي گردد و بجاي ؟% عبارت مطلوب را درج مي كنيم .
اگر اين دستور بازهم نامفهوم باشد از جعبه ابزاردكمه x را انتخاب ، دستور فوق به صورت [pic]> تبديل مي شود كه حالابه جاي ؟به ترتيب 3و 5 وx2 و xرادرج و Enterمي زنيم.
گزينه matrix paletteنيز براي درج ماتريسها و بردار مناسب است و همانند توضيحات فوق عمل شود.
|ميزان بزرگ نمائي صفحات |Zoom factor |
|مشخص نمودن متن يا دستوري دلخواه با نام اختصاري جهت دسترسي سريع |bookmarks |
|در صفحه كاري | |
توضيح : با انتخاب متن يا دستور مورد نظر اين گزينه را انتخاب و به متن انتخاب شده حرف يا كلمه اختصاري نسبت مي دهيم . پس از اين اين نام اختصاري در رديف bookmarks قرار گرفته و با انتخاب آن علامت چشمك زن به محل اين متن در صفحه كاري خواهد رفت .
|پنهان كردن وروديها ، خروجي ها و يا نمودار ها در صفحه كاري|Hied content |
گزينه هاي منوي Insert
|تبديل محيط كاري به متن |Text |
|تبديل محيط كاري به صورت درج متن رياضي |Standard Math |
|تبديل محيط كاري به صورت وردي دستورات maple |Maple Input |
|تبديل محيط كاري به صورت ورودي و به شكل عبارات استاندارد |Standard Math input |
|رياضي | |
توضيح : در حالت استاندارد رياضي علامت ؟ ظاهر مي گردد ، در اينصورت مي توان متن رياضي را درج و با فشار دكمه enter شكل رياضي وار آن درج مي گردد .
بعنوان مثال فرض كنيم بخواهيم عبارت [pic] درج گردد ( در حالت متني يا در حالت ورودي ) با انتخاب گزينه فوق هنگامي كه علامت ؟ ظاهر شد تايپ مي كنيم x^3+3*x-exp(x) و با فشار دادن enter همان شكل رياضي وار ظاهر خواهد شد .
|ايجاد گروه اجرايي جديد قبل و بعد از علامت چشمك زن( اضافه |Execution Grop(Befor,After) |
|كردن يك([ A:=randmatrix(5,5);
[pic]
كه با كليك كردن روي دكمه سربخش مي توان آن را بست .
منوي spreadsheet
هر گاه از منوط insert گزينه را انتخاب كنيم صفحه اي نظير صفحه نرم افزار Excel ايجاد مي شود كه با گزينه هاي اين منو مي توان در آن صفحه عمليّات دلخواه را انجام داد .
منوي option
|جايگزيني خروجي جديد بجاي خروجي قبلي |raplace out put |
توضيح : اگر اين گزينه انتخاب گردد با اجرا مجدد يك دستور خروجي جديد جايگزين خروجي اول مي شود در غير اين صورت تما م خروجي ها نمايش داده مي شود.
|داده هاي ورودي به صورت زبانmapleنمايش داده مي شود(معمولي) |Input display(maple notation) |
|تنظيم نوع نمايش نمودارها ورويه ها |Plot display |
| تنظيم كيفيت چاپ |Print quality |
منوي Help
|وارد صفحه مقدمه mapleمي گردد. |Introdoction |
|نسبت به قسمتي كهselect(انتخاب) شده جستجو مي كندتا درhelp توضيحي براي آن |Help on... |
|بيابد. | |
تذكر : براي يافتن توضيحاتي مربوط به كلمه يا دستور انتخاب شده در help مي توان از كليد F1 نيز استفاده نمود
|توضيحاتي براي كساني كه اولين بار است واردmaple شده اند |New user ‘s tour |
|نمايش توضيحات هنگام استفاده از نمايش گر ماوس |Balloon Help |
توضيح : قابليت جالبي درhelp است كه با انتخاب آن پيكان موس در هر قسمتي كه قرار مي گيرد يك توضيح مختصر و مفيد از نحوه عمل آن را نشان مي دهد.
-----------------------
[1]- pakages
................
................
In order to avoid copyright disputes, this page is only a partial summary.
To fulfill the demand for quickly locating and searching documents.
It is intelligent file search solution for home and business.