কঠিন দোলক ইন্টিগ্রাল সংখ্যার একীকরণের জন্য পদ্ধতি


25

আমার নীচে সংখ্যার সাথে অবিচ্ছেদ্য মূল্যায়ন করতে হবে:

0sinc(xr)rE(r)dr

যেখানে , এবং । এখানে কে দ্বিতীয় ধরণের পরিবর্তিত বেসেল ফাংশন। আমার বিশেষ ক্ষেত্রে আমার কাছে \ ল্যাম্বদা = 0.00313 , \ কপা = 0.00825 এবং \ নু = 0.33 রয়েছেxআর+λ,κ,ν>0কেλ=0.00313κ=0.00825ν=0.33E(r)=r4(λκ2+r2)ν5/2Kν5/2(λκ2+r2)xR+λ,κ,ν>0Kλ=0.00313κ=0.00825ν=0.33

আমি ম্যাটল্যাব ব্যবহার করছি, এবং আমি অন্তর্নির্মিত ফাংশনগুলি চেষ্টা করেছি integralএবং quadgkযা আমাকে প্রচুর ত্রুটি দেয় (নীচে দেখুন)। আমি স্বাভাবিকভাবেই এই ধরনের অংশ দ্বারা একীভূত, এবং থেকে ইন্টেগ্রাল summing সেইসাথে অনেক অন্যান্য জিনিস চেষ্টা করেছি, kxπ থেকে (k+1)xπ

সুতরাং, আমার কোন পদ্ধতিটি পরবর্তী চেষ্টা করা উচিত সে সম্পর্কে আপনার কোনও পরামর্শ আছে?

আপডেট (যোগ করা প্রশ্ন)
আমি পেড্রো লিঙ্কিত পেড্রো পড়েছি, এবং আমি এটি বুঝতে খুব কঠিন বলে মনে করি না। তবে আমার কয়েকটি প্রশ্ন রয়েছে:

  • লেভিন পদ্ধতিতে কে বেস-উপাদানগুলি হিসাবে ব্যবহার করা ঠিক হবে ?ψ কেxkψk
  • দোলনের ফ্রিকোয়েন্সি স্থির হওয়ায় আমি কি কেবল পরিবর্তে একটি ফিলন পদ্ধতি ব্যবহার করতে পারি?

উদাহরণ কোড
>> integral(@(r) sin(x*r).*sqrt(E(r)),0,Inf)
Warning: Reached the limit on the maximum number of intervals in use. Approximate
bound on error is 1.6e+07. The integral may not exist, or it may be difficult to
approximate numerically to the requested accuracy.
> In funfun\private\integralCalc>iterateScalarValued at 372
In funfun\private\integralCalc>vadapt at 133
In funfun\private\integralCalc at 84
In integral at 89

ans =

3.3197e+06


আপনার অবিচ্ছেদ্য কি ? x
পেড্রো

যেকোন ধনাত্মক, আসল সংখ্যা। আমি সবেমাত্র আমার পোস্ট আপডেট করেছি।
টরবনেড

আপনি যদি কিছু কোড এবং ত্রুটি দেখাতে পারেন তবে তাদের বেশিরভাগ সমাধান করা খুব কঠিন নয় hard অবশ্যই দয়া করে প্রথমে ত্রুটিটি সাবধানতার সাথে পড়ার চেষ্টা করুন এবং দেখুন যে আপনি এটিকে নিজের থেকে বিলীন করতে পারেন কিনা।
ডেনিস জাহেরউদ্দিন

আমি আজ কিছু কোড এবং ত্রুটি সহ একটি মন্তব্য করব। অথবা আগামীকাল.
টরবনেড

ঠিক আছে, তাই আমি ভুলে গেছি। তবে এখন আমি আমার পোস্টটি একটি উদাহরণ দিয়ে আপডেট করেছি (আমি স্পষ্টতই গণনা করে অবিচ্ছেদ্যকে বিভক্ত করেছি )। sinc
টরবনেড

উত্তর:


12

আমি আমার নিজস্ব ইন্টিগ্রেটার লিখেছি quadcc, যা মাতলাব সংহতকারীদের তুলনায় একাকীত্বের তুলনায় যথেষ্ট উন্নত করে এবং আরও নির্ভরযোগ্য ত্রুটির প্রাক্কলন সরবরাহ করে।

আপনার সমস্যার জন্য এটি ব্যবহার করতে, আমি নিম্নলিখিতগুলি করেছি:

>> lambda = 0.00313; kappa = 0.00825; nu = 0.33;
>> x = 10;
>> E = @(r) r.^4.*(lambda*sqrt(kappa^2 + r.^2)).^(-nu-5/2) .* besselk(-nu-5/2,lambda*sqrt(kappa^2 + r.^2));
>> sincp = @(x) cos(x)./x - sin(x)./x.^2;
>> f = @(r) sincp(x*r) .* r .* sqrt( E(r) );

ফাংশনটি fএখন আপনার সংহত nd মনে রাখবেন যে আমি স্রেফ কোনও পুরানো মান নির্ধারণ করেছি x

