سلام
می خوام 1ماتریس تو متلب تعریف کنم که درایه هاش هر کدوم با 1فرمول محاسبه بشن و بعد جای اون درایه ها بشینن
چطور باید اینکار رو انجام بدم.لطفا راهنمایی کنید
سلام
می خوام 1ماتریس تو متلب تعریف کنم که درایه هاش هر کدوم با 1فرمول محاسبه بشن و بعد جای اون درایه ها بشینن
چطور باید اینکار رو انجام بدم.لطفا راهنمایی کنید
سلام
، شما می تونید با دستور eval یک رشته را اجرا کنید. لطفا دقیقا بگید چیکار می خواهید بکنید تا بتونیم بهتر جواب بدیم
می خوام 1ماتریس Dتعریف کنم که درایه هاش شرط زیر رو داشته باشن
((If i>=j dij=(-1)^j-i/r^j*((n,i)*(n-i,n-j
در غیر اینصورت dij=0
(n,i)ترکیب iاز nهستش
من با اعداد دلخواه ایجاد کردم اما به نظرتون اگه مثلا n-j از n-i بیشتر شد اشتباه نیست؟
D = zeros( 8, 3);
[r c] = size(D);
n = r * c;
[i j] = meshgrid(1:r, 1:c);
index = i >= j;
i = i(index);
j = j(index);
n = n * ones( size(j));
D(index)= (-1) .^ j - i ./ r .^ j .* arrayfun(@nchoosek,n,i) .* arrayfun(@nchoosek,n-i,n-j);
حق با شماست باید می نوشتم (n-i,j-i)
rیک عدد ثابت که تو ورودی میگیره و ماتریس n*nهستش
یه سری تغییرات دادم ولی فکر می کنم علامت بزرگترمساوی برعکس باید باشه
r = 5;
n = 5
D = zeros( n);
[i j] = meshgrid(1:n, 1:n);
index = i <= j;
i = i(index);
j = j(index);
n = repmat(n ,size(j));
D(index)= (-1) .^ j - i ./ r .^ j .* arrayfun(@nchoosek,n,i) .* arrayfun(@nchoosek,n-i,j - i);
درسته اما این چیزی که تو فرمول دارم.عکسش رو هم پیوست کردم
باز هم بر اسا فرمول یه اصلاح کردم ولی اگه i از j بزرگتر باشه جواب j-i منفی میشه و اشتباه در میاد فکر کنم علامت باید برعکس باشه که اشتباهی گذاشته
r = 5;
n = 5
D = zeros( n);
[i j] = meshgrid(1:n, 1:n);
index = i <= j;
i = i(index);
j = j(index);
n = repmat(n ,size(j));
D(index)= (-1) .^ (j - i) ./ r .^ j .* arrayfun(@nchoosek,n,i) .* arrayfun(@nchoosek,n-i,j - i);
دستتون درد نکنه.خیلی ممنون.لطف کردین