انجمن سایت کلیدستان



ساخت یک تابعزمان کنونی: ۱۳۹۵/۰۹/۱۸، ۰۴:۳۹ ق.ظ
کاربران در حال بازدید این موضوع: 1 مهمان
نویسنده: cloner
آخرین ارسال: cloner
پاسخ 13
بازدید 3455

رتبه موضوع:
  • 2 رای - 4 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
ساخت یک تابع

ساخت یک تابع

#1
 
کد پی‌اچ‌پی:
function jordan(a,b)
[
m,n]=size(a);
for 
j=1:m-1
    
for z=2:m
        
if a(j,j)==0
            t
=a(1,:);a(1,:)=a(z,:);
            
a(z,:)=t;
        
end
    end
    
for i=j+1:m
        a
(i,:)=a(i,:)-a(j,:)*(a(i,j)/a(j,j));
    
end
end

for j=m:-1:2
    
for  i=j-1:-1:1
        a
(i,:)=a(i,:)-a(j,:)*(a(i,j)/a(j,j));
    
end
end

for s=1:m
    a
(s,:)=a(s,:)/a(s,s);
    
x(s)=a(s,n);
end
disp
('Gsuss-jordan method:')
a
x


ادمین مشکل این تابع چی هستش ؟؟/
این دستور رو میدم که تابع حلش کنه اما اررور میده

کد پی‌اچ‌پی:
X=jordan([-2 1 -1;1 2 3;3 0 1],[4;13;-1]) 

باید بگم که این دستورات برای حل معادلات بروش حذفی گاوس جردن هستش.
پاسخ

ساخت یک تابع

#2
سلام.
خطای زیر رو میده :

کد:
??? Output argument "X" (and maybe others) not assigned during call to "C:\Program
Files\MATLAB\R2011a\bin\jordan.m>jordan".

که منظورش اینه که خروجی تابع برابر X تعیین شده اما در کدهای تابع، این مقدار محاسبه نشده است.
اگر به خط اول کدهای تابع دقت کنید، باید X را که حرف بزرگ است به x (یعنی حرف کوچک) تغییر بدهید. با این کار مشکل حل می شود و خروجی خواهیم داشت.
bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ

ساخت یک تابع

#3
کاملا درسته ادمین برنامه هیچ ارروری نمیده
فقط یه مشکلی داره اونم اینه که هر ماتریسی داده بشه به ماتریس تا حل کنه یه جواب ثابت میاره که اشتباه هستش
مثلا همون کدی که گفتم
کد پی‌اچ‌پی:
x=jordan([-2 1 -1;1 2 3;3 0 1],[4;13;-1]) 
باید این جوابو بیاره:
کد پی‌اچ‌پی:
x= -
که این جوابو میده :
کد پی‌اچ‌پی:
Gsuss-jordan method:

=

     
1     0     0
     0     1     0
     0     0     1


ans 
=

     
0
     0
     1


=

     
0     0     1 
بازم میگم که  هر ماتریسی که به تابع بدی این جوابو میاره
میشه مشکلش رو بگین/؟/؟
ممنون میشم بگین اشکال کدها کجا هستش و برطرف کنین



 
پاسخ

ساخت یک تابع

#4
کدهای تابع ساده است، اگر تلاش کنید حتما خودتان مشکل آن را پیدا می کنید. در ضمن باید ببینید بر اساس چه فرمول هایی بوده.
 
bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ

ساخت یک تابع

#5
از دست شما ادمین!!!!
کاملا میخوای که مثل پروژه های قبلی خودم نکته شو پیدا کنم
فقط برای پیدا کردن مشکلش باید یه ماتریسی رو با همون الگوریتمی که تابع رو نوشتیم بصورت دستی حل کنیم رو کاغذ
یعنی هر مرحله ای که تو تابع نوشتیم رو تو کاغذ پیاده منیم و در نهایت مشکلش رو پیدا میکنیم
فقط یه مشکلی هست اونم اینه که من نمیدونم چطوری این کارو انجام بدم 
بعنوان مثال این قسمت از کدها که حلقه فور اول و دوم هست

کد پی‌اچ‌پی:
[m,n]=size(a);
for 
j=1:m-1
    
for z=2:m
        
if a(j,j)==0
            t
=a(1,:);a(1,:)=a(z,:);
            
a(z,:)=t;
        
end
    end 

