অত্যন্ত দোলক অবিচ্ছেদ্য সংখ্যার মূল্যায়ন


11

ইন জটিল ফাংশন তত্ত্বের অ্যাপ্লিকেশন এই উন্নত কোর্স এক পর্যায়ে একটি ব্যায়াম অত্যন্ত দোদুল্যমান অবিচ্ছেদ্য মধ্যে

I(λ)=cos(λcosx)sinxxdx

বৃহৎ মানের জন্য আনুমানিক হতে করেছে λ জটিল সমতলে জিন বিন্দু পদ্ধতি ব্যবহার করে।

অত্যন্ত দোল প্রকৃতির কারণে, এই অন্যান্য অবিচ্ছেদ্যগুলির বেশিরভাগ পদ্ধতি ব্যবহার করে মূল্যায়ন করা খুব শক্ত। এই জন্য integrand এর গ্রাফ দুটি টুকরা হয় λ=10 বিভিন্ন দাঁড়িপাল্লা হয়:

cos (10 cos (x)) sin (x) / x

একটি শীর্ষস্থানীয় অর্ডার অ্যাসিপটোটিক আনুমানিকতা

I1(λ)=cos(λ14π)2πλ

এবং আরও একটি (আরও ছোট) পরিশোধন শব্দটি যুক্ত করে

I2(λ)=18sin(λ14π)2πλ3

এর কার্যকারিতা হিসেবে আনুমানিক মূল্যবোধের একটি গ্রাফ λ সৌন্দর্য নিম্নরূপ:

আমি (ল্যাম্বদা) প্রায়

এখন আমার প্রশ্নটি এসেছে: আনুমানিকভাবে দেখতে কতটা ভাল, আমি এটিকে ইন্টিগ্রালের "আসল মান" এর সাথে তুলনা করতে চাই, বা আলাদাভাবে একটি স্বাধীন অ্যালগরিদম ব্যবহার করে একই ইন্টিগ্রালের সাথে একটি ভাল সান্নিধ্যের সাথে আরও পরিষ্কারভাবে তুলনা করতে চাই। সাবলিগিং সংশোধনের ক্ষুদ্রতার কারণে, আমি এটি আসল কাছাকাছি হওয়ার আশা করব।

আমি কিছু জন্য অবিচ্ছেদ্য মূল্যায়ন করার চেষ্টা λ অন্যান্য আলগোরিদিম ব্যবহার করে, কিন্তু খুব সামান্য সাফল্যের সঙ্গে: ম্যাথামেটিকাল এবং মতলব ডিফল্ট সংখ্যাসূচক একত্রকারী ব্যবহার করে একটি অর্থপূর্ণ মান উত্পাদন (এবং স্পষ্টভাবে এটি প্রতিবেদন) এর পরিচালনা করতে পারেন না ব্যবহার mpmath উভয় দোকর সূচকীয় tanh(sinh) প্রতিস্থাপন এবং গাউস-লেজেন্ড্রে পদ্ধতি খুব গোলমাল ফলাফল উত্পন্ন করে, যদিও এটি স্যাডল পয়েন্ট পদ্ধতি যে মানগুলি দেয় তার আশেপাশে দোল করার সামান্য প্রবণতা রয়েছে, যেমন এই গ্রাফটি প্রদর্শিত হতে পারে:

এমপিএমথ প্রায়

অবশেষে আমি প্রয়োগ করেছি এমন গুরুত্বপূর্ণ নমুনা ব্যবহার করে একটি মন্টি-কার্লো ইন্টিগ্রেটারের সাথে আমার ভাগ্য চেষ্টা করেছি, তবে আমি কোনও স্থিতিশীল ফলাফলও অর্জন করতে পারি নি।

যে কেউ কিভাবে এই অবিচ্ছেদ্য স্বাধীনভাবে কোনো নির্দিষ্ট মানের জন্য মূল্যায়ন করা যেতে পারে একটি ধারণা আছে λ>1 তাই?


কাজটি কি সমান?
নিকোগুয়ারো

হ্যাঁ, এটি
সমান

আপনি কি নিজের ইন্টিগ্রালকে ওডিএতে পরিণত করার চেষ্টা করেছেন?
নিকোগুয়ারো

1
না, ডিফারেনটিশন আর্ট এবং তারপরে ডিফারেনশিয়াল সমীকরণকে সংখ্যাগতভাবে সমাধান করুন। x
নিকোগুয়ারো