অসীম ডোমেনে সংহত করার জন্য, আমি ভেরিয়েবলগুলির একটি বিকল্প প্রয়োগ করি:

>> g = @(x) f ( tan ( pi / 2 * x ) ) .* ( 1 + tan ( pi * x / 2 ).^2 ) * pi / 2;

অর্থাত্ g0 থেকে 1 fপর্যন্ত সংহতকরণ 0 থেকে একীকরণের সমান হওয়া উচিত । বিভিন্ন রূপান্তরগুলি বিভিন্ন মানের ফলাফল আনতে পারে: গাণিতিকভাবে সমস্ত রূপান্তরগুলি একই ফলাফল দেয় তবে বিভিন্ন রূপান্তরগুলি মসৃণ বা আরও সহজেই সংহত করতে পারে ।g

তারপরে আমি আমার নিজস্ব ইন্টিগ্রেটারকে কল করি quadcc, যা NaNউভয় প্রান্তে লেনদেন করতে পারে :

>> [ int , err , npoints ] = quadcc( g , 0 , 1 , 1e-6 )
int =
  -1.9552e+06
err =
   1.6933e+07
npoints =
       20761

নোট করুন যে ত্রুটির প্রাক্কলন বিশাল, অর্থাত্ quadccফলাফলের উপর খুব বেশি আস্থা নেই। ফাংশনটির দিকে তাকালেও এটি আশ্চর্যজনক নয় কারণ এটি প্রকৃত ইন্টিগ্রালের উপরে তিনটি মাত্রার মানগুলিতে মূল্যবান হয়। আবার, একটি ভিন্ন বিরতি রূপান্তর ব্যবহার করে আরও ভাল ফলাফল হতে পারে।

এছাড়াও আপনি যেমন আরো নির্দিষ্ট পদ্ধতি তাকান করতে পারেন এই । এটি কিছুটা বেশি জড়িত তবে অবশ্যই এই ধরণের সমস্যার সঠিক পদ্ধতি


আপনাকে অনেক ধন্যবাদ. আমি বিভিন্ন পদ্ধতিতে একটি চেহারা হবে। আমার উদ্দেশ্যগুলির জন্য, ত্রুটিটি integralএকা (1e-10 আমি মনে করি) হিসাবে স্ট্যান্ডার্ডের মতো ছোট হওয়ার দরকার নেই , তবে 1.7e + 07 এখনও সত্যই সত্যই বড় large আপনি উল্লেখ হিসাবে সম্ভবত অন্য রূপান্তর ভাল কাজ করবে।
টরবনেড

@ cimrg.joe: নোট করুন যে ত্রুটি অনুমানটি ইন্টিগ্রেন্ডের সর্বাধিক পরম মানগুলিতে অন্যদের মধ্যে ভিত্তি করে পরম ত্রুটির একটি অনুমান। কিছু চরম ক্ষেত্রে, প্রত্যাবর্তিত মানটি আসলে বেশ ঠিক থাকতে পারে। আপনি যদি দশ অঙ্কের নির্ভুলতার সন্ধান করেন, তবে আমি আমার পোস্টের শেষে আমি উল্লিখিত লেভিন ধরণের পদ্ধতিগুলি ব্যবহার করার দৃ strongly় পরামর্শ দিচ্ছি।
পেড্রো

আমার হয়তো দশ সংখ্যক নির্ভুলতার প্রয়োজন নেই, তবে আমার মনে হয় আমার কমপক্ষে পাঁচটি দরকার। আপনার পদ্ধতি কি উত্পাদন করতে পারে?
টরবনেড

ব্যবধানটি আপনার অবিচ্ছেদের জন্য এই ধরণের নির্ভুলতার গ্যারান্টি দিতে পারে না কারণ ব্যবধানের ডান প্রান্তে মানগুলি ইন্টিগ্রালটির চেয়ে বড় আকারের একাধিক আদেশ।
পেড্রো

11

পেড্রো যেমন উল্লেখ করেছে, লেভিন-ধরণের পদ্ধতি হ'ল এই ধরণের সমস্যার জন্য সর্বোত্তম প্রতিষ্ঠিত পদ্ধতি।

আপনার গাণিতিক অ্যাক্সেস আছে? এই সমস্যার জন্য, গাণিতিক তাদের ডিফল্টরূপে সনাক্ত এবং ব্যবহার করবে:

In[1]:= e[r_] := 
 r^4 (l Sqrt[k^2 + r^2])^(-v - 5/2) BesselK[-v - 5/2, l Sqrt[k^2 + r^2]]

In[2]:= {l, k, v} = {0.00313, 0.00825, 0.33};

In[3]:= Block[{x = 10}, 
 NIntegrate[Sinc'[x r] r Sqrt[e[r]], {r, 0, \[Infinity]}, 
  PrecisionGoal -> 3]]

Out[3]= -112494.

এখানে x এর বিভিন্ন মানের মূল্য নিয়ে একটি প্লট রয়েছে:

