PDA

View Full Version : حل تابع چند جمله ای



صفحه : [1] 2

coronaa
یک شنبه 22 تیر 1393, 21:50 عصر
با سلام به دوستان گرامی،
من یه تابع درجه دوم دارم که باید ازش مشتق بگیرم و بعد برابر یک ضریبی قرار بدم و سپس ریشه ی اون تابع مشتق گرفته شده (درجه یک) رو بدست بیارم.
من مشتق میگیرم و برابر اون ضریب قرار میدم ولی نمیتونم ریشه رو بدست بیارم.
کسی هست کمک کنه؟
منظورم اینه که دستور این معادله رو چطوری بنویسم؟ (x متغیره)
2ax+b=c
باید از این معادله x بدست بیاد.
مرسی

rahnema1
دوشنبه 23 تیر 1393, 09:03 صبح
سلام
اگه می خواهید به صورت سمبولیک حل کنید می تونید از تولباکس symbolic استفاده کنید

coronaa
دوشنبه 23 تیر 1393, 10:09 صبح
سلام
اگه می خواهید به صورت سمبولیک حل کنید می تونید از تولباکس symbolic استفاده کنید
نه. فعلن میخوام کد بزنم!
دستوری نداره؟

rahnema1
دوشنبه 23 تیر 1393, 13:12 عصر
نه. فعلن میخوام کد بزنم!
دستوری نداره؟

ببینید این لینک به کارتون میاد:
http://www2.math.umd.edu/~immortal/206/tutorial/SolvingEquations.shtml
حالا اگه می خواهید چرخ را دوباره اختراع کنید باید کاری شبیه کاری که مثلا یک کامپایلر انجام میده انجام بدین

coronaa
دوشنبه 23 تیر 1393, 17:13 عصر
ببینید این لینک به کارتون میاد:
http://www2.math.umd.edu/~immortal/206/tutorial/SolvingEquations.shtml
حالا اگه می خواهید چرخ را دوباره اختراع کنید باید کاری شبیه کاری که مثلا یک کامپایلر انجام میده انجام بدین
ممنونم. دقیقاً همینو میخواستم!

coronaa
دوشنبه 23 تیر 1393, 18:29 عصر
مهندس مشکلم تقریباً حل شد. حالا میخوام نتیجه رو چاپ کنم یه پیغام خطا میده!
clc; clear;
syms P
for i=1:5

a(i)=5;
b(i)=10;
c(i)=15;
ro(i)=30;
lambda=20;
% -----------------------------
f=a*P^2+b*P+c;
d=diff(f,'P');
% -----------------------------
s=d(1,i)-lambda;
p(1,i)=solve(s) ; % P(i) bozorg
Pr=sum(p);
% -----------------------------
end
fprintf('Pi(Big) = %f',p);
fprintf('Pr = %f',Pr);

این خطا رو میده. ظاهراً P که بعنوان سیمبول شناخته شد دیگه دستور fprintf کار نمیکنه :
??? Error using ==> fprintf
Function is not defined for 'sym' inputs.

Error in ==> ProftCode at
fprintf('Pi(Big) = %f',p);

rahnema1
دوشنبه 23 تیر 1393, 21:39 عصر
من تولباک سمبولیک ندارم حالا شما اگه بتونید اول p را تبدیل به عدد اعشاری بکنید چون f% که در fprintf استفاده میشه برای چاپ عدد اعشاری هست. مثلا با استفاده از دستور double یا امثال اینها

coronaa
دوشنبه 23 تیر 1393, 22:00 عصر
من تولباک سمبولیک ندارم حالا شما اگه بتونید اول p را تبدیل به عدد اعشاری بکنید چون f% که در fprintf استفاده میشه برای چاپ عدد اعشاری هست. مثلا با استفاده از دستور double یا امثال اینها
p هم عدد اعشاریه هم یک ماتریس یک در 5 هست. نکنه بخاطر ماتریس بودنش قبول نمیکنه؟

coronaa
دوشنبه 23 تیر 1393, 23:10 عصر
ممنونم دوست عزیز.
حل شد تا اینجا. :لبخندساده:

coronaa
چهارشنبه 25 تیر 1393, 14:30 عصر
اگه یه مجموعه داشته باشیم بصورت {1,2,3} و بخوایم حالت های ممکنی که می تونن با هم یه زیر مجموعه تشکیل بدن چطوریه؟
مثلاً به این صورت :
{1},{1,2},{1,3},{2,3},{1,2,3}
ضمن اینکه {1,2} و {2,1} فرقی نمیکنن با هم!

rahnema1
چهارشنبه 25 تیر 1393, 14:43 عصر
a=[1 2 3];
for i=1:numel(a)
s{i}=nchoosek(a,i);
end
disp(s)

coronaa
چهارشنبه 25 تیر 1393, 19:01 عصر
a=[1 2 3];
for i=1:numel(a)
s{i}=nchoosek(a,i);
end
disp(s)

nchoosek، جایگشته؟
ولی من تمام حالتهای زیر مجموعه رو میخوام. تعدادشون نه! خود حالت ها رو نشون بده.
خروجی متلب :
[3x1 double] [3x2 double] [1x3 double]

rahnema1
چهارشنبه 25 تیر 1393, 20:52 عصر
s سک سلوله که داخلش تمام حالتها قرار داره.
خروجی octave:

octave-3.6.2.exe:3> disp(s)

{
[1,1] =

1
2
3

[1,2] =

1 2
1 3
2 3

[1,3] =

1 2 3

}

coronaa
پنج شنبه 26 تیر 1393, 00:48 صبح
دستتون درد نکنه ولی من هنوز اون جوابی که میخواستم رو نگرفتم.
یکمی باز مقالاتم رو مطالعه میکنم تا برام روشنتر بشه که چی میخوام. بعد دوباره سوالم رو از شما میپرسم.
ممنونم از راهنمائیت.
مرسی

coronaa
جمعه 27 تیر 1393, 07:40 صبح
آقای مهندس،
برنامه ای که دادی رو یکمی دستکاری کردم و به یه جوابی رسیدم. بصورت زیر :
;
a=[1 2 3];
for i=1:numel(a);
v=nchoosek(a,i)

end
خروجی متلب :

v =

1
2
3


v =

1 2
1 3
2 3


v =

1 2 3
ولی میخوام خروجی رو به این صورت نمایش بده :
http://www.uplooder.net/img/image/1/59094f163c9b05fb04cb71dff789cc88/aaa.jpg

راه حلی وجود داره به نظر شما؟

rahnema1
جمعه 27 تیر 1393, 08:38 صبح
راه حلی وجود داره به نظر شما؟
این را امتحان کنید

a=[1 2 3];
k=1;
for i=1:numel(a)
s=nchoosek(a,i);
for j=1:size(s,1)
v(k)=sum(x(s(j,:)).*y(s(j,:)));
k=k+1;
end
end
disp(v)

coronaa
جمعه 27 تیر 1393, 09:03 صبح
خطا :


??? Undefined function or method 'x' for input arguments of type
'double'.

Error in ==> sett1 at 6
v(k)=sum(x(s(j,:)).*y(s(j,:)));

rahnema1
جمعه 27 تیر 1393, 09:09 صبح
توی فایل ورد که x و y داشتین. من فکر کردم x و y عبارتند از دو تا بردار مثلا با طول 3 (چون a هم از 1 تا 3 بود)یه چیزی شبیه این

x=rand(1,3);
y=rand(1,3);

coronaa
جمعه 27 تیر 1393, 09:15 صبح
توی فایل ورد که x و y داشتین. من فکر کردم x و y عبارتند از دو تا بردار مثلا با طول 3 (چون a هم از 1 تا 3 بود)یه چیزی شبیه این

x=rand(1,3);
y=rand(1,3);

بله. میشه گفت برداره.
در اصل توی رابطه ام x,y وجود نداره. رابطه های دیگه هست ولی گفتم پیچیده نشه فقط بعنوان مثال یه جمله ی اون رو گذاشتم.
خب حالا جوابی که گرفتم بصورت زیره :
Columns 1 through 6

0.7441 0.5728 0.0124 1.3169 0.7565 0.5852

Column 7

1.3293

rahnema1
جمعه 27 تیر 1393, 09:19 صبح
حالا v برای حالتهای مختلف به دست اومده

coronaa
جمعه 27 تیر 1393, 09:23 صبح
حالا v برای حالتهای مختلف به دست اومده
چطوری باید بفهمم کدوم v هست؟

rahnema1
جمعه 27 تیر 1393, 09:26 صبح
به همون ترتیبی که s را چاپ می کردیم

coronaa
جمعه 27 تیر 1393, 09:41 صبح
ادامه ش اینطوریه :

rahnema1
جمعه 27 تیر 1393, 09:52 صبح
{i} یعنی یکی از اعضای s که در اینجا یکی از اعداد 1 و 2 یا 3 میتونه باشه

coronaa
جمعه 27 تیر 1393, 10:01 صبح
{i} یعنی یکی از اعضای s که در اینجا یکی از اعداد 1 و 2 یا 3 میتونه باشه
به. یعنی باید عضو i از اونا کم بشه.
اگه i برابر 1 هست میشه :
v(1,2)-v(2)
v(1,2,3)-v(2,3)

rahnema1
جمعه 27 تیر 1393, 10:03 صبح
فکر می کنم این فی باید جزء یک فرمول بزرگتر باشه درسته؟

coronaa
جمعه 27 تیر 1393, 10:05 صبح
فکر می کنم این فی باید جزء یک فرمول بزرگتر باشه درسته؟
نه.
مستقله. فقط همون Vs هایی که بدست آوردیم باید درش قرار بدیم تا فی i بدست بیاد.

rahnema1
جمعه 27 تیر 1393, 10:08 صبح
آخه یه مشکل وجود داره. توی فرمول v که در فایل ورد اولی بود اون اندکس i منظورش چیه؟ منظورش اعضای مجموعه s هست یا نه صرفا اندیس هست؟

coronaa
جمعه 27 تیر 1393, 10:16 صبح
آخه یه مشکل وجود داره. توی فرمول v که در فایل ورد اولی بود اون اندکس i منظورش چیه؟ منظورش اعضای مجموعه s هست یا نه صرفا اندیس هست؟
تعداد اعضای مجموعه A هست. یعنی 3 تا
حل مسئله بدین صورته :

rahnema1
جمعه 27 تیر 1393, 12:43 عصر
این یکی


a=[1 2 3];
x=rand(1,3);
y=rand(1,3);

function ret= indexV(Smini,S,v)
ret=0;
if (numel(Smini)==0)
return;
end
for i=1:numel(S)
if(size(S{i},2)<numel(Smini))
ret=ret+size(S{i},1);
else
[val,dx]=ismember(Smini, S{i},'rows');
ret=ret+dx;
break;
end

end
ret=v(ret);
end
k=1;
S={};
v=[];
for i=1:numel(a)
s=nchoosek(a,i);
S{i}=s;
for j=1:size(s,1)
v(k)=sum(x(s(j,:)).*y(s(j,:)));
k=k+1;
end
end
k=1;
phi=zeros(1,numel(a));
for i=1:numel(S)
for j=size(S{i},1)
for z=1:numel(a)
if (ismember(a(z),S{i}(j,:)))
phi(z)=phi(z)+factorial(numel(S{i}(j,:))-1)* factorial(numel(a) -numel(S{i} (j,:)))* (v(k)-indexV(setdiff( S{i}(j,:) ,a(z)),S,v))/ factorial(numel(a));
k=k+1;
end
end
end
end
disp(phi)

coronaa
جمعه 27 تیر 1393, 13:49 عصر
دستت درد نکنه. این خطا رو میده فعلاً :
??? Undefined function or variable 's'.

Error in ==> rphii at 9
S{i}=s;

coronaa
جمعه 27 تیر 1393, 14:03 عصر
آقا فعلاً خطا نداد. دارم بررسی میکنم ببینم جواب درست میده یا نه!
مرسی مهندس :تشویق::تشویق:

coronaa
جمعه 27 تیر 1393, 17:48 عصر
مهندس، من رابطه های خودمو توی برنامه جایگذاری کردم.
لینکی که براتون فرستادم ، رابطه ی دوم باید توی متلب نوشته بشه. من بصورت زیر نوشتم. چند تا جمله ی دیگه هم هست. این جمله رو گیر میده میگه ماتریس باید مربعی باشه. یعنی سایز این ماتریس با ماتریسهای دیگه که با هم جمع و کم میشن یکی نیست.
مشکلش کجاست ؟
http://www.uplooder.net/img/image/47/cca9eb9d8fb80978d32be961a77a6999/zzzz.jpg