1
আপনার প্রথম প্লটটি আপনার একীকরণের চেয়ে আলাদা ফাংশন দেখায় বলে মনে হচ্ছে। যেমন, এটা হয়েছে বলে মনে হয় দিয়ে প্রতিস্থাপিত λ এক্স । অর্থাত চক্রান্ত ফাংশনের হয় এক্স ( কোসাইন্ ( λ এক্স কোসাইন্ এক্স ) sinc এক্স )λλxx(cos(λxcosx)sincx)
রুসলান

উত্তর:


12

এই অবিচ্ছেদ্য মূল্যায়ন করতে প্ল্যানচেরেলের উপপাদ্যটি ব্যবহার করুন ।

মূল ধারণাটি হ'ল দুটি ফাংশনের জন্য f,g ,

I=f(x)g(x)dx=F(k)G(k)dk

F,Gf,gsinx/xrect(k)cos(λcosx)λ|Jn(x)|n>|x|

πJ0(λ)[0,2π]


ধন্যবাদ, এটি একটি খুব ভাল ধারণা!
doetoe

7

πN+π2

Asymptotics

I(λ)2πλ[cos(λπ4)+c1sin(λπ4)λ+c2cos(λπ4)λ2+c3sin(λπ4)λ3+]
c1=18

int := NIntegrate[Cos[l*Cos[x]]*Sinc[x], {x, 0, 20.5*Pi}]; 
Plot[{l*(Sqrt[2*l/Pi]*int - Cos[l-Pi/4]), Sin[l-Pi/4]/8}, {l, Pi/4, 20}]

একটি আউটপুট হিসাবে আপনি বেশ ভাল একটি সিন পাবেন যা আপনার উপরের উত্স থেকে একের সাথে মিল রয়েছে।

18

আপনি যদি নিম্নলিখিত নিম্নলিখিত সহগ খুঁজে পেতে চান, প্রয়োজনে কিছুটা আরও পরিশীলিত কোডের টুকরো। নীচের কোডটির ধারণাটি হ'ল বেশ কয়েকটি উচ্চ-উচ্চতর সীমাবদ্ধতার মান গ্রহণ করা এবং তাদের ফলাফলগুলি "গড়" নেওয়া।

J[l_?NumericQ] := Block[{n=500},
  f[k_] := NIntegrate[Cos[l*Cos[x]]*Sinc[x], {x,0,(n+k)*Pi+Pi/2},
  Method->{"DoubleExponential"}, AccuracyGoal->14, MaxRecursion->100];
  1/2*((f[0]+f[1])/2+(f[1]+f[2])/2)
]
t = Table[{l, l^2*(Sqrt[2*l/Pi]*J[l] - Cos[l-Pi/4] - 1/8*Sin[l-Pi/4]/l)}, 
    {l, 4*Pi+Pi/4, 12*Pi+Pi/4, Pi/36}];
Fit[t, Table[Cos[l-Pi/4+Pi/2*n]/l^n, {n, 0, 10}], l]

c2=9128,c3=751024,c4=367532768,

ব্যাখ্যা

সহজ উদাহরণ

S(x)=0xsin(y)ydy.
S()=π2

জ্যা

S(x)

SN=n=1N(1)nn.
SSN+12(1)N+1N+1.
S(x)0πN+π2sinxxdx
max|S(x)|

তোমার সমস্যা

Ix0(λ)=20x0cos(λcos(x))sinc(x)dx
x0=πN+π2λ=12π

tab = Table[{x0, 2*NIntegrate[Cos[12*Pi*Cos[x]]*Sinc[x], {x, 0, x0}, 
     Method->{"DoubleExponential"}, AccuracyGoal->12, MaxRecursion->100]},
    {x0, 10*Pi+Pi/2, 30*Pi+Pi/2, Pi}];
tab1 = Table[(tab[[i]] + tab[[i+1]])/2, {i,1,Length[tab]-1}];
ListPlot[{tab, tab1}]

এক্সেসরিজ

এখানে আপনি অন্য ত্বরণ পদ্ধতির ফলাফল দেখতে পাবেন। আমি নিম্নলিখিত উপায়ে আংশিক অঙ্কগুলি পুনরায় সাজাই

SN=12(SN+SN+1)
SN


নিস! কোর্সের প্রশিক্ষকরা কি আপনার বাস্তব জীবনের অধ্যাপক? তাদের কোর্সটি দুর্দান্ত, যদিও খুব শক্ত এবং দ্রুত
গতিযুক্ত

@ ডিয়েটো হ্যাঁ, আমি কনস্ট্যান্টিনের ছাত্র। তিনি আপনার প্রশ্নের একটি লিঙ্ক আমার সাথে ভাগ করেছেন।
ডেভিড সাইকিন

6