In[4]:= ListLinePlot[
 Table[NIntegrate[Sinc'[x r] r Sqrt[e[r]], {r, 0, \[Infinity]}, 
   PrecisionGoal -> 3], {x, .5, 10, 0.1}]]

X = 0.5 থেকে x = 10 পর্যন্ত প্লট

আপনি প্রয়োগের জন্য নির্দিষ্ট লেভিন-প্রকারের পদ্ধতিটি ম্যানুয়ালিও নির্দিষ্ট করতে পারেন, যা এই ক্ষেত্রে সামান্য কর্মক্ষমতা উন্নতি করতে পারে:

In[5]:= method = {"LevinRule", "Kernel" -> {Cos[r x], Sin[r x]}, 
   "DifferentialMatrix" -> {{0, -x}, {x, 0}}, 
   "Amplitude" -> {(
     3497.878840962873` Sqrt[(
      r^4 BesselK[-2.17`, 
        0.00313` Sqrt[
         0.00006806250000000001` + r^2]])/(0.00006806250000000001` + 
        r^2)^1.415`])/
     x, -((3497.878840962873` Sqrt[(
       r^4 BesselK[-2.17`, 
         0.00313` Sqrt[
          0.00006806250000000001` + r^2]])/(0.00006806250000000001` + 
         r^2)^1.415`])/(r x^2))}, "AdditiveTerm" -> 0};

In[6]:= Block[{x = 10}, 
 NIntegrate[Sinc'[x r] r Sqrt[e[r]], {r, 0, \[Infinity]}, 
  PrecisionGoal -> 3, Method -> method]]

Out[6]= -112495.

ম্যাথমেটিকায় লেভিন ধরণের পদ্ধতিগুলির বিশদগুলির জন্য ডকুমেন্টেশন দেখুন ।


দুর্ভাগ্যক্রমে আমার গাণিতিকের অ্যাক্সেস নেই - কেবল ম্যাটল্যাব। আমি পেড্রো লিঙ্কযুক্ত পেপার সম্পর্কিত কিছু যুক্ত প্রশ্ন সহ আমার প্রশ্নটি আপডেট করব।
টরবনেড

ঠিক আছে, আপনি যেমনটি বলেছেন মতলবকে করতে হবে with আমি সে সম্পর্কে আরও একটি উত্তর যুক্ত করব।
অ্যান্ড্রু মওলান

5

ম্যাথমেটিকাতে আপনার অ্যাক্সেস না থাকলে পেড্রোর পরামর্শ অনুসারে মতলবতে লেভিন-টাইপ (বা অন্যান্য বিশেষায়িত দোল) পদ্ধতি লিখতে পারেন।

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


আমি নিজে একটি লেভিন পদ্ধতি প্রয়োগ করার কথা ভেবেছি, তবে আমি এখনও চ্যালেঞ্জের পক্ষে রয়েছি কিনা তা নিশ্চিত নই। আমি মনে করি পদ্ধতিটি আরও ভালভাবে বুঝতে হবে। আমি আমার পরামর্শদাতার সাথে এটি সম্পর্কে কথা বলতে পারে। যাইহোক, আমি ফিলন পদ্ধতি সম্পর্কে যে কারণটি জিজ্ঞাসা করেছি তা হ'ল এগুলি কার্যকর করা সহজ easier আর যেহেতু আমি অত্যন্ত উচ্চ নির্ভুলতা প্রয়োজন হবে না, কিন্তু এই আমার মনিবের থিসিসের অংশ, অসুবিধা weighs।
torbonde

আমার চেবফুন লাইব্রেরি (যা চিত্তাকর্ষক) এবং লেভিন ইন্টিগ্রেশন-উদাহরণটি দেখেছি। তবে আমি এটি চালাতে পারি না। আমি আসলে এখানে এ সম্পর্কিত একটি প্রশ্ন পোস্ট করেছি ।
টরবনেড

0

পেদ্রো দ্বারা প্রস্তাবিত রূপান্তরটি একটি দুর্দান্ত ধারণা। আপনি কি মতলবের "কোয়াডজিকে" ফাংশনে প্যারামিটারগুলি নিয়ে ঘুরে দেখার চেষ্টা করেছেন? উদাহরণস্বরূপ, পেড্রোর রূপান্তরটি ব্যবহার করে আপনি নিম্নলিখিতগুলি করতে পারেন:
quadgk(f, 0.0+eps, 1.0-eps, 'AbsTol', eps, 'MaxIntervalCount', 100000)
এটি ব্যবহারের ফলে আমার একটি সমাধান পাওয়া যায়:
-2184689.50220729
এবং কেবল 0.8 সেকেন্ড সময় নেয় (উপরে উল্লিখিত মানগুলি ব্যবহার করে: x = 10)
ওয়াল্টার গ্যান্ডার এবং ওয়াল্টার গাউটস্কি মতলব সহ অভিযোজিত চৌম্বক নিয়ে একটি কাগজ রয়েছে কোড আপনিও ব্যবহার করতে পারেন ( এখানে লিঙ্ক করুন )

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.