double trap(double func(double), double b, double a, double N) {
double j;
double s;
double h = (b-a)/(N-1.0); //Width of trapezia
double func1 = func(a);
double func2;
for (s=0,j=a;j<b;j+=h){
func2 = func(j+h);
s = s + 0.5*(func1+func2)*h;
func1 = func2;
}
return s;
}
ট্র্যাপিজিয়া ব্যবহার করে func()
সীমা এর মধ্যবর্তী 1D সংখ্যার একীকরণ (বর্ধিত ট্র্যাপিজিয়াম নিয়ম ব্যবহার করে) এর জন্য উপরের আমার সি ++ কোড ।
আমি আসলে একটি 3D সংহত করছি, যেখানে এই কোডটি পুনরাবৃত্তভাবে বলা হয়। আমি দিয়ে কাজ করি আমাকে শালীন ফলাফল দেয়।
আরও হ্রাস করা ব্যতীত , কেউ কি উপরে পরামর্শ দিচ্ছেন যে উপরের কোডটিকে কীভাবে দ্রুত চালানো যায়? অথবা, এমনকি, একটি দ্রুত সংহতকরণ পদ্ধতির পরামর্শ দিতে পারে?
trapezoidal_integration
পরিবর্তেtrap
,sum
বাrunning_total
পরিবর্তেs
(এবং ব্যবহার+=
পরিবর্তেs = s +
),trapezoid_width
বাdx
পরিবর্তেh
(বা না, trapezoidal শাসন আপনার পছন্দের স্বরলিপি উপর নির্ভর করে), এবং পরিবর্তনfunc1
এবংfunc2
এটা সত্য যে তারা মূল্যবোধ, না ফাংশন হয় প্রতিফলিত। যেমনfunc1
->previous_value
এবংfunc2
->current_value
, বা এর মতো কিছু।