ফুরিয়ার সাইন ইন্টিগ্রালের জন্য ওউরার পদ্ধতি এখানে কাজ করে, দেখুন:

ওউরা, টাকুয়া এবং মাসাটাকে মরি, ফুরিয়ার ধরণের ইন্টিগ্রালগুলির জন্য একটি শক্তিশালী দ্বিগুণ সূচক ential গণিত এবং প্রয়োগ গণিতের জার্নাল 112.1-2 (1999): 229-241।

আমি এই অ্যালগরিদমের একটি বাস্তবায়ন লিখেছি তবে তা দ্রুত পাওয়ার জন্য কখনও কাজটি করা হয়নি (তবে ক্যাশে নোড / ওজন বলুন) তবে তা সত্ত্বেও, আমি ভাসমান নির্ভুলতার বাইরেও সব কিছুতেই ধারাবাহিক ফলাফল পাচ্ছি:

float     = 0.0154244
double    = 0.943661538060268
long dbl  = 0.943661538066058702
quad      = 0.943661538066060288748574485677942
oct       = 0.943661538066060288748574485680878906503533004997613278231689169604876
asymptotic= 0.944029734

কোডটি এখানে:

#include <iostream>
#include <boost/math/quadrature/ooura_fourier_integrals.hpp>
#include <boost/math/constants/constants.hpp>
#include <boost/multiprecision/float128.hpp>
#include <boost/multiprecision/cpp_bin_float.hpp>

template<class Real>
Real asymptotic(Real lambda) {
    using std::sin;
    using std::cos;
    using boost::math::constants::pi;
    Real I1 = cos(lambda - pi<Real>()/4)*sqrt(2*pi<Real>()/lambda);
    Real I2 = sin(lambda - pi<Real>()/4)*sqrt(2*pi<Real>()/(lambda*lambda*lambda))/8;
    return I1 + I2;
}

template<class Real>
Real osc(Real lambda) {
    using std::cos;
    using boost::math::quadrature::ooura_fourier_sin;
    auto f = [&lambda](Real x)->Real { return cos(lambda*cos(x))/x; };
    Real omega = 1;
    Real Is = ooura_fourier_sin<decltype(f), Real>(f, omega);
    return 2*Is;
}

template<class Real>
void print(Real val) {
   std::cout << std::defaultfloat;
   std::cout << std::setprecision(std::numeric_limits<Real>::digits10);
   std::cout <<  val <<  " = " << std::hexfloat << val;
}

int main() {
    using boost::multiprecision::float128;
    float128  s = 7;
    std::cout << "Asymptotic = " << std::setprecision(std::numeric_limits<float128>::digits10) << asymptotic(s) << "\n";
    std::cout << "float precision = ";
    print(osc(7.0f));
    std::cout << "\n";
    std::cout << "double precision= ";
    print(osc(7.0));
    std::cout << "\n";
    std::cout << "long double     = ";
    print(osc(7.0L));
    std::cout << "\n";
    print(osc(s));

    print(osc(boost::multiprecision::cpp_bin_float_oct(7)));
    std::cout << "\n";
}

λ0এখানে চিত্র বর্ণনা লিখুন


ধন্যবাদ, এটি সত্যিই দুর্দান্ত! আমি এটি এখনও কাজ করতে পাইনি, আমার বুস্ট ইনস্টলেশনটি সামঞ্জস্যপূর্ণ নয়, তবে আমি এখনই সর্বশেষতম সংস্করণটি ডাউনলোড করছি।
doetoe

ঠিক নিশ্চিত করার জন্য: 23-তে আপনার ইন্টিগ্রেড থেকে পাপ (এক্স) গুণক ছাড়াই কোস (ল্যাম্বডা * কোস (এক্স)) / এক্স রয়েছে। এটি কি ওউরা_ফুরিয়ার_সিন যে এই ফ্যাক্টর পাপকে (x) এটিতে সংহত সংখ্যাকে গুণিত করতে অনুমান করে?
doetoe

আমি এটা কাজ পেয়েছিলাম। এটি এবং এর নির্ভরতাগুলি কেবল সমস্ত শিরোনাম বলে মনে হয়, তাই আমাকে এমনকি ইনস্টল বা সংকলন করতে হয়নি (এক্সিকিউটেবল ব্যতীত)। আমি আশা করি এটি উত্সাহে অন্তর্ভুক্ত হবে!
doetoe

sin(x)

@ ডিটো: এটি বুস্ট ১.71১ এ একীভূত হয়েছে। এই উত্তরটি দেওয়ার চেয়ে এপিআই কিছুটা আলাদা।
ব্যবহারকারী 14717
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.