رو میشه با یه مثال عددی بهم یاد بدین که چطوری ماتریس رو بااین دستورات بطور دستی محاسبه کنم
اگه بگین فکر کنم بتونم با این روش مشکلشو حل کنم
بعنوان مثال همین ماتریس رو در نطر بگیرین

کد پی‌اچ‌پی:
x=([-2 1 -1;1 2 3;3 0 1],[4;13;-1]) 
 
پاسخ

ساخت یک تابع

#6
از دست شما cloner !!!  

دو خط زیر را توضیح می دهم :

کد:
t=a(1,:);a(1,:)=a(z,:);
a(z,:)=t;

این دو خط از کدها، باعث می شود که جای تمامی مقادیر عناصر ردیف اول ماتریس a با ردیف z ام آن جابجا شود. متغیر t هم برای نگهداری موقت مقادیر ردیف اول است زیرا ابتدا باید مقادیر ردیف z ام در ردیف اول کپی شود، سپس مقادیر ذخیره شده در t که همان مقادیر قدیمی ردیف اول است، در ردیف z ام ذخیره خواهد شد.
برای یک گام حلقه، یک ماتریس a را روی کاغذ بنویسید. بعد عناصر ردیف اول آن را در برداری به اسم t بنویسید، بعد عناصر ردیف z ام ماتریس a را به جای عناصر ردیف اول آن بنویسید. سپس عناصر موجود در t را به جای عناصر ردیف z ام ماتریس a بنویسید. نتیجه، جاباجایی عناصر ردیف اول و z ام ماتریس a است.
 
bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ

ساخت یک تابع

#7
ادمین توضیحاتت خیلی خوب بود و تا حدودی بقیه کدهارو تو کاغذ پیاده کردم  اما نتونستم متوجه اشکال بشم
برای اطمینان یه بار دیگه انجام دادم اما باز موفق نشدم
با اینکه شما تجربه زیادی دارین  تو این زمینه بنظر شما کجاش مشکل داره؟؟؟
این اخرین پروژه درسی من هستش بخاطر همینم وقت زیادی ندارم که تحویل بدم
اگه یه پروزه غیر درسی بود و وقت کافی داشتم حتما خودم مشکل برنامه رو پیدا میکردم و ازتون تقاضای کمک نمیکردم
خواهش میکنم که کمک کنین  وبگین مشکل این تابع چیه که همش جواب ثابتی میاره
باتشکر از شما

 
پاسخ

ساخت یک تابع

#8
اگر فرمول های الگوریتم را بنویسید (البته به طور کامل و دقیق)، شاید بتوانم بگویم که مشکل از کجاست.
 
bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ

ساخت یک تابع

#9
دستت درد نکنه ادمین خیلی ممنون میشم
الگوریتم برنامه رو تو کاغذ نوشتم :

   

ادمین باید بگم که صورت کامل پروژه به این صورت هست که در زیر میگم و دو بخش الف و ب داره
الف:تابعی بنویسید که دو ماتریس  BوA را از دستگاه AX=B بعنوان ورودی دریافت نموده و پس از بررسی سازگار بودن انها دستگاه داده شده را باروش گاوس جردن حل کند.(تابع باید قادر به محور گیری باشد)
ب:با استفاده از تابع بند الف تابعی جدید بنویسید بطوری که یک ماتریس A را دریافت نموده و با استفاده از روش گاوس جردن وارون انرا محاسبه کند.
(ادمین دقت کنید که باید دو تا ام فایل داشته باشیم.یکی برای بند الف و دیگری برای بند ب)
توضیحات::Sad((منظور از محورگیری این هستش که اگه طی عملیاتی که داریم دستگاه رو حل میکنیم اگه یکی  از عناصر قطر اصلی صفر شد اون سطر رو با سطر بالایش یا سطر پایینیش عوض کنیم تا موجب بشه  که عناصر قطر اصلی برابر صفر نشه)))
مثال:

کد پی‌اچ‌پی:
A=[1   2   3
  
-1  0   -2
  2  
-1    3 ]
که اگه محورگیری بشه به این صورت در میاد