v(k)=sum(a(s(j,:)).*(pi(s(j,:)))^2+b(s(j,:)).*pi(s (j,:))+c(s(j,:)));
طرز نوشتنش درسته؟(این a با a که قبلن تعریف کردیم فرق میکنه.
a,b,c,pi هر کدام، یک بردار یک در سه هستن.

coronaa
جمعه 27 تیر 1393, 17:54 عصر
مهندس، من رابطه های خودمو توی برنامه جایگذاری کردم.
لینکی که براتون فرستادم ، رابطه ی دوم باید توی متلب نوشته بشه. من بصورت زیر نوشتم. چند تا جمله ی دیگه هم هست. این جمله رو گیر میده میگه ماتریس باید مربعی باشه. یعنی سایز این ماتریس با ماتریسهای دیگه که با هم جمع و کم میشن یکی نیست.
مشکلش کجاست ؟
http://www.uplooder.net/img/image/47/cca9eb9d8fb80978d32be961a77a6999/zzzz.jpg

v(k)=sum(a(s(j,:)).*(pi(s(j,:)))^2+b(s(j,:)).*pi(s (j,:))+c(s(j,:)));
طرز نوشتنش درسته؟(این a با a که قبلن تعریف کردیم فرق میکنه.
a,b,c,pi هر کدام، یک بردار یک در سه هستن.
آقا حل شد. ظاهرن!
بردار pi که به توان 2 بود رو ضرب نقطه ای کردم. درسته؟
v(k)=sum(a(s(j,:)).*(pi(s(j,:)).*pi(s(j,:)))+b(s(j ,:)).*pi(s(j,:))+c(s(j,:)));
حالا فعلن مشکلش اینه که v و فی رو منفی میده (البته با داده های خودم!)
دارم بررسیش میکنم.
تا اینجا خیلی چیزها رو از شما یاد گرفتم. واقعن سپاسگزارم.
مرسی

rahnema1
جمعه 27 تیر 1393, 18:23 عصر
ببخشید اون قسمت آخر کد یه اشتباه کوچولو شده لطفا تغییر بدید

k=1;
phi=zeros(1,numel(a));
for i=1:numel(S)
for j=size(S{i},1)
for z=1:numel(a)
if (ismember(a(z),S{i}(j,:)))
phi(z)=phi(z)+factorial(numel(S{i}(j,:))-1)* factorial(numel(a) -numel(S{i} (j,:)))* (v(k)-indexV(setdiff( S{i}(j,:) ,a(z)),S,v))/ factorial(numel(a));

end
end
k=k+1;
end
end
disp(phi)

coronaa
جمعه 27 تیر 1393, 18:23 عصر
مهندس میشه به طور مختصر از تابعی که تعریف کردی رو توضیح بدی؟ احتمالن واسه محاسبه ی s-{i} هست!
همچنین خط 38 برنامه.
ممنونم

rahnema1
جمعه 27 تیر 1393, 18:31 عصر
مهندس میشه به طور مختصر از تابعی که تعریف کردی رو توضیح بدی؟ احتمالن واسه محاسبه ی s-{i} هست!
همچنین خط 38 برنامه.
ممنونم

بله تابع واسه s-{i هست. ا.ن سلول خودش شامل 3 تا زیر مجموعه هست ما تعداد اعضای این زیر مجموعه ها را می شماریم تا برسیم به عنصر مورد نظر و شماره اندکس اون را در میاریم تا بتونیم v با اون اندکس را پیدا کنیم
توی اون حلقه های تودرتوی آخر هم تقریبا همین روند را دنبال می کنیم با این تفاوت که الان ما v ها را داریم

rahnema1
جمعه 27 تیر 1393, 18:46 عصر
یه اشتباه دیگه کشف کردم فکر کنم دیگه مشکلی نباشه:)

k=1;
phi=zeros(1,numel(a));
for i=1:numel(S)
for j=1:size(S{i},1)
for z=1:numel(a)
if (ismember(a(z),S{i}(j,:)))
phi(z)=phi(z)+factorial(numel(S{i}(j,:))-1)* factorial(numel(a) -numel(S{i} (j,:)))* (v(k)-indexV(setdiff( S{i}(j,:) ,a(z)),S,v))/ factorial(numel(a));

end
end
k=k+1;
end
end
disp(phi)

coronaa
جمعه 27 تیر 1393, 18:50 عصر
چرا فی منفی در میاد؟
همه ی v ها که مثبت هستن!

rahnema1
جمعه 27 تیر 1393, 18:53 عصر
چرا فی منفی در میاد؟
همه ی v ها که مثبت هستن!

این اصلاح آخری که کردم دیگه با این داده ها منفی نمیشه

coronaa
جمعه 27 تیر 1393, 18:55 عصر
این اصلاح آخری که کردم دیگه با این داده ها منفی نمیشه
بازم منفی میشه!

rahnema1
جمعه 27 تیر 1393, 19:00 عصر
با اون x و y که به صورت rand هست چندین و چند بار اجرا کردم یک مورد هم منفی نشد

rahnema1
جمعه 27 تیر 1393, 19:04 عصر
گذاشتم داخل فایل زیپ
http://www.sharefile.ir/uploads/1405710370.zip

coronaa
جمعه 27 تیر 1393, 19:08 عصر
با اون x و y که به صورت rand هست چندین و چند بار اجرا کردم یک مورد هم منفی نشد
اوکی. با داده های خودم مثبت جواب میده.
ممنونم. فعلن تا اینجا تموم شد.
اگه سوال داشتم اشکالی نداره باز از شما بپرسم؟

rahnema1
جمعه 27 تیر 1393, 19:10 عصر
اوکی. با داده های خودم مثبت جواب میده.
ممنونم. فعلن تا اینجا تموم شد.
اگه سوال داشتم اشکالی نداره باز از شما بپرسم؟

هر سوالی داشتین بپرسید من هم در حد توانم اگه بتونم جواب میدم

coronaa
شنبه 28 تیر 1393, 14:13 عصر
اینو میزنم p منفی در میاد :
p=(sum(b./c)+2*Pr)/(2*c/sum(c))-b./(2*c);

اینو میزنم خطا میده :
p=(sum(b.*(1/c))+2*Pr)/(2*c/sum(c))-b.*(1/(2*c));

پیغام :
??? Error using ==> mrdivide
Matrix dimensions must agree.

Error in ==> ProfitCode4 at 47
p=(sum(b.*(1/c))+2*Pr)/(2*c/sum(c))-b.*(1/(2*c));

rahnema1
شنبه 28 تیر 1393, 14:20 عصر
الان من نمیدونم c و b , pr چی هستند

coronaa
شنبه 28 تیر 1393, 14:24 عصر
الان من نمیدونم c و b , pr چی هستند
همه ی اینها بردارهای عددی یک در سه هستن.

rahnema1
شنبه 28 تیر 1393, 14:28 عصر
Pr که فکر کنم یک عدد باشه
این را امتحان کنید

Pr=.32;
c=rand(1,3);
b=rand(1,3);
p=(sum(b./c)+2*Pr)./(2*c./sum(c))-b./(2*c)

coronaa
شنبه 28 تیر 1393, 14:44 عصر
Pr که فکر کنم یک عدد باشهاین را امتحان کنید Pr=.32; c=rand(1,3); b=rand(1,3); p=(sum(b./c)+2*Pr)./(2*c./sum(c))-b./(2*c) Pr هم یک بردار یک در سه هست!اجرا کردم. p ها مثبت در اومد ولی دوباره Vk مفی در میاد.

rahnema1
شنبه 28 تیر 1393, 14:48 عصر
مگه اینجور نمیشه؟ Pr=P1+P2+P3
سه تاP داریم که جمعشون بشه Pr

coronaa
شنبه 28 تیر 1393, 15:00 عصر
مگه اینجور نمیشه؟ Pr=P1+P2+P3
سه تاP داریم که جمعشون بشه Pr
فکر کنم اینطوری باشه که برای i=1 میشه P1
برای i=2 میشه P2
برای i=3 میشه P3

rahnema1
شنبه 28 تیر 1393, 15:04 عصر
اینکه منفی میاد واسه اینکه شما ضرایب هزینه و سود را واقعی نمیدین به علت اینکه ضرایب هزینه خیلی بالا انتخاب شده این تابع باعث ضرر تولید کننده ها میشه

coronaa
شنبه 28 تیر 1393, 21:09 عصر
من این یادم نبود که برای محاسبه ی سود قبل از همکاری از رابطه (1) و (2) استفاده میشه. همه رو از رابطه (9) استفاده کردیم.
حالا چطوری متوجه ش کنم قبل از همکاری رو با این رابطه حساب کن؟

rahnema1
شنبه 28 تیر 1393, 21:27 عصر
من این یادم نبود که برای محاسبه ی سود قبل از همکاری از رابطه (1) و (2) استفاده میشه. همه رو از رابطه (9) استفاده کردیم.
حالا چطوری متوجه ش کنم قبل از همکاری رو با این رابطه حساب کن؟

اصلا لازم نیست حالیش کنی چونکه در هر دو حال I1 همون I1 میشه و فرقی نمی کنه

coronaa
شنبه 28 تیر 1393, 21:38 عصر
اصلا لازم نیست حالیش کنی چونکه در هر دو حال I1 همون I1 میشه و فرقی نمی کنه
فرق میکنه!
توی معادله (9) جمله آخر (بتا) اضافه میشه که مخصوص همکاری هست و قبل از همکاری این هزینه وجود نداره.

rahnema1
شنبه 28 تیر 1393, 21:40 عصر
درسته. شما درست می گی ف. باید از معادله 1و 2 استفاده بشه د یگه اون nchoosekو غیره لازم نیست

coronaa
شنبه 28 تیر 1393, 21:42 عصر
فرق میکنه!
توی معادله (9) جمله آخر (بتا) اضافه میشه که مخصوص همکاری هست و قبل از همکاری این هزینه وجود نداره.
مهندس این P بزرگ فعلن مثل قبل باشه. این p کوچیک رو باید الآن درست کنم. مثل همون Vk.
منظور منو متوجه شدین؟

rahnema1
شنبه 28 تیر 1393, 21:45 عصر
p کوچیک واسه همکاریه . قبل از همکاری دیگه نه nchoosek لازمه و نه p کوچک.

coronaa
شنبه 28 تیر 1393, 21:51 عصر
p کوچیک واسه همکاریه . قبل از همکاری دیگه نه nchoosek لازمه و نه p کوچک.
خب بعد از همکاری رو چیکار کنم الآن؟ ادامه همون برنامه رو میخوام کامل کنم.

rahnema1
شنبه 28 تیر 1393, 21:57 عصر
باید بفهمیم P های بزرگ از کجا میان تا بتونیم اونها را داخل فرمول p کوچک بذاریم. اون جدول A2 هم که روشن شد به درد نمی خوره
دو تا کار میشه کرد:
یا مساحت زیر منحنی را به دست بیاریم
یا از جدول 3 استفاده کنیم و مثلا مقدار Revenue را تقسیم بر مقادیر Sales price در جدول 2 کنیم. البته دقت کنید در جدول 2 بر حسب kw h هست که باید بر حسب mw h بدست بیاریم

coronaa
شنبه 28 تیر 1393, 22:00 عصر
باید بفهمیم P های بزرگ از کجا میان تا بتونیم اونها را داخل فرمول p کوچک بذاریم. اون جدول A2 هم که روشن شد به درد نمی خوره
دو تا کار میشه کرد:
یا مساحت زیر منحنی را به دست بیاریم
یا از جدول 3 استفاده کنیم و مثلا مقدار Revenue را تقسیم بر مقادیر Sales price در جدول 2 کنیم. البته دقت کنید در جدول 2 بر حسب kw h هست که باید بر حسب mw h بدست بیاریم
استادم گفت از جدول A2 ولی با این حال من کاری به P بزرگ ندارم فعلن. در حال حاضر همونا باشن. من الآن فقط میخوام ساختار برنامه نوشته بشه!
قبل از همکاری و بعد از همکاری

coronaa
شنبه 28 تیر 1393, 22:02 عصر
مشکل من الآن اینه که نحوه ی محاسبه p کوچیک در برنامه قبلی اشتباهه!

coronaa
شنبه 28 تیر 1393, 23:07 عصر
با داده های خودم منفی در میاد که!

coronaa
شنبه 28 تیر 1393, 23:12 عصر
یعنی الآن شما میگین p کوچیک باید دارای سه مقدار باشه؟ مثل V محاسبه نمیشه؟

rahnema1
شنبه 28 تیر 1393, 23:35 عصر
یعنی الآن شما میگین p کوچیک باید دارای سه مقدار باشه؟ مثل V محاسبه نمیشه؟

p کوچیک با اندکس i مشخص میشه اما V با اندکس s مشخص میشه

coronaa
شنبه 28 تیر 1393, 23:40 عصر
p کوچیک با اندکس i مشخص میشه اما V با اندکس s مشخص میشه
خب توی رابطه (9) هم وقتی میخواستیم V(1,3) رو بدست بیاریم اندکس i رو یک بار 1 گذاشتیم و یکبار 3
مگه اینطور نبود؟
وقتی میخوایم V(1,3) رو بدست بیاریم باید p1 و p3 رو داشته باشیم. حالا توی جمله ی دوم رابطه (9) چطوری بگیم که p1 و p3 رو با هم جمع بزن؟

rahnema1
شنبه 28 تیر 1393, 23:48 عصر
رابطه 8 و 9 را ببین. اندکس از 1 تا m هست و m هم حداکثر تا 3 میتونه باشه بنابراین p حداکثر 3 عضو خواهد داشت

coronaa
شنبه 28 تیر 1393, 23:52 عصر
اینو قبول کردم حالا وقتی میخوایم V(1,3) رو بدست بیاریم باید p1 و p3 رو داشته باشیم. حالا توی جمله ی دوم رابطه (9) چطوری بگیم که f(p1)و f(p3) رو با هم جمع بزن؟

coronaa
شنبه 28 تیر 1393, 23:56 عصر
اینو قبول کردم حالا وقتی میخوایم V(1,3) رو بدست بیاریم باید p1 و p3 رو داشته باشیم. حالا توی جمله ی دوم رابطه (9) چطوری بگیم که f(p1)و f(p3) رو با هم جمع بزن؟
حل شد. فهمیدم.
پس مشکل ما کجاست که جواب درست نمی گیریم؟
یعنی P بزرگ و Pr دقیقن مشخص نیست که چطوری استفاده میشن؟

rahnema1
یک شنبه 29 تیر 1393, 00:01 صبح
توی کد از این عبارت استفاده کردیم

sum(aa(s(j,:)).*(pi(s(j,:)).*pi(s(j,:)))+b(s(j,:)) .*pi(s(j,:))+c(s(j,:)))

دوباره یه نگاهی به s بینداز
هر کدوم از سطرهای s ترکیبی از اعداد هست مثل 1,3 یا مثلا 2,3
وقتی می گیم

pi(s(j,:))

یعنی عناصر 1و3 از pi و یا عناصر 2,3 از pi

rahnema1
یک شنبه 29 تیر 1393, 00:05 صبح
حل شد. فهمیدم.
پس مشکل ما کجاست که جواب درست نمی گیریم؟
یعنی P بزرگ و Pr دقیقن مشخص نیست که چطوری استفاده میشن؟

شاید باید G ها هم در نظر گرفته بشن. طول هر خط انتقال و ظرفیت اونها. همچنین جهت خطوط

coronaa
یک شنبه 29 تیر 1393, 00:22 صبح
یعنی الآن برنامه بغیر از ورودیها، ساختارش هیچ مشکلی نداره؟

و اینکه کار setdiff چیه؟

rahnema1
یک شنبه 29 تیر 1393, 02:29 صبح
یعنی الآن برنامه بغیر از ورودیها، ساختارش هیچ مشکلی نداره؟

و اینکه کار setdiff چیه؟

فکر نکنم مشکلی داشته باشه . setdiff هم میاد یک عضو از مجموعه کم می کنه

coronaa
یک شنبه 29 تیر 1393, 10:07 صبح
فکر نکنم مشکلی داشته باشه . setdiff هم میاد یک عضو از مجموعه کم می کنه
میشه بیشتر توضیح بدی؟
عددهای داخل آرگومان دقیقن چیکار میکنن؟
indexV(setdiff( S{i}(j,:) ,aa(z)),S,v))

rahnema1
یک شنبه 29 تیر 1393, 12:41 عصر
با اون تابع می خوایهم s-i را پیدا کنیم آرگوتنهاش مهم نیست داخلش مهمه
در هر صورت تونستم بخشی از جدول 3 را بازسازی کنم فق نمیدونم تابع هزینه f را چرا درست محاسبه نمی کنه ولی Wheelingcharge و Revenue درست حساب میشه
در مورد pi ها هم حرف شما درست بود. باید 7 تا تولید می شد که این را از مقایسه جدول 13 فهمیدم
http://www.sharefile.ir/uploads/1405863911.zip

coronaa
یک شنبه 29 تیر 1393, 14:04 عصر
با اون تابع می خوایهم s-i را پیدا کنیم آرگوتنهاش مهم نیست داخلش مهمه

خب من میخوام دقیقن بفهمم چطوری عمل میکنه که موقع ارائه به استادم خودم متوجه باشم چی دارم میگم! :)



