วิธีการใช้ฟังก์ชั่นทางคณิตศาสตร์ที่ไม่ได้มีอยู่แล้วใน gnuplot


3

ฉันได้รับการพิจารณาgnuplotว่ามีประโยชน์มากและมากยิ่งขึ้นตั้งแต่ฉันใช้tikzในเอกสาร L A T E X แต่น่าเสียดายที่จำนวนของฟังก์ชั่นหลักของการใช้งานในgnuplotที่มีขนาดเล็กมากผมมักจะต้องฟังก์ชั่นพิเศษเช่นฟังก์ชั่นแก้ไข Bessel K νและฉันร่างกาย * ฟังก์ชั่นเหล่านี้ไม่สามารถเขียนได้โดยใช้ฟังก์ชั่นที่มีอยู่ใน gnuplot มีวิธีผูก gnuplot และgslไลบรารีหรือไม่? ฉันเคยเรียกดูgnuplotting.orgและเว็บไซต์อื่น ๆ ที่อุทิศให้กับgnuplotbu ฉันไม่พบคำใด ๆ เกี่ยวกับปัญหานี้ หากใครมีเงื่อนงำฉันจะขอบคุณ

คำตอบ:


2

หากคุณสามารถเขียนคำสั่งที่สามารถคำนวณฟังก์ชันที่คุณต้องการได้แสดงว่าคุณทำเสร็จแล้ว:

gnuplot> f(x) = real(system(sprintf("echo %f", x)))
gnuplot> plot f(x)

(ดูhelp system)

ดังนั้นคุณสามารถใช้เช่นอ็อกเทฟเพื่อคำนวณค่าของคุณ เช่นหากระบบของคุณเป็น linux คุณสามารถมีได้โดยตรง:

gnuplot> bJ(a,x) = real(system(sprintf("echo 'besselj(%f,%f)' | octave | grep ^ans | cut -f 2 -d =", a,x)))
gnuplot> plot [0:20] bJ(1,x)

มันจะใช้เวลาพอสมควรในการวิ่ง! ตั้งค่าเป็นsampleค่าต่ำจนกว่าคุณจะตั้งรายละเอียดทุกพล็อตของคุณ หากคุณต้องการทำซ้ำหลาย ๆ ครั้งคุณยังสามารถจัดตารางฟังก์ชั่นของคุณก่อนใช้set term tableจากนั้นจึงทำการพล็อตค่าที่เป็นตาราง


ขอบคุณมาก. systemผมไม่ได้คิดว่า สำหรับฟังก์ชั่นที่ฉันใช้บ่อยมันจะคุ้มค่าที่จะรวบรวมไบนารีขนาดเล็กที่เชื่อมต่อไลบรารีคณิตศาสตร์เช่น GSL เพื่อหลีกเลี่ยงการแปลงหลายรายการในห่วงโซ่ท่อที่คุณแนะนำ
Tom-Tom

แน่นอน แต่ในกรณีนี้มันอาจคุ้มค่าที่จะมีเลขฐานสองที่สามารถจัดระเบียบฟังก์ชันแทนที่จะส่งคืนค่าเดียว ในกรณีดังกล่าวคุณจะได้พล็อตไฟล์ข้อมูลที่มีตัวดัดแปลงมากกว่าฟังก์ชั่นการวิเคราะห์ที่มีการร้องขอตามระบบ
Joce
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.