سطر اول یا سوم رو با سطر دوم عوض کنیم
A
=[1  2   3
  2  
-1   3
 
-1   0  -2

بخش اول همون کدهایی هست که تو پست های بالا مشاهده میکنی
برای توضیح بخش ب هم میتونم این توضیح رو بدم بهتون
با یه مثال توضیح میدم بهتون
وارون ماتریس A را با استفاده از روش گاوس جردن بدست میاریم
کد پی‌اچ‌پی:
این ماتریس مون هست:

A=[1 2 3
-1 1 -2
-1 3]

حل:
ابتدا با افزودن یک ماتریس همانی 3*3 ماتریس زیر را تشکیل میدیم
[A|I]=
که (آیبرابر با
I
=[1 0 0
0 1 0
0 0 1
]
با جاگزاری این دو ماتریس  در فرمول بالا
با یه سری عملیات تو این دوتا ماتریس
ماتریس (آبه روش گاوس جردن حل میکنیم به صورتی که همه درایه هاش صفر بشن به غیر از درایه های قطر اصلی که یک میشن
وهمون اعمالی که رو ماتریس 
(آانجام دادیم رو بر روی ماتریس همانی (آیانجام میدیم که حاصل ماتریس همانی برابر با
[-1/4 9/4 7/4
1
/4 3/4 1/4
1
/-5/-3/4

 
پاسخ

ساخت یک تابع

#10
من نگاهی به کدها انداختم، ببینید مثلا در ورودی تابع، بردار b داریم، اما در میان کدهای تابع، هیچ استفاده ای از بردار b نشده. نمیدونم این کدها را شما نوشتید یا شخص دیگری، ولی از همین نکته می توان متوجه شد که کدها دارای مشکلات اساسی است و نوشتن یک برنامه جدید، زمان کمتری نسبت به خطایابی کدهای فعلی می برد.
دیگر وقتتان را روی این کدها تلف نکنید. 
موفق باشید. 
bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ

ساخت یک تابع

#11
(۱۳۹۲/۰۹/۲۱, ۰۷:۳۱ ب.ظ)'admin' نوشته:  
ببین ادمین من کدهارو تو قسمت script برنامه متلب ذخیره میکنم و اکثر دستگاهی که بهش میدم رو حل میکنه به جز چندتا ولی نمیدونم که چرا تو فانکشن که میبرم کدها جواب نمیده
کد پی‌اچ‌پی:
a=[-2 1 -1 4
    1 2 3 13
    3 0 1 
-1];
[
m,n]=size(a);
for 
j=1:m-1
    
for z=2:m
        
if a(j,j)==0
            t
=a(1,:);a(1,:)=a(z,:);
            
a(z,:)=t;
        
end
    end
    
for i=j+1:m
        a
(i,:)=a(i,:)-a(j,:)*(a(i,j)/a(j,j));
    
end
end

for j=m:-1:2
    
for  i=j-1:-1:1
        a
(i,:)=a(i,:)-a(j,:)*(a(i,j)/a(j,j));
    
end
end

for s=1:m
    a
(s,:)=a(s,:)/a(s,s);
    
x(s)=a(s,n);
end
disp
('Gsuss-jordan method:')
a
x

که باید جوابها بصورت زیر بیاد که درست میاد

-1و4و2
ولی نمیدونم که چرا اینجا درست نمیده
دمتگرم ادمین لطفا کمک کن تا این پروژه رو حل کنم یکی دو روز دیگه بیشتر وقت ندارم
خواهشا کمک کن
اگه باز بنظرت اشتباه میان کدها که بعید میدونم اشتباه باشن
طبق الگوریتمی که ذکر کردم دو قسمت (الف) و( ب) رو یه سری کد بنویس که جور در بیان
اگه بخاطر درسام نبود باور کن خودم مینوشتم ولی چون شما بیشتر تجربه داری میتونی سریع تر بنویسی
بازم تشکر میکنم اگه حل کنی



 
پاسخ

ساخت یک تابع

#12
شرمنده ام. اگر سایر موضوعات را دیده باشید، من در حد راهنمایی کمک می کنم و کدهای زمان بر را نمی نویسم.
من نیز همانند شما، زمان کم دارم.
موفق باشید. 
bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ

ساخت یک تابع

#13
(۱۳۹۲/۰۹/۲۱, ۱۱:۰۰ ب.ظ)'admin' نوشته:  
بله مسلما وقت شما هم کمه اشکالی نداره مرسی از راهنمایتون



 
پاسخ
 سپاس شده توسط admin


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان

آخرین کلیدهای غیررایگان

شما هم می توانید کلیدهای غیررایگان منتشر کنید (بیشتر بدانید)