در هر صورت تونستم بخشی از جدول 3 را بازسازی کنم فق نمیدونم تابع هزینه f را چرا درست محاسبه نمی کنه ولی Wheelingcharge و Revenue درست حساب میشه

ظاهرن شما دارین از نتایج به صورت سوال میرسین. درسته؟ ما که از ابتدا Revenue نداریم که شما توی ورودی گذاشتین! یا من بد متوجه شدم؟
این خط پرانتزش متوازن نبود. خطا میداد :
pi=((sum((b./c)(s(j,:)))+2*Pr)./(2.*c.*sum((1./c)(s(j,:))))-b./(2.*c));
به اینصورت نوشتم. خطا نمیده. درسته اینطوری؟
pi=(sum(b(s(j,:))./c(s(j,:)))+2*Pr)./(2*c(s(j,:))./sum(c(s(j,:))))-b(s(j,:))./(2*c(s(j,:)));

الآن توی این خط خطا میده :
Gene(k)=sum(aa(s(j,:)).*(pi(s(j,:)).^2)+b(s(j,:)). *pi(s(j,:))+c(s(j,:)));

پیغام :
??? Index exceeds matrix dimensions.

rahnema1
یک شنبه 29 تیر 1393, 14:42 عصر
این جورش درسته

pi=((sum(b(s(j,:))./c(s(j,:)))+2*Pr)./(2.*c.*sum(1./c(s(j,:))))-b./(2.*c));


