۱۳۹۴/۰۳/۰۸, ۰۹:۴۸ ق.ظ (آخرین تغییر در ارسال: ۱۳۹۴/۰۳/۰۹, ۰۵:۳۹ ب.ظ توسط admin.)
سلام
می خوام با متلب انتگرال بنویسیم که از صفر تا بی نهایت هست. با چه دستوری می توانم بنویسم؟؟
نسبت به h می خوام انتگرال بگیرم و مقدارش متغییر هست که hها نسبت بهم مستقل هستند. دستور جدا داره؟؟؟
می خواستم رابطه انتگرالم را بزارم ولی نتوانستم بنویسیم اینجا حتی عکسشم نتوانستم قرار بدم
سوال بعدی، کسی با تابع Meijer G کار کرده؟؟ چطور می توانم در متلب پیاده سازیش کنم؟؟؟؟ صفحه خاصی باید برم تا این تابع را تعریف و مقدار دهی کنم؟؟؟؟
۱۳۹۴/۰۳/۰۸, ۱۲:۲۱ ب.ظ (آخرین تغییر در ارسال: ۱۳۹۴/۰۳/۰۹, ۰۵:۴۲ ب.ظ توسط admin.)
سلام
کلید زیر را بخوانید برای انتگرال گیری بازه ای هستش که شاید کمکتون کنه کلید42 همچنین من جستجویی که کردم در اینترنت مطالب زیادی در مورد تابع meijerG در سایت های ایرانی پیدا نکردم ولی در یکی از انجمن های خارجی زبان یه کدی با این عنوان به چشمم خورد را میزارم شاید کمکتون کنه(که اومده تو 36 خط اول راجب عملکرد کدها توضیح مختصری داده)
فقط اجراش نکردم خودتون چک کنید
کد پیاچپی:
function y = MeijerG(a,b,z) % MeijerG % A wrapper for MATLAB symbolic library implementation of the 'MeijerG' G^{m,n}_{p,q}(...|z) function. % It uses Maple with MATLAB 2008a or earlier; muPad with later versions. % % Syntax : % MeijerG({[a_1,...a_n],[a_n+1,...a_p]},{[b_1,...b_m],[b_m+1,...b_q]},z) % Input arguments : % a - {[a_1,...a_n],[a_{n+1},...a_p]} % b - {[a_1,...a_m],[a_{m+1},...a_q]} % z - matrix of (possibly complex) numbers % Output: % y - has same dimensions as 'z' % % Notes: % 1.) For invalid arguments, 'double' function for converting results back % from symbols would return an error. % 'MeijerG' catches the error, displays a warning, and sets corresponding % position of 'y' to 'nan'. % 2.) 'double' to 'string' conversion used for forming the symbolic % expressions causes a precision loss, and possibly, round of errors. % 3.) Sometimes, even the slightest changes to arguments % could produce unacceptable results. % e.g. % >> MeijerG({[1,1], },{1, 1},[1,2,3]) % ans = % NaN 0.666666666666667 0.750000000000000 % >> MeijerG({[1,1], },{1, 1},[1+1e-5,2,3]) % ans = % 0.500002499987500 0.666666666666667 0.750000000000000 % Here the second result appears correct, since % MeijerG({[1,1], },{1, 1},z ) = z/(z+1) % Please let me know if such issues can be circumvented. % % Author : Damith Senaratne, (http://www.damiths.info) % Released date : 16th August 2011
if verLessThan('matlab','7.7.0') useMaple = true; maple('MeijerGi := sqrt(-1);'); else useMaple = false; SE = symengine; evalin(SE,'MeijerGi := sqrt(-1)'); end % Note: Given the performance penalty and other implications, % the symbolic engine is not reset within 'MeijerG'. % Hence, the choosing a simple identifier for imaginary unit (e.g. 'i') % appears difficult. % The identifier 'MeijerGi' is chosen above hoping that it won't conflict % with any already defined symbolic variable.
zvec = z(:); % vectorize (to make the computation independent of the dimensions) y = zeros(size(zvec)); for k=1:length(y) % iterate for each element of 'z'! if imag(z(k))>=0 zStr = sprintf('%g + MeijerGi* %g',real(z(k)),imag(z(k))); else zStr = sprintf('%g - MeijerGi* %g',real(z(k)),abs(imag(z(k)))); end
if useMaple cmd = sprintf('evalf(MeijerG([%s,%s],[%s,%s],%s))',intVecToStr(a1),intVecToStr(a2),intVecToStr(b1),intVecToStr(b2),zStr); [r,s] = maple(cmd);
if s ~= 0 warning('MeijerG: failed evaluating for k = %d',k); y(k) = nan; else r = str2double(r); y(k) = r(1); end else expr = sprintf('meijerG([%s,%s],[%s,%s],%s)',intVecToStr(a1),intVecToStr(a2),intVecToStr(b1),intVecToStr(b2),zStr); [r,s] = evalin(SE,expr); if s ~= 0 warning('MeijerG: failed evaluating for k = %d',k); y(k) = nan; else try y(k) = double(r(1)); catch err warning('MeijerG: failed evaluating for k = %d',k); y(k) = nan; end end end end y = reshape(y,size(z));
% ----------------------- % function: intVecToStr % ----------------------- % converts elements of an integer array 'a' to a string function s = intVecToStr(a) s = ['[', sprintf(' %ld,',a)]; s = [s(1:end-1), ' ]'];
(همچنین شما برای ارسال عکس به داخل پست تون می تونید که از قسمت ارسال پیوست استفاده کنید)
(۱۳۹۴/۰۳/۰۸, ۱۲:۲۱ ب.ظ)'MATLAB' نوشته: سلام
کلید زیر را بخوانید برای انتگرال گیری بازه ای هستش که شاید کمکتون کنه کلید42 همچنین من جستجویی که کردم در اینترنت مطالب زیادی در مورد تابع meijerG در سایت های ایرانی پیدا نکردم ولی در یکی از انجمن های خارجی زبان یه کدی با این عنوان به چشمم خورد را میزارم شاید کمکتون کنه(که اومده تو 36 خط اول راجب عملکرد کدها توضیح مختصری داده)
فقط اجراش نکردم خودتون چک کنید
کد پیاچپی:
function y = MeijerG(a,b,z) % MeijerG % A wrapper for MATLAB symbolic library implementation of the 'MeijerG' G^{m,n}_{p,q}(...|z) function. % It uses Maple with MATLAB 2008a or earlier; muPad with later versions. % % Syntax : % MeijerG({[a_1,...a_n],[a_n+1,...a_p]},{[b_1,...b_m],[b_m+1,...b_q]},z) % Input arguments : % a - {[a_1,...a_n],[a_{n+1},...a_p]} % b - {[a_1,...a_m],[a_{m+1},...a_q]} % z - matrix of (possibly complex) numbers % Output: % y - has same dimensions as 'z' % % Notes: % 1.) For invalid arguments, 'double' function for converting results back % from symbols would return an error. % 'MeijerG' catches the error, displays a warning, and sets corresponding % position of 'y' to 'nan'. % 2.) 'double' to 'string' conversion used for forming the symbolic % expressions causes a precision loss, and possibly, round of errors. % 3.) Sometimes, even the slightest changes to arguments % could produce unacceptable results. % e.g. % >> MeijerG({[1,1], },{1, 1},[1,2,3]) % ans = % NaN 0.666666666666667 0.750000000000000 % >> MeijerG({[1,1], },{1, 1},[1+1e-5,2,3]) % ans = % 0.500002499987500 0.666666666666667 0.750000000000000 % Here the second result appears correct, since % MeijerG({[1,1], },{1, 1},z ) = z/(z+1) % Please let me know if such issues can be circumvented. % % Author : Damith Senaratne, (http://www.damiths.info) % Released date : 16th August 2011
if verLessThan('matlab','7.7.0') useMaple = true; maple('MeijerGi := sqrt(-1);'); else useMaple = false; SE = symengine; evalin(SE,'MeijerGi := sqrt(-1)'); end % Note: Given the performance penalty and other implications, % the symbolic engine is not reset within 'MeijerG'. % Hence, the choosing a simple identifier for imaginary unit (e.g. 'i') % appears difficult. % The identifier 'MeijerGi' is chosen above hoping that it won't conflict % with any already defined symbolic variable.
zvec = z(:); % vectorize (to make the computation independent of the dimensions) y = zeros(size(zvec)); for k=1:length(y) % iterate for each element of 'z'! if imag(z(k))>=0 zStr = sprintf('%g + MeijerGi* %g',real(z(k)),imag(z(k))); else zStr = sprintf('%g - MeijerGi* %g',real(z(k)),abs(imag(z(k)))); end
if useMaple cmd = sprintf('evalf(MeijerG([%s,%s],[%s,%s],%s))',intVecToStr(a1),intVecToStr(a2),intVecToStr(b1),intVecToStr(b2),zStr); [r,s] = maple(cmd);
if s ~= 0 warning('MeijerG: failed evaluating for k = %d',k); y(k) = nan; else r = str2double(r); y(k) = r(1); end else expr = sprintf('meijerG([%s,%s],[%s,%s],%s)',intVecToStr(a1),intVecToStr(a2),intVecToStr(b1),intVecToStr(b2),zStr); [r,s] = evalin(SE,expr); if s ~= 0 warning('MeijerG: failed evaluating for k = %d',k); y(k) = nan; else try y(k) = double(r(1)); catch err warning('MeijerG: failed evaluating for k = %d',k); y(k) = nan; end end end end y = reshape(y,size(z));
% ----------------------- % function: intVecToStr % ----------------------- % converts elements of an integer array 'a' to a string function s = intVecToStr(a) s = ['[', sprintf(' %ld,',a)]; s = [s(1:end-1), ' ]'];
(همچنین شما برای ارسال عکس به داخل پست تون می تونید که از قسمت ارسال پیوست استفاده کنید)
ممنونم از راهنمایی شما
کلید 42 را خوانده بودم ولی کمکی بهم نکرد می خوام با دستور Sum انتگرال گیری کنم چون تابع من به صورت گسسته هست. میشه با دستور Sum??
رابطه ای که باید انتگرال گیری کنم را گذاشتم شاید اینطوری قابل لمس تر باشه
متشکرم
۱۳۹۴/۰۳/۰۹, ۰۱:۲۴ ب.ظ (آخرین تغییر در ارسال: ۱۳۹۴/۰۳/۰۹, ۰۱:۲۶ ب.ظ توسط MATLAB.)
خواهش می کنم
تا جایی که بنده میدونم از دستور sum هم برای انتگرال گیری استفاده مشه کرد به این صورت که ما با تعریف تابع sum داخل برنامه به برنامه می فهمونیم که این تابع مقادیر موجود را باهم جمع کنه .
یعنی این کار را زمانی انجام می دیم که بنا به دلایلی نخواهیم از دستورات مربوط به انتگرال استفاده کنیم و بخواهیم به صورت عددی انتگرال تابعی را حساب کنیم
ولی یک مقداری رابطه تابع مورد نظرتون پیچیده هست در این مورد حتما آقای مدیر می تونن کمکتون کنن صبر کنید