معادله مرتبه 2 در متلب

melimo

عضو جدید
من یه معادله مرتبه 2 دارم به شکل زیر:
(1/2)^(p[SUB]rr[/SUB]+(1/r)p[SUB]r[/SUB]=(r^2+c^2​
میخوام p رو بدست بیارم.یه کد اینجوری نوشتم:

(' ','(p = dsolve('D2p+Dp/r=(r^2+c^2)^(1/2
ولی اون جوابی که باید بده رو نمیده .کدم اشتباهه؟ البته تا نصفه جوابی که میده با جوابی که دارم یکیه ولی بقیش نه
کسی میدونه اشکالم کجاست؟
 

amir ghasemiyan

مدیر بازنشسته
کاربر ممتاز
من یه معادله مرتبه 2 دارم به شکل زیر:
(1/2)^(p[SUB]rr[/SUB]+(1/r)p[SUB]r[/SUB]=(r^2+c^2​
میخوام p رو بدست بیارم.یه کد اینجوری نوشتم:

(' ','(p = dsolve('D2p+Dp/r=(r^2+c^2)^(1/2
ولی اون جوابی که باید بده رو نمیده .کدم اشتباهه؟ البته تا نصفه جوابی که میده با جوابی که دارم یکیه ولی بقیش نه
کسی میدونه اشکالم کجاست؟

جوابي كه شما دارين چيه؟ به نظر مياد جوابش منطقي باشه!

کد:
p = dsolve('D2p+Dp/r=(r^2+c^2)^(1/2)')

فقط ' ' آخرش اضافيه.

درضمن براي سوالتون تاپيك ايجاد نكنين لطفا
سوالات متلب رو اينجا ميتونين بپرسيد

[h=3]سئوالات و مشکلات در متلب (MATLAB)[/h]
 

melimo

عضو جدید

جوابي كه شما دارين چيه؟ به نظر مياد جوابش منطقي باشه!

کد:
p = dsolve('D2p+Dp/r=(r^2+c^2)^(1/2)')

فقط ' ' آخرش اضافيه.

درضمن براي سوالتون تاپيك ايجاد نكنين لطفا
سوالات متلب رو اينجا ميتونين بپرسيد

سئوالات و مشکلات در متلب (MATLAB)
توی ' ' r نوشتم که البته اونجا یادم رفت تایپ کنم.
یه جوابی به من میده که توش csng و این چیزاست و مثلا log(2 داره که توی جوابی که دارم نباید این چیزا باشه.
چشم ببخشید نمیدونستم باید کجا بنویسم .شرمنده
 

amir ghasemiyan

مدیر بازنشسته
کاربر ممتاز
توی ' ' r نوشتم که البته اونجا یادم رفت تایپ کنم.
یه جوابی به من میده که توش csng و این چیزاست و مثلا log(2 داره که توی جوابی که دارم نباید این چیزا باشه.
چشم ببخشید نمیدونستم باید کجا بنویسم .شرمنده

log كه شما ديدين درواقع ln هست.ln هم تو جوابتون نيست؟
اين چيه؟csng. همچين چيزي نداره جوابي كه به من ميده
 

melimo

عضو جدید

log كه شما ديدين درواقع ln هست.ln هم تو جوابتون نيست؟
اين چيه؟csng. همچين چيزي نداره جوابي كه به من ميده

توی شکل زیر نوشتم چه جوری میشه.
اگر نگاه کنید میبینید که p که شبیه k نیست h هم دو جمله ی اولش درسته ولی بقیش معلوم نیست چی به چیه


حالا اشکالش چیه؟math.jpg
 

meytim

متخصص محاسبات عددی و MATLAB
کاربر ممتاز
توی شکل زیر نوشتم چه جوری میشه.
اگر نگاه کنید میبینید که p که شبیه k نیست h هم دو جمله ی اولش درسته ولی بقیش معلوم نیست چی به چیه


حالا اشکالش چیه؟مشاهده پیوست 113451

شما یه معادله دیفرانسیل خطی رده 2 دارید، که هیچ شرطی نداره. بنابراین بی شمار جواب داره. بسته به سلیقه جوابش رو می شه جورهای متفاوتی نوشت. متلب نمی دونه سلیقه شما چیه تا به سلیقه شما نمایشش بده، بنابراین نمایشش با اونی که تو ذهن شماست فرق می کنه. من چک کردم؛ جوابی که متلب می ده قابل بیان به شکلی که شما نوشتید هست (البته شما دو تا جمله رو فراموش کردید بنویسید؛ همونایی که ضرایب ثابت درشون ضرب می شه).
 

amir ghasemiyan

مدیر بازنشسته
کاربر ممتاز
شما یه معادله دیفرانسیل خطی رده 2 دارید، که هیچ شرطی نداره. بنابراین بی شمار جواب داره. بسته به سلیقه جوابش رو می شه جورهای متفاوتی نوشت. متلب نمی دونه سلیقه شما چیه تا به سلیقه شما نمایشش بده، بنابراین نمایشش با اونی که تو ذهن شماست فرق می کنه. من چک کردم؛ جوابی که متلب می ده قابل بیان به شکلی که شما نوشتید هست (البته شما دو تا جمله رو فراموش کردید بنویسید؛ همونایی که ضرایب ثابت درشون ضرب می شه).

meytim جان من فرمول رو چك كردم. فرمول p و k رو. تقريبا با هم يكي هست. فقط p اين ترم رو اضافه داره :
کد:
-1/3c^3log(2c/r)
احتمالا دوستمون يجا اشتباه لپي كردن.
 

melimo

عضو جدید
شما یه معادله دیفرانسیل خطی رده 2 دارید، که هیچ شرطی نداره. بنابراین بی شمار جواب داره. بسته به سلیقه جوابش رو می شه جورهای متفاوتی نوشت. متلب نمی دونه سلیقه شما چیه تا به سلیقه شما نمایشش بده، بنابراین نمایشش با اونی که تو ذهن شماست فرق می کنه. من چک کردم؛ جوابی که متلب می ده قابل بیان به شکلی که شما نوشتید هست (البته شما دو تا جمله رو فراموش کردید بنویسید؛ همونایی که ضرایب ثابت درشون ضرب می شه).

بله درست میگید.من فکر میکردم درهرصورت باید همیشه یه جواب مشخص دربیاد.
حالا به غیر از simplify و pretty چه دستورای دیگه ای هم هست که جواب رو کمی ساده تر نشون بده؟
درضمن این جوابایی که نوشتم رو دقیقا از تو اجرای متلب کپی کردم یعنی فکر نمیکنم چیزی رو جا انداخته باشم.
 

meytim

متخصص محاسبات عددی و MATLAB
کاربر ممتاز

ممنون مهندس ولي اين دستور منسوخ شده. فكر كنم doc جايگزينش شده. من ورژن 2012a نصب كردم.
متلب من اين فرمان رو نداره. فكر كنم متلبم ناقصه. ميشه خودت بگي اين چيه؟

من R2012a از دو جا دانلود کردم؛ یکیش هرکاری کردم، نه repair شد، نه extract. یکی دیگش repair و extract شد. اما بعد از نصب بعضی وقتها کار می کنه، بعضی وقتها نه! در مورد محاسبات نمادین هم به نظر نسبت به قبل پسرفت داشته.
دستور mhelp somecommnad معادل help sym/somecommnad هستش. ظاهراً اون تابع علامت انگاری هم از جعبه ابزار نمادینش حذف شده. در راهنمای R2007b این اومده:

کد:
>> mhelp csgn
 
csgn - sign function for real and complex expressions
Calling Sequence
     csgn(x)
     csgn(1, x)
     csgn(0, x, y)

Parameters
     x - any algebraic expression
     y - any algebraic expression

Description
- The csgn function is used to determine in which half-plane ("left" or "right")
  the complex-valued expression or number x lies. It is defined by 
               /  1    if Re(x) > 0 or Re(x) = 0 and Im(x) > 0
    csgn(x) = <
               \ -1    if Re(x) < 0 or Re(x) = 0 and Im(x) < 0
- The value of csgn(0) is controlled by the environment variable _Envsignum0.
  The 3-argument calling sequence csgn(0, x, y) sets _Envsignum0 = y for the
  duration of the call to csgn. See signum for further information. 
- The decision of whether or not to perform many of the automatic symmetry
  transformations in maple is based on the value of csgn. For example, if 
  csgn(x) = -1, the transformation sin(x) --> -sin(-x) is done. 
- csgn uses signum to determine the signs of Re(x) and Im(x). 
- The derivative of csgn is denoted by csgn(1, x). This is 0 for all
  non-purely-imaginary numbers, and is undefined otherwise. 
- For mathematical consistency, the value of csgn(0), as determined either by
  the value of _Envsignum0 or by the third argument to csgn, should be either 0
  (the default) or one of 1, -1, or undefined. 

Examples
> csgn(1-2/3*I);
                                       1
> csgn(exp(2*Pi/3*I));
                                       -1
> csgn(Pi);
                                       1
> diff(csgn(x), x);
                                   csgn(1, x)
> csgn(1,-3+I);
                                       0

See Also 
evalc, sign, signum, inifcns, assume
 

meytim

متخصص محاسبات عددی و MATLAB
کاربر ممتاز
بله درست میگید.من فکر میکردم درهرصورت باید همیشه یه جواب مشخص دربیاد.
حالا به غیر از simplify و pretty چه دستورای دیگه ای هم هست که جواب رو کمی ساده تر نشون بده؟
درضمن این جوابایی که نوشتم رو دقیقا از تو اجرای متلب کپی کردم یعنی فکر نمیکنم چیزی رو جا انداخته باشم.

من فکر میکردم درهرصورت باید همیشه یه جواب مشخص دربیاد.
از نظر ریاضی معادل هستند؛ بنابراین مشکلی رو به وجود نمیارن.

این جوابایی که نوشتم رو دقیقا از تو اجرای متلب کپی کردم یعنی فکر نمیکنم چیزی رو جا انداخته باشم.
غیر ممکنه که متلب همچین اشتباه فاحشی در ارائه جواب یه معادله دیفرانسیل بدون شرط داشته باشه.

به غیر از simplify و pretty چه دستورای دیگه ای هم هست که جواب رو کمی ساده تر نشون بده؟
در زیر بعضی از دستورهاش رو به کار بردم. در ساده سازی، یا از یک بیان به بیان دیگه درآوردن یک عبارت علاوه بر دستورهای دستکاری نمادین، یک مقدار درک ریاضی از اون مسأله هم نیازه.


کد:
>> p=dsolve('D2p+Dp/r=(r^2+c^2)^(1/2)','r')
 
p =
 
1/9*(r^2+c^2)^(3/2)+1/3*(r^2+c^2)^(1/2)*c^2-1/3*c^4/(c^2)^(1/2)*log((2*c^2+2*(c^2)^(1/2)*(r^2+c^2)^(1/2))/r)+C1*log(r)+C2
 
 
>> p=simple(p)
 
p =
 
1/9*(r^2+c^2)^(1/2)*r^2+4/9*(r^2+c^2)^(1/2)*c^2-1/3*c^3*log(2*c*(c+(r^2+c^2)^(1/2))/r)+C1*log(r)+C2
 
 
>> p=subs(p,'(r^2+c^2)^(1/2)','a')
 
p =
 
1/9*(a)*r^2+4/9*(a)*c^2-1/3*c^3*log(2*c*(c+(a))/r)+C1*log(r)+C2
 
 
>> p=collect(p,sym('a'))
 
p =
 
(4/9*c^2+1/9*r^2)*a+C2-1/3*c^3*log(2*c*(c+a)/r)+C1*log(r)
 
 
>> k1=sym('(4/9*c^2+1/9*r^2)*a')
k1 =
(4/9*c^2+1/9*r^2)*a

>> k2=p-k1
 
k2 =
 
C2-1/3*c^3*log(2*c*(c+a)/r)+C1*log(r)
 
 
>> k2=simplify(subs(k2,'C1','-1/3*c^3+C3'))
 
k2 =
 
C2-1/3*c^3*log(2)-1/3*c^3*log(c*(c+a)/r)-1/3*c^3*log(r)+log(r)*C3
 
 
>> k2=simple(k2)
 
k2 =
 
C2-1/3*c^3*log(2)-1/3*c^3*log(c*(c+a)/r)-1/3*c^3*log(r)+log(r)*C3
 
>> k2=expand(k2)
 
k2 =
 
-1/3*c^3*log(2)-1/3*c^3*log(c)-1/3*c^3*log(c+a)+C2+log(r)*C3
 
 
>> k2=subs(k2,'C2','1/3*c^3*log(2)+1/3*c^3*log(c)+C4')
 
k2 =
 
-1/3*c^3*log(2)-1/3*c^3*log(c)-1/3*c^3*log(c+a)+(+1/3*c^3*log(2)+1/3*c^3*log(c)+C4)+log(r)*C3
 
 
>> k2=simplify(k2)
 
k2 =
 
-1/3*c^3*log(c+a)+C4+log(r)*C3
 
 
>> p=k1+k2
 
p =
 
(4/9*c^2+1/9*r^2)*a-1/3*c^3*log(c+a)+C4+log(r)*C3
 
 
>> p=subs(p,'a','(r^2+c^2)^(1/2)')
 
p =
 
(4/9*c^2+1/9*r^2)*((r^2+c^2)^(1/2))-1/3*c^3*log(c+((r^2+c^2)^(1/2)))+C4+log(r)*C3
 

arash.t

عضو جدید

ممنون مهندس ولي اين دستور منسوخ شده. فكر كنم doc جايگزينش شده. من ورژن 2012a نصب كردم.
متلب من اين فرمان رو نداره. فكر كنم متلبم ناقصه. ميشه خودت بگي اين چيه؟

مهندس جان میشه تو نوشتن کد دستوری این معادله کمکم کنین؟؟
4(-7x- ln⁡(1-x) )+ (9(((-(1-x))/x)-x/5-8)-1)/9*41-66x=8(-6x- ln⁡(1-x) )+ (5(((-(1-x))/x)-x/7-4)-1)/5*21-31x
در اصل کد دستوری واسه محاسبه ی x همچین معادله ای رو می خوام
 

sanijoon

کاربر فعال تالار مقالات ,
کاربر ممتاز
مهندس جان میشه تو نوشتن کد دستوری این معادله کمکم کنین؟؟
4(-7x- ln⁡(1-x) )+ (9(((-(1-x))/x)-x/5-8)-1)/9*41-66x=8(-6x- ln⁡(1-x) )+ (5(((-(1-x))/x)-x/7-4)-1)/5*21-31x
در اصل کد دستوری واسه محاسبه ی x همچین معادله ای رو می خوام

سلام
syms x

4(-7x- ln⁡(1-x) )+ (9(((-(1-x))/x)-x/5-8)-1)/9*41-66x-8(-6x- ln⁡(1-x) )- (5(((-(1-x))/x)+x/7-4)-1)/5*21+31x=0
 

sanijoon

کاربر فعال تالار مقالات ,
کاربر ممتاز
سلام بله ميخواد در آخر solve x بنويسيد. به جاي ln از log استفاده كنيد
 

Similar threads

بالا