(( setdiff( S{i}(j,:) ,aa(z یعنی s-i
و S , v هم که به عنوان آرگومان تابع دادیم دقیقا همون S و v هست که می خواهیم در داخل تابع از اون استفاده کنیم

rahnema1
یک شنبه 29 تیر 1393, 14:44 عصر
ظاهرن شما دارین از نتایج به صورت سوال میرسین. درسته؟ ما که از ابتدا Revenue نداریم که شما توی ورودی گذاشتین! یا من بد متوجه شدم؟

شما می گی چیکار کنیم P را از کجا بیاریم؟ از مساحت زیر منحنی؟

coronaa
یک شنبه 29 تیر 1393, 14:49 عصر
مرسی. جواب داد. فقط من هنوز نمیدونم برای چی اینو استفاده میکنین!

Revenue=[239657.2 67923.1 22466.4].*1000;
Wheeling=[9077.9 2358.4 739].*1000;
P=Revenue./ro;

اینا رو که ما از قبل نمیدونیم چنده!؟

rahnema1
یک شنبه 29 تیر 1393, 14:55 عصر
مرسی. جواب داد. فقط من هنوز نمیدونم برای چی اینو استفاده میکنین!

Revenue=[239657.2 67923.1 22466.4].*1000;
Wheeling=[9077.9 2358.4 739].*1000;
P=Revenue./ro;

اینا رو که ما از قبل نمیدونیم چنده!؟

حالا weeling که الکیه ولی P را شما چه راهی پیشنهاد می کنید برای بدست آوردنش؟ هر راهی شما بگید انجام می دیم ( مثل مساحت زیر منحنی یا ...)

coronaa
یک شنبه 29 تیر 1393, 14:58 عصر
الآن با همون P که قبلن من بصورت زمانبندی گذاشتم جواب نمیده؟
اگه نه که بذارید من بیشتر مطالعه کنم تا سر در بیارم!

coronaa
یک شنبه 29 تیر 1393, 15:00 عصر
الآن با همون P که قبلن من بصورت زمانبندی گذاشتم جواب نمیده؟
اگه نه که بذارید من بیشتر مطالعه کنم تا سر در بیارم!

تست کردم. جواب نداد!

coronaa
یک شنبه 29 تیر 1393, 15:08 عصر
نتایج نشون میده pi (کوچیک) با توجه به weeling بدست اومده درسته. ولی بقول شما تابع هزینه اشتباه در میآد!

rahnema1
یک شنبه 29 تیر 1393, 15:11 عصر
نتایج نشون میده pi (کوچیک) با توجه به weeling بدست اومده درسته. ولی بقول شما تابع هزینه اشتباه در میآد!

گفتم که weeling را همین طور گذاشتم در کد تاثیری نداره
از Revenue استفاده شده

coronaa
یک شنبه 29 تیر 1393, 15:17 عصر
گفتم که weeling را همین طور گذاشتم در کد تاثیری نداره
از Revenue استفاده شده
منظورم اینه :
Weel(k)=sum(omega*pi(s(j,:)));

اینجا weeling درست بدست میاد. پس نشون میده که pi درست محاسبه میشه.
پس الآن فقط میمونه نحوه ی محاسبه ی P (بزرگ) ؟

rahnema1
یک شنبه 29 تیر 1393, 15:21 عصر
P بزرگ فکر کنم باید در ورودی مشخص باشه حالا اگه بتونی به صاحب مقاله یه ایمیل بزن بگو P را چرا در مقاله نذاشتی.

coronaa
یک شنبه 29 تیر 1393, 15:27 عصر
P بزرگ فکر کنم باید در ورودی مشخص باشه حالا اگه بتونی به صاحب مقاله یه ایمیل بزن بگو P را چرا در مقاله نذاشتی.
اوکی. حالا بیشتر مطالعه میکنم تا متوجه بشم.
ممنونم. کمک خیلی بزرگی کردی.
امشب حتمن براتون دعا میکنم :) :لبخندساده:

coronaa
دوشنبه 30 تیر 1393, 09:54 صبح
اگه بخوایم مقدار p1 و p3 رو توی متلب ببینیم چی باید بزنیم؟

rahnema1
دوشنبه 30 تیر 1393, 10:11 صبح
اگه بخوایم مقدار p1 و p3 رو توی متلب ببینیم چی باید بزنیم؟

pii یک سلوله که داخلش pi ها قرار گرفته
http://www.sharefile.ir/uploads/1405931395.zip


pii =
{
[1,1] = 1.8156e+004
[1,2] = 4716.9
[1,3] = 1478.1
[1,4] =

9.8204e+003 1.3052e+004

[1,5] =

5.3175e+003 1.4316e+004

[1,6] =

2047.5 4147.5

[1,7] =

4.8494e+003 6.4454e+003 1.3056e+004

}

coronaa
دوشنبه 30 تیر 1393, 10:33 صبح
این مربوط به مقدار p(1,3) هست
[1,5] =

5.3175e+003 1.4316e+004

ولی با محاسبه دستی متفاوته

rahnema1
دوشنبه 30 تیر 1393, 10:57 صبح
این مربوط به مقدار p(1,3) هست
[1,5] =

5.3175e+003 1.4316e+004

ولی با محاسبه دستی متفاوته

این محاسبه p1

b(1)/c(1) + b(3)/c(3) + 2*(P(1)+P(3)) / (2*c(1)*(1/c(1)+1/c(3))) - b(1)/(2*c(3))

coronaa
دوشنبه 30 تیر 1393, 11:08 صبح
فایلی که برای شما فرستادم رو دیدید؟ بصورت دستی حل کردم. یعنی اشتباه حل کردم؟

rahnema1
دوشنبه 30 تیر 1393, 11:14 صبح
316 که مربوط به c2 میشه

coronaa
دوشنبه 30 تیر 1393, 11:23 صبح
خب این 316 زیاد هم تاثیر نداره. بشتر 420 که زیر کسر قرار میگیره تاثیر دار با Pr
جوابش زیاد تفاوت نمیکنه

coronaa
دوشنبه 30 تیر 1393, 11:27 صبح
خب این 316 زیاد هم تاثیر نداره. بشتر 420 که زیر کسر قرار میگیره تاثیر دار با Pr
جوابش زیاد تفاوت نمیکنه
مهندس حل شد. اشتباه از من بود.
ببخشید.

coronaa
دوشنبه 30 تیر 1393, 11:28 صبح
مشکل تابع هزینه رو متوجه نشدین که از کجاست؟

rahnema1
دوشنبه 30 تیر 1393, 11:33 صبح
مشکل تابع هزینه رو متوجه نشدین که از کجاست؟

نه متوجه نشدم شاید از ضرایب a باشه

coronaa
دوشنبه 30 تیر 1393, 11:46 صبح
نه متوجه نشدم شاید از ضرایب a باشه

من تازه متوجه شدم جای a و aa رو عوض کردی!
ضرایب a,b,c که همش داخل مقاله هست. دست خودمون که نیست بگیم اشتباه گذاشتیم.

coronaa
سه شنبه 31 تیر 1393, 11:15 صبح
مهندس میشه توضیح بدی که تابع IndexV چطوری عمل میکنه؟ممنونم.

rahnema1
سه شنبه 31 تیر 1393, 13:09 عصر
مهندس میشه توضیح بدی که تابع IndexV چطوری عمل میکنه؟ممنونم.

در ابتدا اگه مجموعه تهی باشه صفر بر می گردونه
سپس در S می گردیم اگر تعداد اعضای s کمتر از از اون Smimi بود همین طور شمارش می کنیم تا برسیم به جایی که تعداد اعضای S با Smimi برابر باشه با استفاده از ismember عضوی از S که با Smini برابره پیدا کرده با شماره های اندکس قبلی که جمع کرده ایم جمع می کنیم در نتیجه اندکس مورد نظر به دست می آید بعدش هم v متناظر با اون اندکس بدست میاریم

coronaa
سه شنبه 31 تیر 1393, 13:40 عصر
در ابتدا اگه مجموعه تهی باشه صفر بر می گردونه
سپس در S می گردیم اگر تعداد اعضای s کمتر از از اون Smimi بود همین طور شمارش می کنیم تا برسیم به جایی که تعداد اعضای S با Smimi برابر باشه با استفاده از ismember عضوی از S که با Smini برابره پیدا کرده با شماره های اندکس قبلی که جمع کرده ایم جمع می کنیم در نتیجه اندکس مورد نظر به دست می آید بعدش هم v متناظر با اون اندکس بدست میاریم
منظور از Smini چیه؟
و rows در این خط چیکار میکنه؟
[val,dx]=ismember(Smini, S{i},'rows');

rahnema1
سه شنبه 31 تیر 1393, 13:44 عصر
منظور از Smini چیه؟
و rows در این خط چیکار میکنه؟
[val,dx]=ismember(Smini, S{i},'rows');

smini همون s-i هست و rows باعث میشه مقایسه به جای اینکه عنصر به عنصر باشه، سطر به سطر باشه

coronaa
سه شنبه 31 تیر 1393, 19:10 عصر
مهندس ببخشید که من هی سوال می پرسم.منظور از [val,dx] چیه؟

rahnema1
سه شنبه 31 تیر 1393, 19:19 عصر
مهندس ببخشید که من هی سوال می پرسم.منظور از [val,dx] چیه؟

val که کاری باهاش نداریم اما dx شماره سطری هست که smini درسلول مورد نظر s پیدا میشه

coronaa
سه شنبه 31 تیر 1393, 19:36 عصر
ret رو بدست میاریم که چی بشه؟
چرا یه عدد اعشاریه؟
در ضمن، Smini رو که از قبل معرفی نکردی چطوری مساوی صفر قرار دادی؟ توی خط :
if (numel(Smini)==0)

rahnema1
سه شنبه 31 تیر 1393, 21:09 عصر
ret رو بدست میاریم که چی بشه؟
چرا یه عدد اعشاریه؟
در ضمن، Smini رو که از قبل معرفی نکردی چطوری مساوی صفر قرار دادی؟ توی خط :
if (numel(Smini)==0)

چرا ما تابع تعریف می کنیم؟
برای اینکه یک کار تکراری که چند بار می خواهید انجام بدیدم یک بار کد اون را بنویسیم و تنها با صدا زدن نام اون و ورد چند تا پارامتر اون کد ( یعنی تابع) را اجرا کنیم
وقتی وسط برنامه این تابع داره صدا زده میشه
indexV(setdiff( S{i}(j,:) ,a(z)),S,v)
سه تا آرگیومنت داره بهت وارد میشه که با کاما جاد شدند. اولین مورد یعنی
setdiff( S{i}(j,:) ,a(z))
همون Smini هست
دومین و سومین مورد هم اینجا نامهاشون با اسامی وافعی متغیرها یکی قرار داده شده در صورتی که می تونستیم یک اسم دیگه بذاریم مثلا تابع را به این صورت زیر تعریف می کردیم باز هم فرقی نمی کرد

function ret= indexV(Smini,SSS,vvv)
ret=0;
if (numel(Smini)==0)
return;
end
for i=1:numel(SSS)
if(size(SSS{i},2)<numel(Smini))
ret=ret+size(SSS{i},1);
else
[val,dx]=ismember(Smini, SSS{i},'rows');
ret=ret+dx;
break;
end

end
ret=vvv(ret);
end

واینکه چرا اعشاری هست ما در پایان نوشتیم
ret=v(ret);
تا قبل از این دستور معنای ret اندکسی از v بود که متناظر بود با s-i
وقتی که این دستور را زدیم یعنی اون V با این اندکس را استخراج کن و دوباره اون را به جای ret بذار. دراین حالت ret دیگه اندکس نیست بلکه v مورد نظر هست

coronaa
سه شنبه 31 تیر 1393, 21:20 عصر
خدا عمرت بده. همون اول اینطوری توضیح میدادی :لبخندساده:
توضیحت عالی بود. ممنونم.

coronaa
چهارشنبه 01 مرداد 1393, 11:07 صبح
مهندس میشه بگی هر یک از حلقه ها چیکار میکنن؟
for i=1:numel(S)
for j=1:size(S{i},1)
for z=1:numel(n)
if (ismember(n(z),S{i}(j,:)))
phi(z)=phi(z)+factorial(numel(S{i}(j,:))-1).* factorial(numel(n) -numel(S{i} (j,:))).* (v(k)-indexV(setdiff( S{i}(j,:) ,n(z)),S,v))./ factorial(numel(n));
end
end
k=k+1;
end
end

rahnema1
چهارشنبه 01 مرداد 1393, 11:37 صبح
ُS یک سلوله با 3 تا خونه که داخل هر خونه هم یک ماتریس قرار داره (اگه چاپ کنی معلوم میشه)
دو تا for اولی واسه پیمایش S هست
for سومی هم واسه پیمایش phi هست چون phi 3 تا خونه داره

coronaa
پنج شنبه 02 مرداد 1393, 15:22 عصر
این معادلات جواب ندارن یا دستورش اشتباهه؟
h=solve('x1+x2=39815.1','x1+x3=35644.2','x2+x3=124 49.0','x1+x2+x3=53413.2')
h=[h.x1 h.x2 h.x3]

rahnema1
پنج شنبه 02 مرداد 1393, 18:34 عصر
این معادلات جواب ندارن یا دستورش اشتباهه؟
h=solve('x1+x2=39815.1','x1+x3=35644.2','x2+x3=124 49.0','x1+x2+x3=53413.2')
h=[h.x1 h.x2 h.x3]

میگم می خواهی nucleolus را حساب کنی؟

coronaa
پنج شنبه 02 مرداد 1393, 18:42 عصر
نه. بخش 3.2 (هسته)
معادلات 15 تا 18

rahnema1
پنج شنبه 02 مرداد 1393, 20:23 عصر
توی این سایت یه سری فایل زیپ مخصوص تئوری بازی ها در متلب هست که shapely و core و nucleolus و چیزهای مختلف را حساب می کنه دیگه فکر کنم دردسر نداشته باشه
http://webs.uvigo.es/mmiras/TUGlab

coronaa
پنج شنبه 02 مرداد 1393, 22:45 عصر
توی این سایت یه سری فایل زیپ مخصوص تئوری بازی ها در متلب هست که shapely و core و nucleolus و چیزهای مختلف را حساب می کنه دیگه فکر کنم دردسر نداشته باشه
http://webs.uvigo.es/mmiras/TUGlab
ممنونم. این خیلی عالیه
phi رو با مقداری که خودمون بدست آوریم تست کردم. درست جواب داد. ولی سر هم کردنش سخته.
بعضی فایلهاش اسپانیاییه. ولی راهنمای اصلیش انگلیسیه. فعلن دارم کار میکنم.
مرسی

coronaa
جمعه 03 مرداد 1393, 09:46 صبح
مهندس این برای قسمت nucleolus خطا میده بصورت زیر :
??? Undefined function or method 'colmmd' for input arguments of
type 'double'.
مفهومش چیه؟ یعنی فانکشن colmmd رو نمیشناسه؟ توی اسکریپتاش پیداش نکردم!

rahnema1
جمعه 03 مرداد 1393, 10:12 صبح
مهندس این برای قسمت nucleolus خطا میده بصورت زیر :
??? Undefined function or method 'colmmd' for input arguments of
type 'double'.
مفهومش چیه؟ یعنی فانکشن colmmd رو نمیشناسه؟ توی اسکریپتاش پیداش نکردم!

این یک دستور در نسخه های قدیمی متلب هست ( توی یک سایت توضیح داده بود) این را بذاری درست میشه
colmmd=@(xxx) colamd(xxx);

coronaa
جمعه 03 مرداد 1393, 10:28 صبح
کجای برنامه باید بذارم؟

coronaa
جمعه 03 مرداد 1393, 10:32 صبح
کجای برنامه باید بذارم؟
آقا حل شد. ممنونم.

coronaa
جمعه 03 مرداد 1393, 10:36 صبح
چطوری یه دستوری که معرفی نشده رو باید معرفی کرد مثل همین؟
قبلنم چند بار انجام داده بودی!

rahnema1
جمعه 03 مرداد 1393, 10:48 صبح
یک روش ساده همین روشی هست که گذاشتم اینجا xxx یعنی پارامتر ورودی تابع. ممکنه تابع چند تا ورودی داشته باشه که ما هم می تونیم چند تا بدیم مثل xxx,yyy
یک روش دیگه اینه که ما یک تابع بنویسیم با نام جدید و داخل اون از تابع استفاده کنیم

function ret=colmmd(xxx)
ret=colamd(xxx);
end

function [a,b]=tabejadia(x,y)
[a,b]=tabeghadim(x,y);
end

coronaa
جمعه 03 مرداد 1393, 19:06 عصر
آقای من هنوز توی محاسبه تابع هزینه مشکلم بر طرف نشد. گفته بودی که شاید ضرایب a مشکل داشته باشه. بررسی کردم دیدم زیاد فرقی نمیکنه . چون اعداد خیلی کوچیکی هستن.
خروجی pi ها رو که دیدم، دیدم p1,p2,p3 با P1,P2,P3 (بزرگ) برابرند!
راه حلی ندارین؟ کد مشکل نداره؟

rahnema1
جمعه 03 مرداد 1393, 19:16 عصر
p های کوچیک و بزرگ که باید باهم برابرا باشند. توی مقاله جدول 3 هم نگاه کنید برابرند
مشکل ما این بود که اولا P را نداده بود و ثانیا شاید ضرایب a مشکل داشته باشه از اون فایل ورد که واسه محاسبات بود چیزی دستتون نیومد؟

coronaa
جمعه 03 مرداد 1393, 19:26 عصر
نه متاسفانه. توی اون هم با محاسبات لاندا و اینا کار داره!
ضرایب a مشکلی نداره.
میگید که p بزرگ و کوچیک باید با هم برابر باشند، فقط برای سه تای اول دیگه!؟ چون بعد از ائتلاف دیگه pi ها متفاوت میشه. ضمن اینکه ما فقط سه تا مقدار برای P بزرگ داریم ولی 7 مقدار برای pi ها.

rahnema1
جمعه 03 مرداد 1393, 19:27 عصر
آره واسه همون سه تای اولی

coronaa
جمعه 03 مرداد 1393, 19:39 عصر
این تابع هزینه ای که از برنامه بدست میآد خیلی بزرگه که سود پایین میآد. تابع هزینه رو چطوری میشه بهینه کرد؟ برنامه ای وجود داره واسه optimization؟

rahnema1
جمعه 03 مرداد 1393, 21:06 عصر
این تابع هزینه ای که از برنامه بدست میآد خیلی بزرگه که سود پایین میآد. تابع هزینه رو چطوری میشه بهینه کرد؟ برنامه ای وجود داره واسه optimization؟

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

coronaa
جمعه 03 مرداد 1393, 21:38 عصر
کدوم ورودیهامون درست نیس؟ همه درسته دیگه!

rahnema1
جمعه 03 مرداد 1393, 21:42 عصر
کدوم ورودیهامون درست نیس؟ همه درسته دیگه!

یا P ها درست نیست یا abc چون اینها را داخل فرمول ساده aP2+bP+c میذاریم جواب درست در نمیاد

coronaa
جمعه 03 مرداد 1393, 21:50 عصر
یا P ها درست نیست یا abc چون اینها را داخل فرمول ساده aP2+bP+c میذاریم جواب درست در نمیاد
برای P که همون مقدار جدول رو قرار میدیم که! (همون تقسیم Revenue بر ro). در ضمن برای تابع هزینه که از pi (کوچیک) استفاده میشه!
اگه واقعن این piها رو اشتباه بدست میاریم پس چرا weel درست بدست میاد؟
نمیشه در جدول (3) ، از سطر سوم به بعد pi رو مجهول قرار داد تا ببینیم مقدارش چنده؟

rahnema1
جمعه 03 مرداد 1393, 21:56 عصر
برای P که همون مقدار جدول رو قرار میدیم که! (همون تقسیم Revenue بر ro). در ضمن برای تابع هزینه که از pi (کوچیک) استفاده میشه!
اگه واقعن این piها رو اشتباه بدست میاریم پس چرا weel درست بدست میاد؟
نمیشه در جدول (3) ، از سطر سوم به بعد pi رو مجهول قرار داد تا ببینیم مقدارش چنده؟

اون سه تای اولی درست به دست بیاد بقیه اش صدقه سرمون . abc غلطه

coronaa
جمعه 03 مرداد 1393, 22:04 عصر
الآن به من بگو pi سه تای اولی ممکنه اشتباه بدست اومده باشه؟ اگه درست باشه که یعنی پارامترهای b,c درست هستن.
میمونه a که من یه بار توی تابع هزینه بجای p پارامتر a رو مجهول قرار دادم بعد دوباره با a جدید اجرا کردم دیدم باز نتایج اشتباهه!
بعد مقاله ای که توی این ژورنال با پابلیشر Elsevier چاپ شده میشه اشتباه داشته باشه؟

rahnema1
جمعه 03 مرداد 1393, 22:26 عصر
الآن به من بگو pi سه تای اولی ممکنه اشتباه بدست اومده باشه؟ اگه درست باشه که یعنی پارامترهای b,c درست هستن.
میمونه a که من یه بار توی تابع هزینه بجای p پارامتر a رو مجهول قرار دادم بعد دوباره با a جدید اجرا کردم دیدم باز نتایج اشتباهه!
بعد مقاله ای که توی این ژورنال با پابلیشر Elsevier چاپ شده میشه اشتباه داشته باشه؟

Elsevier که وحی منزل نیست اون مقاله قبلی که در مورد otsu بود مگه مشکل نداشت؟
این راببین اصلا b و c ساده میشن
http://www.sharefile.ir/uploads/1406323933.png

coronaa
جمعه 03 مرداد 1393, 22:43 عصر
این اثباتی که نشون دادی خیلی خوب بود. مرسی. وقتی خروجی pii رو توی برنامه هم می بینیم، مشاهده میشه که دقیقن همون Revenue تقسیم بر ro هست. (فقط برای سه تای اول اینطوریه)
کدوم مقاله رو میگی؟

rahnema1
جمعه 03 مرداد 1393, 22:46 عصر
این اثباتی که نشون دادی خیلی خوب بود. مرسی. وقتی خروجی pii رو توی برنامه هم می بینیم، مشاهده میشه که دقیقن همون Revenue تقسیم بر ro هست. (فقط برای سه تای اول اینطوریه)
کدوم مقاله رو میگی؟

مگه همون مقاله که در مورد تشخیص حرکت لب بود شما نفرستادی ؟

coronaa
جمعه 03 مرداد 1393, 22:59 عصر
مگه همون مقاله که در مورد تشخیص حرکت لب بود شما نفرستادی ؟
نه من نفرستادم!
پس شما الآن میگین ممکنه a,b,c اشتباه باشه؟
P که از روی Revenue/ro بدست اومد دیگه اشتباه نیست دیگه؟

rahnema1
جمعه 03 مرداد 1393, 23:08 عصر
نه من نفرستادم!
پس شما الآن میگین ممکنه a,b,c اشتباه باشه؟
P که از روی Revenue/ro بدست اومد دیگه اشتباه نیست دیگه؟

P که از روی revenu بدست اومده که مقادیر موجود در جدول گرد شده به خاطر همین نتایجی که ما در متلب به دست میاریم مخصوصا ردیف آخر مقداری با ردیف آخر جدول متفاوته

coronaa
یک شنبه 05 مرداد 1393, 17:49 عصر
سلام مهندس میشه ضرایب a,b,c رو توی تابع a*p^2+b*p+c=100 با برنامه خاصی بدست آورد؟ اگه p رو داشته باشیم!

coronaa
یک شنبه 05 مرداد 1393, 17:59 عصر
من در جدول (3)، برای تابع هزینه a رو مجهول قرار میدم ، a رو بدست میارم ولی با a=[.0009 .0022 .0024] متفاوته!
اینا بدست میاد :
a=[.005534 .00118279 .000008]
عجیب نیست؟

rahnema1
یک شنبه 05 مرداد 1393, 19:45 عصر
من فرض گرفتم b,c درست باشن. پس تصمیم گرفتم a ها را به دست بیارم که این شد نتیجه ولی نمیشه
http://www.sharefile.ir/uploads/1406517119.zip
ولی از نتیجه دوباره به abc برسیم و دوباره اونها را بذاریم تا نتیجه بدست بیاد چه فایده داره؟

coronaa
یک شنبه 05 مرداد 1393, 20:57 عصر
من فرض گرفتم b,c درست باشن. پس تصمیم گرفتم a ها را به دست بیارم که این شد نتیجه ولی نمیشه
http://www.sharefile.ir/uploads/1406517119.zip
ولی از نتیجه دوباره به abc برسیم و دوباره اونها را بذاریم تا نتیجه بدست بیاد چه فایده داره؟
sqp چیه ؟
??? Undefined function or method 'sqp' for input arguments of type
'function_handle'.

سوال : در جدول (3) در هر سطر، چرا مقدار p که از Revenue بدست میاد با مقدار p که از تابع هزینه بدست میاد یکی نیست؟ مگه نگفتیم توی سه تای اولی P,p با هم برابرند؟

rahnema1
یک شنبه 05 مرداد 1393, 21:39 عصر
sqp چیه ؟
??? Undefined function or method 'sqp' for input arguments of type
'function_handle'.

سوال : در جدول (3) در هر سطر، چرا مقدار p که از Revenue بدست میاد با مقدار p که از تابع هزینه بدست میاد یکی نیست؟ مگه نگفتیم توی سه تای اولی P,p با هم برابرند؟

توی برنامه خط آخر را با این عوض کن

[x,fval]=fminsearch (@pppz,[.0009 .0022 .0024]')

مقدار P به دست میاد از Rev نه p

coronaa
یک شنبه 05 مرداد 1393, 21:53 عصر
توی برنامه خط آخر را با این عوض کن

[x,fval]=fminsearch (@pppz,[.0009 .0022 .0024]')

مقدار P به دست میاد از Rev نه p
خب این منظورش الآن چیه ؟
x =

0.5974
1.2274
1.0865


fval =

4.9029e+003
ـــــــــــــــــــــــــ ـــــــــــــــــــــــــ ــــــــــ
خب توی سه سطر اول که مقدار P بزرگ و p کوچیک که باید شبیه هم باشه! فرقی نمیکنه!

rahnema1
یک شنبه 05 مرداد 1393, 21:59 عصر
خب این x ها همون سه مقدار a هست که اشتباهه
با نفهمیدم این کار چه فایده ای داره

coronaa
یک شنبه 05 مرداد 1393, 22:07 عصر
خب این x ها همون سه مقدار a هست که اشتباهه
با نفهمیدم این کار چه فایده ای داره
من که دقیقن توی برنامه متوجه نشدم که چیکار کردی ولی من هدفم این بود که با مقدار p بدست آمده از revenue که مسلماً باید با p تابع هزینه برابر باشه، بتونیم ضریب a رو بدست بیاریم ببینیم همونی هست که توی مقاله داده یا نه!
نظرت در مورد حرفی که زدم چیه؟ :
توی سه سطر اول که مقدار P بزرگ و p کوچیک که باید شبیه هم باشه! فرقی نمیکنه!

rahnema1
یک شنبه 05 مرداد 1393, 22:18 عصر
من که دقیقن توی برنامه متوجه نشدم که چیکار کردی ولی من هدفم این بود که با مقدار p بدست آمده از revenue که مسلماً باید با p تابع هزینه برابر باشه، بتونیم ضریب a رو بدست بیاریم ببینیم همونی هست که توی مقاله داده یا نه!
نظرت در مورد حرفی که زدم چیه؟ :
توی سه سطر اول که مقدار P بزرگ و p کوچیک که باید شبیه هم باشه! فرقی نمیکنه!

در سه تای اولی p با P برابره

coronaa
یک شنبه 05 مرداد 1393, 22:23 عصر
در سه تای اولی p با P برابره
پس با بدست آوردن p از revenue و قرار دادن اون در تابع هزینه و مجهول قرار دادن a میشه مقدار صحیح a رو بدست آورد؟
این برنامه هم همینکارو میکنه؟

rahnema1
یک شنبه 05 مرداد 1393, 22:29 عصر
بله مثلا می خواهیم این کار را بکنیم ولی اصولا چه فایده ای داره از جواب به سوال برسیم تا دو باره به جواب برسیم؟ یعنی چی آخه؟!

coronaa
یک شنبه 05 مرداد 1393, 22:36 عصر
بله مثلا می خواهیم این کار را بکنیم ولی اصولا چه فایده ای داره از جواب به سوال برسیم تا دو باره به جواب برسیم؟ یعنی چی آخه؟!
خب بالا گفتم دیگه. میخواستم ببینم همون مقدار a بدست میاد که توی مقاله هست یا خیر که دیدیم اشتباهه. ینی نمیتونیم نتیجه بگیریم که مقدار a داخل مقاله اشتباهه؟ من اینو میخواستم بفهمم!

rahnema1
یک شنبه 05 مرداد 1393, 22:42 عصر
خب بالا گفتم دیگه. میخواستم ببینم همون مقدار a بدست میاد که توی مقاله هست یا خیر که دیدیم اشتباهه. ینی نمیتونیم نتیجه بگیریم که مقدار a داخل مقاله اشتباهه؟ من اینو میخواستم بفهمم!

فکر می کنم وارد یک دور تسلسل باطل شدیم
ببین الان 9 تا مجهول ( a,b,c هر کدوم 3 تا) داریم و تعداد معلوماتمون کمه. به کجا می خواهیم برسیم؟

coronaa
یک شنبه 05 مرداد 1393, 22:49 عصر
من اصلن کاری به سطر دوم و سوم ندارم. فعلن میخوام همون I1 رو بررسی کنم تا ببینم مشکل من کجاست که تابع هزینه درست بدست نمیاد!
گفتیم توی این سطر باید P(بزرگ) و p(کوچیک) با هم برابر باشند که نیستن. این از مشکل اول!
چون P که از revenue بدست میاد با p که از تابع هزینه بدست میاد باید یکی باشه که نیست.
حالا اگه فرض کنیم ضریب a اشتباه هست، اگه pرو از روی revenue بدست بیاریم و بذاریم توی تابع هزینه و a رو بدست بیاریم باید مقدار صحیح a بدست بیاد.
با این تسلسل دیگه خودمم دارم دیوونه میشم!

rahnema1
یک شنبه 05 مرداد 1393, 23:07 عصر
من در جدول (3)، برای تابع هزینه a رو مجهول قرار میدم ، a رو بدست میارم ولی با a=[.0009 .0022 .0024] متفاوته!
اینا بدست میاد :
a=[.005534 .00118279 .000008]
عجیب نیست؟

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

coronaa
یک شنبه 05 مرداد 1393, 23:14 عصر
میشه بگید چه طور این کار را کردید؟ (کد متلب)
اون اشتباهه. این مقدار درسته :
a=[.000607 .000172 .000553]

کد :
a1=solve('1.8156*1.8156*10e8*a+1.8156*10e5+420=200 581*10e3')
a2=solve('1.8156*1.8156*10e8*a+1.8156*10e5+316=571 48.9*10e3')
a3=solve('1.8156*1.8156*10e8*a+1.8156*10e5+156=184 40*10e3')

coronaa
یک شنبه 05 مرداد 1393, 23:22 عصر
اون اشتباهه. این مقدار درسته :
a=[.000607 .000172 .000553]

کد :
a1=solve('1.8156*1.8156*10e8*a+1.8156*10e5+420=200 581*10e3')
a2=solve('1.8156*1.8156*10e8*a+1.8156*10e5+316=571 48.9*10e3')
a3=solve('1.8156*1.8156*10e8*a+1.8156*10e5+156=184 40*10e3')
آخ اشتباه شدم!

rahnema1
یک شنبه 05 مرداد 1393, 23:23 عصر
به نظر می رسه شما b و c را درست فرض کردی و با استفاده از اونها a را به دست آوردی در صورتی که b و c هم خودشون مشکل دارن

coronaa
یک شنبه 05 مرداد 1393, 23:24 عصر
من اینو بدست آوردم :
a=[.6079 2.5663 8.4345]

coronaa
یک شنبه 05 مرداد 1393, 23:31 عصر
این خط از برنامه چیکار میکنه؟
[x,fval]=fminsearch (@pppz,[.0009 .0022 .0024]')
و دستور fminsearch چیه؟

rahnema1
یک شنبه 05 مرداد 1393, 23:39 عصر
این خط از برنامه چیکار میکنه؟
[x,fval]=fminsearch (@pppz,[.0009 .0022 .0024]')
و دستور fminsearch چیه؟

من هم فرض کردم b و c درسته اما اشتباهه
این دستور برای پیدا کردن مینیمم یک تابع به کار میره
تابع مورد نظری که باید مینیمم اون بدست بیاد در واقع مقدار تابع هزینه ای که از محاسبات بدست اومده با مقدار واقعی را تفاضل به دست میاریو به توان 2 می رسونیم و با هم جمع می کنیم
ولی همون طور که گفتم 9 تا مجهول داریم این طور نمیشه

coronaa
چهارشنبه 08 مرداد 1393, 23:27 عصر
منحنی سطح زیر نمودار رو چطوری میشه بدست آورد؟
حالا هر نموداری باشه. فقط میخوام یاد بگیرم.

rahnema1
چهارشنبه 08 مرداد 1393, 23:31 عصر
اگه نمودار به صورت عکس باشه، عکس را می بری داخل یه نرم افزار مثل paint یا فوتوشاپ. قسمتهای زیر منحنی را مثلا قرمز می کنی و بقیه را یک رنگ دیگه
بعد توی متلب یا هر جای دیگه هیستوگرام عکس را به دست میاری. تعداد پیکسلهای قرمز برابر خواهد بود با مساحت زیر منحنی . البته فراموش نکنید که ابعاد پیکسل را حتما در یک ضریب ضرب کنید تا به اندازه واحد محورهای منحنی بشه

coronaa
چهارشنبه 08 مرداد 1393, 23:54 عصر
اگه نمودار به صورت عکس باشه، عکس را می بری داخل یه نرم افزار مثل paint یا فوتوشاپ. قسمتهای زیر منحنی را مثلا قرمز می کنی و بقیه را یک رنگ دیگه
بعد توی متلب یا هر جای دیگه هیستوگرام عکس را به دست میاری. تعداد پیکسلهای قرمز برابر خواهد بود با مساحت زیر منحنی . البته فراموش نکنید که ابعاد پیکسل را حتما در یک ضریب ضرب کنید تا به اندازه واحد محورهای منحنی بشه
پردازش تصویر کار نکردم. تعداد پیکسل عکس چطوری بدست میاد؟
دستورش چیه؟

rahnema1
پنج شنبه 09 مرداد 1393, 20:22 عصر
این یک نمونه برنامه
ضریب طول و عرض هم میاد مقیاس عکس را با نمودار متناسب می کنه
http://www.sharefile.ir/uploads/1406847690.zip

coronaa
پنج شنبه 09 مرداد 1393, 22:31 عصر
این یک نمونه برنامه
ضریب طول و عرض هم میاد مقیاس عکس را با نمودار متناسب می کنه
http://www.sharefile.ir/uploads/1406847690.zip
ممنونم. عالی بود.
من نمیخواستم فقط برنامه شو داشته باشم. میخواستم یاد بگیرم. الآن من متوجه نشدم ضریب طول و عرض از کجا اومد؟
این پیکسل رو مشخص میکنه؟
nemoodar2(:,:,1)
چطوری تشخیص میده 1 برای قرمزه یا 2 برای سبز؟
چرا مساحت قسمت های رنگی رو که جدا حساب میکنه بصورت ماتریسی نشون میده؟

coronaa
پنج شنبه 09 مرداد 1393, 22:35 عصر
میشه یکمی روی این تصویر کار کنیم تا من مقدمات پردازش تصویر هم یاد بگیرم؟
چطوری میشه فهمید از نقطه ی ماکزیمم نمودار اصلی تا محور افقی چند سانتی متر هست؟
یا میشه تشخیص داد معادله ی این نمودار چیه؟

rahnema1
جمعه 10 مرداد 1393, 07:42 صبح
پردازش تصویر که نمیخواد. توی فوتو شاپ یا یه چیز دیگه مثلا اندازه بگیر چند تا پیکسل از صفر تا 1600 هست بعد 1600 را بخش بر تعداد پیکسل کن
برای طول هم همین طور 24 را تقسیم بر تعداد پیکسل می کنیم به همین سادگی
اون کد یه اشکال داشت

zaribetool=4.3360;
zaribearz=0.063830;

nemoodar2=imread('nemood2.bmp');
masahateghermez=sum(nemoodar2(:,:,1)(:))*zaribetoo l*zaribearz
masahatesabz=sum(nemoodar2(:,:,2)(:))*zaribetool*z aribearz
masahateabi=sum(nemoodar2(:,:,3)(:))*zaribetool*za ribearz
masahatekol=sum(nemoodar2(:))*zaribetool*zaribearz

اولی قرمز دومی سبز و سومی هم آبی

coronaa
جمعه 10 مرداد 1393, 09:16 صبح
از توی متلب نمیشه تعداد پیکسل عکس رو بدست آورد؟

یه پیغام خطا هم میده :
??? Error: File: nemood2.m Line: 5 Column: 21
()-indexing must appear last in an index expression.

rahnema1
جمعه 10 مرداد 1393, 10:41 صبح
از توی متلب نمیشه تعداد پیکسل عکس رو بدست آورد؟
توی متلب نمیدونم

masahateghermez= sum(sum(nemoodar2(:,:,1)))* zaribetool*zaribearz
masahatesabz= sum(sum(nemoodar2(:,:,2)))* zaribetool*zaribearz
masahateabi= sum(sum(nemoodar2(:,:,3)))* zaribetool*zaribearz

coronaa
جمعه 10 مرداد 1393, 11:04 صبح
توی متلب نمیدونم

masahateghermez= sum(sum(nemoodar2(:,:,1)))* zaribetool*zaribearz
masahatesabz= sum(sum(nemoodar2(:,:,2)))* zaribetool*zaribearz
masahateabi= sum(sum(nemoodar2(:,:,3)))* zaribetool*zaribearz


شما توی octave جواب میگیری؟
پیغام :
??? Subscript indices must either be real positive integers or
logicals.

Error in ==> nemood2 at 7
masahateghermez= sum(sum(nemoodar2(:,:,1)))* zaribetool*zaribearz

rahnema1
جمعه 10 مرداد 1393, 22:31 عصر
شما توی octave جواب میگیری؟
پیغام :
??? Subscript indices must either be real positive integers or
logicals.

Error in ==> nemood2 at 7
masahateghermez= sum(sum(nemoodar2(:,:,1)))* zaribetool*zaribearz

توی اکتاو که من کار می کنم یک ماتریس سه بعدی دارم که می خوام مجموع مقادیر موجود در هر بعدش را بدست بیارم. توی اکتاو اینجور میشه باید متلب هم همین طور باشه

coronaa
جمعه 10 مرداد 1393, 22:56 عصر
این خط خطا میده :
Gene(k)+=sum(aa(s(j,:)).*(pi(s(j,:)).^2)+b(s(j,:)) .*pi(s(j,:))+c(s(j,:)));

پیغام :
??? Error: File: sets10.m
The expression to the left of the equals sign is not a valid target
for an assignment.
منظورت از += چیه؟

rahnema1
جمعه 10 مرداد 1393, 22:59 عصر
http://www.sharefile.ir/uploads/1406987744.zip

coronaa
جمعه 10 مرداد 1393, 23:07 عصر
این خط خطا میده :
I=imread('nemood3.bmp')(:,:,1);

پیغام :
??? Error: File: sets11.m
()-indexing must appear last in an index expression.
نمودار3 همون رنگیه هست؟

rahnema1
جمعه 10 مرداد 1393, 23:09 عصر
به جای اون خط این دو تا را بذار ( متلب شما قدیمیه)

I=imread('nemood3.bmp');
I=I(:,:,1);

coronaa
جمعه 10 مرداد 1393, 23:13 عصر
به جای اون خط این دو تا را بذار ( متلب شما قدیمیه)

I=imread('nemood3.bmp');
I=I(:,:,1);


ans =

431.6148 137.2873 57.2829 -894.5778 -326.6813 -230.8940

??? Subscript indices must either be real positive integers or
logicals.

Error in ==> sets11 at 26
xha=sum(I);

rahnema1
جمعه 10 مرداد 1393, 23:18 عصر
ببین متلب شما قدیمیه
دستور sum باید مجموع هر ستون را پیدا کنه

coronaa
جمعه 10 مرداد 1393, 23:20 عصر
شما میگین I رو جمع بزن. سایز I به این صورته :
ans =

447 499
درسته؟ اینطوری میتونه جمع بزنه؟

coronaa
جمعه 10 مرداد 1393, 23:24 عصر
همینطوری یه مثال فرض زدم و ماتریس رو جمع نکرد!
>> w=[1 2 3;4 5 6;7 8 9]

w =

1 2 3
4 5 6
7 8 9

>> sum(w)
??? Index exceeds matrix dimensions.

rahnema1
جمعه 10 مرداد 1393, 23:50 عصر
hdk vh hljphk ;k
sum(I,1)

coronaa
جمعه 10 مرداد 1393, 23:55 عصر
hdk vh hljphk ;k
sum(I,1)
باز همون پیغام قبلی رو میده.
nemood3 کدوم عکسه؟ رنگی یا اصلی؟

coronaa
شنبه 11 مرداد 1393, 00:13 صبح
مثل این فایل انجام میدم ولی نمیشه!http://uplood.ir/41x3

coronaa
شنبه 11 مرداد 1393, 00:18 صبح
آقا من معذرت میخوام. سیستمم قاطی کرده بود.
متلب رو دوباره بستم و باز کردم درست شد.
ببخشید.
الآن جواب داد.

rahnema1
شنبه 11 مرداد 1393, 00:18 صبح
ببخشید تصویر یادم رفته بود
http://www.sharefile.ir/uploads/1406960989.zip

coronaa
شنبه 11 مرداد 1393, 00:22 صبح
ولی خب برنامه قبلی که جواب بهتری میده.

coronaa
یک شنبه 12 مرداد 1393, 17:41 عصر
مهندس یه مشکلی پیش اومد!
این کدی که شما برای فی نوشتین برای هر تعداد ائتلاف جواب میده و این خیلی خوبه. ولی اون برنامه های آماده که از سایت گرفتم فقط برای ائتلاف های 3 تایی و 4 تایی جواب میده.
میشه داخلش رو دستکاری کرد که واسه هر تعداد جواب بده؟

rahnema1
یک شنبه 12 مرداد 1393, 19:12 عصر
مهندس یه مشکلی پیش اومد!
این کدی که شما برای فی نوشتین برای هر تعداد ائتلاف جواب میده و این خیلی خوبه. ولی اون برنامه های آماده که از سایت گرفتم فقط برای ائتلاف های 3 تایی و 4 تایی جواب میده.
میشه داخلش رو دستکاری کرد که واسه هر تعداد جواب بده؟

یه نگاهی به کد انداختم
متاسفانه طوری کد را نوشته که فقط به درد همین چند گزینه می خوره یعنی اومده تک تک مقادیر را جدا جدا حساب کرده بدون اینکه بخواد مثلا از حلقه یا تابع و امثال اینها استفاده کنه محاسبه با دست را توی متلب قرار داده
درست کردنش فکر کنم دردسر زیادی داشته باشه ضمن اینکه اصلا توی اکتاو اون nucleolus را اجرا کردم و تعدادی تابع را نمیشناخت و با متلب فرق می کرد

coronaa
یک شنبه 12 مرداد 1393, 21:29 عصر
مهندس من یه قسمت برنامه شرطی گذاشتم. میخوام بگم اگه این مقدار بود این عمل انجام بشه وگرنه دوباره سوال بپرس(یعنی بیاد اول برنامه).
باید return بذارم؟ و کجای برنامه باید بذارم؟

rahnema1
یک شنبه 12 مرداد 1393, 21:55 عصر
مهندس من یه قسمت برنامه شرطی گذاشتم. میخوام بگم اگه این مقدار بود این عمل انجام بشه وگرنه دوباره سوال بپرس(یعنی بیاد اول برنامه).
باید return بذارم؟ و کجای برنامه باید بذارم؟

شما واسه این کار می تونید از حلقه مثل while استفاده کنید

coronaa
یک شنبه 12 مرداد 1393, 22:45 عصر
شما واسه این کار می تونید از حلقه مثل while استفاده کنید
یعنی ifها رو بردارم بجاش while بذارم؟

rahnema1
دوشنبه 13 مرداد 1393, 09:29 صبح
یعنی ifها رو بردارم بجاش while بذارم؟

چون می خواهی بر گردی اول همه کد را داخل while بذار

coronaa
جمعه 17 مرداد 1393, 15:02 عصر
توی یه برنامه ای برای این عبارت خطا میده. دلیلش چیه؟
[~, n]=log2(N);

روی علامت ~ خطا میده. متلب نمیشناستش؟

rahnema1
شنبه 18 مرداد 1393, 05:53 صبح
توی یه برنامه ای برای این عبارت خطا میده. دلیلش چیه؟
[~, n]=log2(N);

روی علامت ~ خطا میده. متلب نمیشناستش؟

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

coronaa
شنبه 18 مرداد 1393, 09:32 صبح
فکرکنم به خاطر اینه که نسخه متلب شما پایینه. یه ورزن جدیدتر احتنالا درست کار کنه

بابت اون لینکها ممنونم. راستش همین سوال منم از همون برنامه های سایت بود که خودم قبلن دانلود کرده بودم که چنین مشکلی وجود داره.
شما قبلن این کد رو برای من نوشته بودید و علامت ~ داشت که بعداً تغییر دادین درست شد. نمیشه اینو هم تغییر داد؟
کد قبلی :
a=rand(70,12);

[~,i1,~]=unique(a(:,1:7),'rows');
[~,i2,~]=unique(a(:,8:12),'rows');
i3=intersect(i1,i2);
i4=i3(randperm(35));

b=a(i4,1:7);
c=a(i4,8:12);

کد اصلاح شده :
a=rand(70,12);

i0=randperm(12);
[ii,i1,jj]=unique(a(:,i0(1:7)),'rows');
[ii,i2,jj]=unique(a(:,i0(8:12)),'rows');
i3=intersect(i1,i2);
i4=randperm(35);
i5=i3(i4);

b=a(i5,i0(1:7));
c=a(i5,i0(8:12));
البته جدا از همه ی این کارها، فکر کنم این فانکشن ها هم برای حداکثر 4 بازیکن باشه!

rahnema1
شنبه 18 مرداد 1393, 11:58 صبح
بابت اون لینکها ممنونم. راستش همین سوال منم از همون برنامه های سایت بود که خودم قبلن دانلود کرده بودم که چنین مشکلی وجود داره.
شما قبلن این کد رو برای من نوشته بودید و علامت ~ داشت که بعداً تغییر دادین درست شد. نمیشه اینو هم تغییر داد؟
کد قبلی :
a=rand(70,12);

[~,i1,~]=unique(a(:,1:7),'rows');
[~,i2,~]=unique(a(:,8:12),'rows');
i3=intersect(i1,i2);
i4=i3(randperm(35));

b=a(i4,1:7);
c=a(i4,8:12);

کد اصلاح شده :
a=rand(70,12);

i0=randperm(12);
[ii,i1,jj]=unique(a(:,i0(1:7)),'rows');
[ii,i2,jj]=unique(a(:,i0(8:12)),'rows');
i3=intersect(i1,i2);
i4=randperm(35);
i5=i3(i4);

b=a(i5,i0(1:7));
c=a(i5,i0(8:12));
البته جدا از همه ی این کارها، فکر کنم این فانکشن ها هم برای حداکثر 4 بازیکن باشه!

مثلا میشه به جای ~ یک متغیر الکی گذاشت
اون کد ها را امتحان نکردم ببینم واسه چند تا هست

coronaa
شنبه 18 مرداد 1393, 13:38 عصر
مرسی مهندس. فعلن بجای ~ متغیر دیگه ای گذاشتم و خطا نمیده. اونوخت تاثیری در نتیجه نداره؟
یه سوال دیگه :
متلب من تابع narginchk رو نمیشناسه. خودم اگه بخوام معرفیش کنم باید اینطوری بنویسم؟
narginchk=@(xxx) nargoutchk(xxx);

rahnema1
شنبه 18 مرداد 1393, 13:54 عصر
مرسی مهندس. فعلن بجای ~ متغیر دیگه ای گذاشتم و خطا نمیده. اونوخت تاثیری در نتیجه نداره؟
یه سوال دیگه :
متلب من تابع narginchk رو نمیشناسه. خودم اگه بخوام معرفیش کنم باید اینطوری بنویسم؟
narginchk=@(xxx) nargoutchk(xxx);

سوال اول: توی نتیجه تاثیر نداره
سوال دوم
این تابعیه که توی سورس اکتاو بود

function narginchk (minargs, maxargs)

if (nargin != 2)
print_usage;
elseif (!isnumeric (minargs) || !isscalar (minargs))
error ("minargs must be a numeric scalar");
elseif (!isnumeric (maxargs) || !isscalar (maxargs))
error ("maxargs must be a numeric scalar");
elseif (minargs > maxargs)
error ("minargs cannot be larger than maxargs")
end

args = evalin ("caller", "nargin;");

if (args < minargs)
error ("not enough input arguments");
elseif (args > maxargs)
error ("too many input arguments");
end

end

coronaa
شنبه 18 مرداد 1393, 14:00 عصر
این تابعیه که توی سورس اکتاو بود

function narginchk (minargs, maxargs)

if (nargin != 2)
print_usage;
elseif (!isnumeric (minargs) || !isscalar (minargs))
error ("minargs must be a numeric scalar");
elseif (!isnumeric (maxargs) || !isscalar (maxargs))
error ("maxargs must be a numeric scalar");
elseif (minargs > maxargs)
error ("minargs cannot be larger than maxargs")
end

args = evalin ("caller", "nargin;");

if (args < minargs)
error ("not enough input arguments");
elseif (args > maxargs)
error ("too many input arguments");
end

end

بعضی از کاراکترهای اوکتاو با متلب همخونی نداره مثل ! و ...
دستوری که خودم دادم ظاهرن میشناسه ولی الآن توی برنامه
narginchk(1,5)
داره که خطایی که الآن میده اینه که تعداد آرگومانهای ورودی خیلی زیاده.

rahnema1
شنبه 18 مرداد 1393, 14:02 عصر
تمام ! ها را با ~ ریپلیس کن

coronaa
شنبه 18 مرداد 1393, 14:02 عصر
من دارم تابع CorePlot رو بررسی میکنم. میتونی از همون فایل یه نگاه بندازی؟

rahnema1
شنبه 18 مرداد 1393, 14:09 عصر
بعضی دستورها توی اکتاو هم کار نمی کنه

coronaa
شنبه 18 مرداد 1393, 14:10 عصر
ممنونم. جایگزین کردم حل شد ولی انقدر توابع ناشناس وجود داره که حالا به یه دستور دیگه گیر میده :)

coronaa
شنبه 18 مرداد 1393, 14:12 عصر
روی این دستور :
v1(S)=v(S)-tol;
این خطا رو میده :
??? Error using ==> minus
Matrix dimensions must agree.

مهندس فکر کنم همینطوری رفع اشکال کنیم بتونیم جواب بگیریم!

rahnema1
شنبه 18 مرداد 1393, 19:05 عصر
روی این دستور :
v1(S)=v(S)-tol;
این خطا رو میده :
??? Error using ==> minus
Matrix dimensions must agree.

مهندس فکر کنم همینطوری رفع اشکال کنیم بتونیم جواب بگیریم!

نمیتونی شما یه سی دی از نسخه جدید متلب گیر بیاری؟

coronaa
شنبه 18 مرداد 1393, 20:33 عصر
نمیتونی شما یه سی دی از نسخه جدید متلب گیر بیاری؟دیگه عصبانی شدی؟ :لبخندساده::لبخندساده:من نسخه 2013 متلب رو دارم. اول اینکه سیستم من نمیکشه و دوم اینکه من همون کدهایی که گرفته بودم که اینجا یه سری توابع رو نمیشناخت روی سیستم دوستم که 2012 داشت هم تست کردم ولی نمیشناخت!برای من 2009 هست.

coronaa
شنبه 18 مرداد 1393, 21:08 عصر
حل شد .....................................

rahnema1
شنبه 18 مرداد 1393, 22:11 عصر
دیگه عصبانی شدی؟ :لبخندساده::لبخندساده:
من نسخه 2013 متلب رو دارم. اول اینکه سیستم من نمیکشه و دوم اینکه من همون کدهایی که از TUGlab گرفته بودم که اینجا یه سری توابع رو نمیشناخت روی سیستم دوستم که 2012 داشت هم تست کردم ولی نمیشناخت!
برای من 2009 هست.
من یه سوال دارم.
اون معادلات مقاله رو نمیشه نوشت؟ سخته؟

آخه مساله اینه که TUGlab برای متلبهای خیلی قدیمیه ولی اون جدیده برای متلبهای جدید هستش!!
معادلات را میشه نوشت احتیاج هست که مطالعه کنیم چند و چون کار را بفهمیم اگه کار بدون مطالعه پیش بره یه وقت وسط کار می فهمیم که داشتیم اشتباه می رفتیم

rahnema1
شنبه 18 مرداد 1393, 22:15 عصر
من یه بردار
p=[10 20 40 55 60 70 100]
دارم که میخوام اعداد زیر نصف بزرگترین عدد رو در یک گروه و بزرگتر از نصف بزرگترین عدد رو در گروه دیگه قرار بدم. کدش رو نوشتم ولی بلد نیستم هر گروه رو در یک ماتریس قرار بدم. چطوریه؟

بعد از این برنامه، حالا اگه بخوام با فازی این مقادیر رو گروهبندی کنم چطوریه؟


mx=max(p)/2;
g1=p(p<=mx);
g2=p(p >mx);


گروهبندی فازی واسه چی؟

coronaa
شنبه 18 مرداد 1393, 23:56 عصر
آخه مساله اینه که TUGlab برای متلبهای خیلی قدیمیه ولی اون جدیده برای متلبهای جدید هستش!!
معادلات را میشه نوشت احتیاج هست که مطالعه کنیم چند و چون کار را بفهمیم اگه کار بدون مطالعه پیش بره یه وقت وسط کار می فهمیم که داشتیم اشتباه می رفتیم
خب یکی از دلایلی هم که من سراغ این کدها کمتر رفتم این بود که احتمال دادم اینها هم برای حداکثر 4 تا بازیکن باشه. اگه واقعن برای n بازیکن هست خب یه سیستم گیر میارم که متلب جدید نصب باشه! این کدها برای n بازیکن هست؟
در مورد جمله ی دوم هم حق با شماست، بدون مطالعه نمیشه برای معادلات کد نویسی کرد. یعنی الآن شما دارید مطالعه می کنید؟

coronaa
یک شنبه 19 مرداد 1393, 00:06 صبح
mx=max(p)/2;
g1=p(p<=mx);
g2=p(p >mx);


مرسی. عالی بود.
حالا توی کدی که من نوشتم چطوری میشه هر گروه رو در یک ماتریس قرار داد. یا بطور کلی در یک حلقه for که چندتا مقادیر از یک معادله بدست میاد چطوری میشه بصورت برداری نشون داد؟


[VB]
گروهبندی فازی واسه چی؟

خب میخوام در محدوده ی 50 درصد بصورت قطعی تفکیک نکنه و مثلاً در رنج بین 45 تا 55 درصد تصمیم گیری بصورت فازی باشه!
میشه با روشهای FCM یا روش های طبقه بندی دیگه این کار رو انجام داد، با توجه به تعداد کم داده؟
حتماً باید داده ی آموزش داشته باشیم برای FCM؟
اولویت اصلی من با فازی هست. میشه انجام داد؟

rahnema1
یک شنبه 19 مرداد 1393, 11:34 صبح
این کدها برای n بازیکن هست؟
بله بر اساس pdf راهنمای برنامه تا 52 بازیکن (حداکثر ظرفیت متلب) ساپورت میکنه


. یعنی الآن شما دارید مطالعه می کنید؟

کلا مطالعه چیز خوبیه

rahnema1
یک شنبه 19 مرداد 1393, 11:35 صبح
مرسی. عالی بود.
حالا توی کدی که من نوشتم چطوری میشه هر گروه رو در یک ماتریس قرار داد. یا بطور کلی در یک حلقه for که چندتا مقادیر از یک معادله بدست میاد چطوری میشه بصورت برداری نشون داد؟



خب میخوام در محدوده ی 50 درصد بصورت قطعی تفکیک نکنه و مثلاً در رنج بین 45 تا 55 درصد تصمیم گیری بصورت فازی باشه!
میشه با روشهای FCM یا روش های طبقه بندی دیگه این کار رو انجام داد، با توجه به تعداد کم داده؟
حتماً باید داده ی آموزش داشته باشیم برای FCM؟
اولویت اصلی من با فازی هست. میشه انجام داد؟

فکر کنم fcm نیاز نباشه. تولباکس فازی داریم تو متلب که به صورت گرافیکی میشه انجام داد

coronaa
یک شنبه 19 مرداد 1393, 11:37 صبح
بله بر اساس pdf راهنمای برنامه تا 52 بازیکن (حداکثر ظرفیت متلب) ساپورت میکنه
کلا مطالعه چیز خوبیه
اگه اینطوری باشه که خیلی جلو میافتم!
روی چه نسخه ای از متلب کار میکنه؟
2012 کار میکنه؟

coronaa
یک شنبه 19 مرداد 1393, 11:42 صبح
فکر کنم fcm نیاز نباشه. تولباکس فازی داریم تو متلب که به صورت گرافیکی میشه انجام داد
با تولباکس انجام دادم ولی توابع عضویتی که انتخاب کردم طوری در اومد که خروجی نامطلوب میده. تغییرات هم که میدم خروجی NaN میده.
میخواستم با کد بنویسم که بهتر جواب بگیرم.

rahnema1
یک شنبه 19 مرداد 1393, 11:52 صبح
اگه اینطوری باشه که خیلی جلو میافتم!
روی چه نسخه ای از متلب کار میکنه؟
2012 کار میکنه؟

فکر کنم نسخه R2013a باشه حالا با 2012 هم امتحان کنید شاید جواب بده

coronaa
یک شنبه 19 مرداد 1393, 12:09 عصر
من میخوام فقط از فازی استفاده کنم که نیازی به دیتاست نباشه.

coronaa
یک شنبه 19 مرداد 1393, 12:22 عصر
داخل اون فولدری که کدهای آماده داره چندتا بخش داره. من باید با از توابع این فولدر استفاده کنم؟
بقیه واسه چیه؟

rahnema1
یک شنبه 19 مرداد 1393, 16:07 عصر
مهندس کد فازی آماده نداری که من بتونم باهاش کار کنم؟
سرچ کردم ولی معمولن بری طبقه بندی اعداد از فازی ترکیبی استفاده شده مثل ANFIS که اون هم باید داده های آموزش وجود داشته باشه!
من میخوام فقط از فازی استفاده کنم که نیازی به دیتاست نباشه.

بالاخره برام مشخص نشد چرا میخواهید این کار بکنید

rahnema1
یک شنبه 19 مرداد 1393, 16:08 عصر
داخل اون فولدری که کدهای آماده داره چندتا بخش داره. من باید با از توابع این فولدر استفاده کنم؟
بقیه واسه چیه؟
mat_tugames

طریق نصب در فایل readme گفته
To install the MatTuGames Toolbox, unzip the zip-file mat_tugV0d4.zip,
and place the folder containing the functions on a local hard drive or
a network drive accessible to your computer. In the next step rename
the folder mat_tugV0d4 to mat_tug before including the folder location
in the MATLAB path. To set the MATLAB path, start MATLAB and then
select the File/Set Path menu item. Then select Add Folder. Use the
navigation window to select the folder containing the functions. Click
OK and then click Save. The functions will then be ready for use within
MATLAB.

coronaa
یک شنبه 19 مرداد 1393, 17:26 عصر
بالاخره برام مشخص نشد چرا میخواهید این کار بکنید
خب میخوام کلاس بندی کنم دیگه!

coronaa
یک شنبه 19 مرداد 1393, 17:32 عصر
طریق نصب در فایل readme گفته
To install the MatTuGames Toolbox, unzip the zip-file mat_tugV0d4.zip,
and place the folder containing the functions on a local hard drive or
a network drive accessible to your computer. In the next step rename
the folder mat_tugV0d4 to mat_tug before including the folder location
in the MATLAB path. To set the MATLAB path, start MATLAB and then
select the File/Set Path menu item. Then select Add Folder. Use the
navigation window to select the folder containing the functions. Click
OK and then click Save. The functions will then be ready for use within
MATLAB.
راهنماش رو خونده بودم ولی همه جاش رو متوجه نشده بودم. من فقط مسیر فولدر mat_tugames رو به متلب معرفی کردم و بقیه فولدرها رو کار نداشتم.
الآن این میگه اسم فولدر اصلی mat_tugV0d4 رو به mat_tug تغییر بدم بعد در مسیر متلب قرار بدم؟

coronaa
یک شنبه 19 مرداد 1393, 17:39 عصر
آقای مهندس، من متلب 2013 رو روی یه سیستم دیگه نصب کردم و ظاهرن به همه ی فانکشن ها گیر نمیده. فقط بعضی از دستورات رو نمیشناسه.
دستور زیر رو اجرا کردم که یه خطایی داد :
crv=CoreVertices(bv,'float')
خطا :
Undefined function 'cddmex' for input arguments of type 'struct'.

Error in CddCoreQ (line 40)
کد برنامه این بوده :
IN=struct('obj',objective,'A',A1,'B',B1);
OUT = cddmex('solve_lp_DS',IN);
cddmex رو نمیشناسه یا آرگومانی که استفاده کرده؟

coronaa
یک شنبه 19 مرداد 1393, 18:03 عصر
xxxxxxxxxxx
یه سوال پرسیده بودم که حل شد :لبخندساده:

rahnema1
دوشنبه 20 مرداد 1393, 00:15 صبح
خب میخوام کلاس بندی کنم دیگه!
یه سری اعداد، توی دو گروه قرار بگیرن. مثل همون برنامه ی چند پست قبل ولی بصورت فازی.
مثلن انگار 20 تا دانشجو داری که رنج نمرات اونها بین صفر تا 100 هست. حالا میخوایم با فازی مشخص کنیم که اونهایی که زیر 50 هستن گروه 1 و اونهایی که بالای 50 هستن گروه 2 قرار بگیرن. فقط با این تفاوت که فازی میتونه نمره 48 یا 49 رو هم توی گروه 2 قرار بده تا مثلن مردود نشدن!
منظورم رو فهمیدین؟

توی اکتاو میشه اینجور نوشت. نمیدونم منظورتون همینه یا نه

p=1:100;
a = newfis ('sefroyek', 'sugeno', ...
'algebraic_product', 'algebraic_sum', ...
'min', 'max', 'wtaver');
a = addvar (a, 'input', 'P', [min(p) max(p)]);
a = addmf (a, 'input', 1, 'Low', 'trapmf', [min(p)-1 min(p) range(p)*0.45+min(p) range(p)*0.55+min(p)]);
a = addmf (a, 'input', 1, 'High', 'trapmf', [range(p)*0.45+min(p) range(p)*0.55+min(p) max(p) max(p)+1]);
a = addvar (a, 'output', 'sefroyek', [0 1]);
a = addmf (a, 'output', 1, 'Low', 'constant', 0);
a = addmf (a, 'output', 1, 'High', 'constant',1);
a = addrule (a, [1 1 1 1;2 2 1 1]);
evalfis([48],a);

rahnema1
دوشنبه 20 مرداد 1393, 00:19 صبح
آقای مهندس، من متلب 2013 رو روی یه سیستم دیگه نصب کردم و ظاهرن به همه ی فانکشن ها گیر نمیده. فقط بعضی از دستورات رو نمیشناسه.
دستور زیر رو اجرا کردم که یه خطایی داد :
crv=CoreVertices(bv,'float')
خطا :
Undefined function 'cddmex' for input arguments of type 'struct'.

Error in CddCoreQ (line 40)
کد برنامه این بوده :
IN=struct('obj',objective,'A',A1,'B',B1);
OUT = cddmex('solve_lp_DS',IN);
cddmex رو نمیشناسه یا آرگومانی که استفاده کرده؟

توی فایل readme یه چیزهایی در باره نصب cdd به همراه لینک اون گذاشته

coronaa
دوشنبه 20 مرداد 1393, 08:27 صبح
مرسی. این پیغام رو میداد :
Warning: Implication method should be "prod" for Sugeno systems.
> In evalfis at 54
In rahnemaFuzzy at 13
AND function 'algebraic_product' does not exist!
??? Error using ==> evalfismex
Exiting ...

Error in ==> evalfis at 84
[output,IRR,ORR,ARR] = evalfismex(input, fis, numofpoints);

Error in ==> rahnemaFuzzy at 13
evalfis([48],a)
که من به صورت زیر تغییر دادم درست شد :
a = newfis ('sefroyek', 'sugeno', ...
'min', 'max', ...
'min', 'max', 'wtaver');
توی Help متلب به این صورت بود :
Name = newsys
Type = mamdani
NumInputs = 0
InLabels =
NumOutputs = 0
OutLabels =
NumRules 0
AndMethod min
OrMethod max
ImpMethod min
AggMethod max
DefuzzMethod centroid
ولی فعلاً جواب دقیق نمیده :
evalfis([48 50],a)
جواب :
ans =

0.2475
0.4495
--------------------------------------
مهندس میشه شکل های توابع عضویت رو نشون بدی ببینیم چطوریه؟

coronaa
دوشنبه 20 مرداد 1393, 08:46 صبح
توی فایل readme یه چیزهایی در باره نصب cdd به همراه لینک اون گذاشته
مهندس شرمنده!
این لینک هایی که توی ReadMe گذاشته رو من دانلود میکنم فایل هاشو، ولی اصلاً متوجه نمیشم که کدوم رو باید کجا قرار بدم!
میشه یه کمکی بکنی؟

rahnema1
دوشنبه 20 مرداد 1393, 14:37 عصر
مهندس شرمنده!
این لینک هایی که توی ReadMe گذاشته رو من دانلود میکنم فایل هاشو، ولی اصلاً متوجه نمیشم که کدوم رو باید کجا قرار بدم!
میشه یه کمکی بکنی؟
http://control.ee.ethz.ch/~hybrid/cdd.php
http://cs.mcgill.ca/~fukuda/download/cdd/
همون لینک اولی یکی ازفایلهای زیپ را بگیر که داخلش تابع cddmex قرار داره

rahnema1
دوشنبه 20 مرداد 1393, 14:43 عصر
مرسی. این پیغام رو میداد :
Warning: Implication method should be "prod" for Sugeno systems.
> In evalfis at 54
In rahnemaFuzzy at 13
AND function 'algebraic_product' does not exist!
??? Error using ==> evalfismex
Exiting ...

Error in ==> evalfis at 84
[output,IRR,ORR,ARR] = evalfismex(input, fis, numofpoints);

Error in ==> rahnemaFuzzy at 13
evalfis([48],a)
که من به صورت زیر تغییر دادم درست شد :
a = newfis ('sefroyek', 'sugeno', ...
'min', 'max', ...
'min', 'max', 'wtaver');
توی Help متلب به این صورت بود :
Name = newsys
Type = mamdani
NumInputs = 0
InLabels =
NumOutputs = 0
OutLabels =
NumRules 0
AndMethod min
OrMethod max
ImpMethod min
AggMethod max
DefuzzMethod centroid
ولی فعلاً جواب دقیق نمیده :
evalfis([48 50],a)
جواب :
ans =

0.2475
0.4495
--------------------------------------
مهندس میشه شکل های توابع عضویت رو نشون بدی ببینیم چطوریه؟

فکر کنم اینجور باید تفسیر بشه اگه بالای نیم باشه 1 در غیر اینصورت صفر
اینم پلات

plotmf (a, 'input', 1);
plotmf (a, 'output', 1);

coronaa
دوشنبه 20 مرداد 1393, 14:55 عصر
فکر کنم اینجور باید تفسیر بشه اگه بالای نیم باشه 1 در غیر اینصورت صفر
اینم پلات

plotmf (a, 'input', 1);
plotmf (a, 'output', 1);

تفسیرتون درسته و منظور منم همینطوری بود.
ولی توی evalfis که چنین مقداری رو نمیده!
مثل همین مثالی که زدم. نمره 50 رو میده 0.4495

coronaa
دوشنبه 20 مرداد 1393, 14:57 عصر
توی راهنما که میگه یه چندتا فایل رو باید نصب کنی. اینا دیگه چیه؟

rahnema1
دوشنبه 20 مرداد 1393, 15:11 عصر
تفسیرتون درسته و منظور منم همینطوری بود.
ولی توی evalfis که چنین مقداری رو نمیده!
مثل همین مثالی که زدم. نمره 50 رو میده 0.4495

مثلا 50.5 را میده 0.5
بستگی به تابع عضویت هم داره که چی تعریف بشه

rahnema1
دوشنبه 20 مرداد 1393, 15:14 عصر
من همین کاری رو کردم. دانلود کردم که یه m-file وجود داره به نام cddmex
ولی توش کدنویسی نیست. توضیحاتی در مورد cddmex هست. یه سری دستور داره ولی همش بصورت کامنت هست!
توی راهنما که میگه یه چندتا فایل رو باید نصب کنی. اینا دیگه چیه؟

داخل cddmex چند تا کد بعنوان نمونه گذاشته امتحان کنید اجرا میشه؟

حالا با همین فایلها برنامه اجرا کنید فکر کنم دیگه چیزی لازم نباشه نصب بشه

coronaa
دوشنبه 20 مرداد 1393, 15:16 عصر
برای فازی این خطا رو هم میده :
No plots for Sugeno Output MFs

Error in ==> rahnemaFuzzy at 19
plotmf (a, 'output', 1);
وقتی به جای سوگنو از ممدانی استفاده میکنم متلب قاطی میکنه!
ظاهراً برای سوگنو خروجی پلات نمیکنه، چون در استنتاج نوع سوگنو توابع عضویت خروجی کاملاً ثابت و یا خطی هستن.

coronaa
دوشنبه 20 مرداد 1393, 15:26 عصر
داخل cddmex چند تا کد بعنوان نمونه گذاشته امتحان کنید اجرا میشه؟

حالا با همین فایلها برنامه اجرا کنید فکر کنم دیگه چیزی لازم نباشه نصب بشه
شما کدوم لینک و کدوم فایل رو میگید؟
اصلن مثالی نداره. میشه همون فایلی که دانلودش کردید رو اینجا بذارید منم دانلود کنم؟
مرسی

rahnema1
دوشنبه 20 مرداد 1393, 15:29 عصر
http://control.ee.ethz.ch/~hybrid/Downloads/cddmex.zip

coronaa
دوشنبه 20 مرداد 1393, 15:38 عصر
http://control.ee.ethz.ch/~hybrid/Downloads/cddmex.zip
توی سیستم من اینطوری نشون میده :
http://www.uplooder.net/img/image/62/a3685f7cb8a82c2f4b3f3e3d5491e0d3/cdmex-x-xx.jpg

اونی که متلب میشناسه همونطوری که گفتم فقط بصورت کامنت توضیحاتش رو آورده. انگار فانکشن نیست.
بقیه که ناشناسه! ظاهرن با C یا C++‎ نوشته شده.

rahnema1
دوشنبه 20 مرداد 1393, 15:40 عصر
داخل کامنت ها مثال هم هست کافیه کپی و پیست کنی

coronaa
دوشنبه 20 مرداد 1393, 15:44 عصر
داخل کامنت ها مثال هم هست کافیه کپی و پیست کنی
آها اینو قبلن امتحان کردم. جواب نداد.

rahnema1
دوشنبه 20 مرداد 1393, 15:51 عصر
اصل کار همون فایل dll هست که فایل m با اون ارتباط برقرار می کنه هر دو تا باید داخل یه فولدر باشن یا به مسیر جاری متلب اضافه بشن

coronaa
دوشنبه 20 مرداد 1393, 15:58 عصر
اصل کار همون فایل dll هست که فایل m با اون ارتباط برقرار می کنه هر دو تا باید داخل یه فولدر باشن یا به مسیر جاری متلب اضافه بشن
آقا مرسی.
:تشویق::تشویق::تشویق::تشویق:

coronaa
دوشنبه 20 مرداد 1393, 16:19 عصر
xxxxxxxxxxxxxxxxx

rahnema1
دوشنبه 20 مرداد 1393, 16:28 عصر
اندکس ها را اینجورا میشه استخراج کرد

k1=pp<0.5
k2=pp>=0.5

k11=find(pp<0.5)
k22=find(pp>=0.5)

coronaa
دوشنبه 20 مرداد 1393, 16:36 عصر
اندکس ها را اینجورا میشه استخراج کرد

k1=pp<0.5
k2=pp>=0.5

k11=find(pp<0.5)
k22=find(pp>=0.5)

ممنون. حل شد.
به این صورت نوشتم :
n=[10 20 30 40 44 45 46 60 70 80 49 51 48 50 90];
pp=evalfis(n,a) ;
Group1=n(pp<0.5)
Group2=n(pp>=0.5)

coronaa
دوشنبه 20 مرداد 1393, 16:45 عصر
ممنون. حل شد.
به این صورت نوشتم :
n=[10 20 30 40 44 45 46 60 70 80 49 51 48 50 90];
pp=evalfis(n,a) ;
Group1=n(pp<0.5)
Group2=n(pp>=0.5)
حالا اینا اگه نمرات 15 تا دانش آموز باشند و یه بردار 1 در 15 دیگه داشته باشیم که سن این دانش آموزان باشه.
وقتی که اینا بر اساس نمره گروه بندی میشن چطوری میشه اون بردار سن رو هم به ترتیب به گروه مربوطه منتقل کرد؟
منظورم این نیست که دوباره همین برنامه رو برای سن هم اجرا کنیم.
مثلن نمره ی دوازدهمین دانش آموز 51 هست و سنش 27 سال هست. وقتی که این دانش آموز توی گروه 2 قرار میگیره، به ترتیب سنش هم توی یه گروه 2 ولی از جنس سن قرار بگیره!
منظورم رو فهمیدین؟
مثلن سن دانش آموزان :
age=[20 25 30 27 28 30 40 20 23 24 25 27 31 32 38];

rahnema1
دوشنبه 20 مرداد 1393, 16:57 عصر
میشه یک متغیر جدید با چند تابع عضویت درست کرد

a = addvar (a, 'input', 'age', [0 100]);
a = addmf (a, 'input', 2, 'nobaveh', 'trapmf', [-1 0 5 7]);
a = addmf (a, 'input', 2, 'nonahal', 'trapmf', [5 7 9 11]);
a = addmf (a, 'input', 2, 'nojavan', 'trapmf', [9 11 15 17]);
a = addmf (a, 'input', 2, 'javan', 'trapmf', [15 17 35 40]);


البته قواعد هم باید طور دیگه ای بنویسیم
همه اینها توی مثالها و آموزشها هست

coronaa
دوشنبه 20 مرداد 1393, 17:07 عصر
میشه یک متغیر جدید با چند تابع عضویت درست کرد

a = addvar (a, 'input', 'age', [0 100]);
a = addmf (a, 'input', 2, 'nobaveh', 'trapmf', [-1 0 5 7]);
a = addmf (a, 'input', 2, 'nonahal', 'trapmf', [5 7 9 11]);
a = addmf (a, 'input', 2, 'nojavan', 'trapmf', [9 11 15 17]);
a = addmf (a, 'input', 2, 'javan', 'trapmf', [15 17 35 40]);


البته قواعد هم باید طور دیگه ای بنویسیم
همه اینها توی مثالها و آموزشها هست
نه منظورم رو متوجه نشدین!
نمیخوام سن رو هم بر اساس اعداد گروه بندی کنم. میخوام هر دانش آموزی که بر اساس نمره گروهبندی که شد ، مشخصاتش هم از جمله سن به همون گروه منتقل بشه و همچنینی به ترتیب.
به این صورت :
n=[10 20 30 40 44 45 46 60 70 80 49 51 48 50 90];
age=[20 25 30 27 28 30 40 20 23 24 25 27 31 32 38];

Group1 :
N1=[10 20 30 40 44 45 46 49 48 50]
Age1=[20 25 30 27 28 30 40 25 31]
Group2 :
N2=[60 70 80 51 90]
Age2=[20 23 24 27 38]

coronaa
دوشنبه 20 مرداد 1393, 17:11 عصر
اگه دقت بکنید سن ها گروهبندی نشدن. فقط مثلن دانش آموز دوازدهم که نمره آن 51 بود رفت گروه 2 ، باید مشخصاتش هم بره گروه 2
و ضمن اینکه الآن توی گروه دوم پنجمین درایه هست باید در Age2 هم پنجمین درایه باشه.

rahnema1
دوشنبه 20 مرداد 1393, 17:14 عصر
گفتم که با همون find اندکس ها را در میارید و به عناون هم اندکس gae و هم اندکس نمره قابل استفاده هست

coronaa
دوشنبه 20 مرداد 1393, 17:33 عصر
گفتم که با همون find اندکس ها را در میارید و به عناون هم اندکس gae و هم اندکس نمره قابل استفاده هست
تقریبن به هدفم نزدیک شدم ولی میخوام بجای اندکس ها خود مشخصات کنار هم قرار بگیرن.
از چه دستوری باید استفاده کنم؟

rahnema1
دوشنبه 20 مرداد 1393, 17:41 عصر
دوتا ماتریس را به هم بچسبون تا کنار همدیگه قرار بگیره

coronaa
دوشنبه 20 مرداد 1393, 17:47 عصر
شرمنده. متوجه نمیشم.
منظورم اینه که مثلن اندکس های K22 که بصورت
k22 =

8
9
10
12
15
هستن بجاش خود سن قرار بگیره یا خود نمره ها قرار بگیره. نمیخوام سن و نمره رو به هم بچسبونم تا توی یه ماتریس قرار بگیرن!