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, বা এর মতো কিছু।