(অভিযোজিত?) ফাংশন প্লট করার জন্য অ্যালগরিদম


21

আমি এককত্ব থাকতে পারে বা না পারে এমন ফাংশনগুলির জন্য স্ট্যান্ডার্ড 2 ডি-গ্রাফ আঁকার জন্য আমি অ্যালগরিদমের সন্ধান করছি। উদ্দেশ্যটি একটি "মিনি-সিএএস" লেখার জন্য, সুতরাং আমার কী ধরণের ফাংশনগুলির পূর্বতর জ্ঞান নেই, ব্যবহারকারীরা গ্রাফ করতে চান?

এই সমস্যাটি খুব পুরানো, তাই আমি ভাবছি সাহিত্যে কিছু স্ট্যান্ডার্ড অ্যালগরিদম থাকতে হবে। একবারের জন্য আমি গুগলের মাধ্যমে রেফারেন্স সন্ধান করতে তেমন সাফল্য পাইনি।

আমি একটি আকর্ষণীয় অ্যালগরিদম পেয়েছি, যিনি এটি "YAPAS - বুক অফ অ্যালগরিদম" থেকে "অ্যাডাপটিভ ফাংশন প্লটিং" নামক একটি named

সংক্ষেপে:

  • স্ট্যান্ডার্ড অ্যালগরিদম আছে?
  • প্লট-থেকে-প্লট কার্যকরী জন্য পরিচিতি পরীক্ষা আছে?
  • পড়ার জন্য আকর্ষণীয় কাগজপত্রগুলি কী কী?

2
প্রশ্নটি "গ্রাফ অঙ্কন" এর পরিবর্তে "ফাংশন প্লটিং" দিয়ে আরও ভাল বোঝা যাবে? আমি প্রথমে শিরোনামটির ভুল ব্যাখ্যা করেছি (গ্রাফ তত্ত্ব)।
অ্যাস্ট্রজুয়ানলু

@ জুয়ানলু 1001 পরামর্শ দেওয়ার জন্য ধন্যবাদ। আমি শিরোনাম পরিবর্তন করেছি।
soegaard

আপনি যখন 2 ডি বলছেন, আপনি কি বোঝাতে চাইছেন যে কোনও এক-ভেরিয়েবল ফাংশন যেমন , বা 2 ডি-তে প্রদর্শিত উদাহরণস্বরূপ বিভিন্ন বর্ণ / শেডের সাথে প্রদর্শিত একটি দ্বি-ভেরিয়েবল ফাংশন ( ( এক্স , ওয়াই ) ) এ আপনি আগ্রহী? বিভিন্ন মান? f(x)f(x,y)
কাজ Szabolcs

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

2 ডি ফাংশনগুলির জন্য, আমার প্রশ্ন এবং উত্তরটি এখানে দেখুন । আমি সেখানে যা করেছি তা বেশ সীমাবদ্ধ ছিল, এবং স্বেচ্ছাসেবী কাজের জন্য এটি ভালভাবে কাজ করবে না। এছাড়াও, বর্ণনায় কিছু প্রয়োজনীয় পদক্ষেপ রয়েছে যাগুলি ছাড়া পদ্ধতিটি সঠিকভাবে রূপান্তরিত হবে না: জালটির প্রতিটি প্রান্তের মাঝখানে আমার একটি নতুন স্যাম্পলিং পয়েন্ট সন্নিবেশ করা দরকার যা পরবর্তী প্রতিশোধের জন্য অদৃশ্য হয়ে যাবে। (contd।)
কাজ Szabolcs

উত্তর:


10

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


1
এটি কোন বই? এটি কি আমি যুক্ত? আপনি কি জানেন যে 5 ও 6 সংস্করণগুলির মধ্যে তাদের বাস্তবায়নে ঠিক কী পরিবর্তন হয়?
কাজ Szabolcs

1
@ সাজাবল্যাকস: না, আমি বিশ্বাস করি এটি এই বইয়ের বিভাগে ছিল ৪.১.৩। বর্ণনাটি ম্যাথমেটিকার একটি খুব পুরানো সংস্করণ প্রয়োগ করে। নতুন সংস্করণগুলি (সম্ভবত v6 থেকে শুরু হওয়া) উল্লম্ব অ্যাসিম্পটোটগুলি সনাক্ত করে এবং প্লটগুলি থেকে উত্সাহিত উল্লম্ব লাইনগুলি সরিয়ে দেয়। নতুন সংস্করণগুলি অবশ্যই বিচ্ছিন্নতা, অপরিজ্ঞাত অঞ্চল এবং শাখা কাটা মোকাবেলায় প্রচুর পরিশীলিত প্রতীকী প্রিপ্রোসেসিং করে।
ভিক্টর লিউ

আপনি যে প্রতীকী প্রিপ্রোসেসিংয়ের কথা বলছেন তাকে ডকুমেন্টেশনে "বর্ধন সনাক্তকরণ" বলা হয়। এটি দ্বারা Exclusions -> Noneবা আপনার ফাংশনটির কাঠামোটি Plotহিসাবে সংজ্ঞায়িত করে লুকিয়ে রেখে বন্ধ করা যেতে পারে f[x_?NumericQ] := ...। আমি যখন পরিবর্তনগুলি সম্পর্কে জিজ্ঞাসা করেছি তখন এটিই আমি উল্লেখ করছি না। আমি বিশ্বাস করি যে বিভিন্ন পয়েন্টে ভি 5 এবং ভি 6 নমুনা হিসাবে অ্যালগরিদমের কিছু পরিবর্তন ছিল। আবার তুলনা করা সত্ত্বেও আমি v5 এ পরীক্ষা করতে পারছি না।
কাজ Szabolcs

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

আমি আর গিটহাব ফাইলটি খুঁজে পাচ্ছি না, এটি কি সরানো হয়েছিল?
আন্দ্রে

12

অন্যান্য সিএএস কীভাবে এটি করে তা আপনার পক্ষে সহায়তা করতে পারে।

f(x)(x(t),y(t))f(x)

  1. প্লটিং ডোমেনে নিয়মিতভাবে ব্যবধানযুক্ত পয়েন্টের গ্রিড দিয়ে শুরু করুন। Athe গাণিতিকায়, কতজন নেবে, ডাকা হবে তা নিয়ন্ত্রণ করার একটি প্যারামিটার রয়েছে PlotPoints))

  2. (x1,f(x1)),(x2,f(x2)),(x3,f(x3))x1+x22x2+x32

  3. যদি আমরা এখনও পুনরাবৃত্তির সীমাতে পৌঁছায় না ( MaxRecursionম্যাথমেটিকায় নির্ধারিত ), পদক্ষেপ 2 থেকে পুনরাবৃত্তি করুন।

এর কয়েকটি স্ট্যান ওয়াগনের ম্যাথমেটিকা ​​ইন অ্যাকশন বইয়ে আলোচনা করা হয়েছে, যা আপনি এখানে গুগল বুকে দেখতে পারেন ।

আমার ব্যয়বহুল গণনা করার জন্য ব্যয়বহুল কতবার মূল্যায়ন করা হয়েছিল তার উপরে আরও ভাল নিয়ন্ত্রণের আগে আমি এই অ্যালগরিদমটি প্রয়োগ করেছি। পদক্ষেপ 2 এর জন্য গাণিতিক কোডটি এখানে:

nd[{points_, values_}] :=
Transpose@{(Drop[points, 1] + Drop[points, -1])/2,
Differences[values]/Differences[points]}

subdivide1d[result_, resolution_, maxAngle_: 10] :=
  Module[
    {deriv, angle, dangle, pos, nf},
    deriv = nd[result\[Transpose]];
    angle = ArcTan[#2] & @@@ deriv;
    dangle = Differences[angle];
    pos = Flatten@Position[dangle, d_ /; Abs[d] > maxAngle/180 Pi];
    pos = Union[pos, pos + 1];
    nf = Nearest[result[[All, 1]]];
    Select[deriv[[pos, 1]], Abs[# - First@nf[#]] > resolution &]
  ]

7

ফাংশন গ্রাফের ম্যাথওয়ার্ড ওয়েব পৃষ্ঠায় বেশ কয়েকটি কাগজপত্রের উল্লেখ রয়েছে যা অভিযোজিত ফাংশন প্লট করার ক্ষেত্রে প্রাসঙ্গিক বলে মনে হয়। পৃষ্ঠাটি উদ্ধৃত:

গ্রাফিক প্লট করার জন্য ভাল রুটিনগুলি অভিযোজিত অ্যালগরিদম ব্যবহার করে যা ফাংশন সবচেয়ে দ্রুত পরিবর্তিত হয় এমন অঞ্চলে আরও বেশি পয়েন্ট প্লট করে (ওয়াগন 1991, ম্যাথ ওয়ার্কস 1992, হেক 1993, উইকহাম-জোনস 1994)। টুপার (1996) একটি অ্যালগরিদম তৈরি করেছে [...]

অন্যদিকে, গুগলে আমি কোনও কাগজে হোঁচট খেয়েছি

www.cs.uic.edu/~wilkinson/Publications/plotfunc.pdf

এটি কীভাবে ডোমেন এবং অন্যান্য জিনিসগুলি সঠিকভাবে চয়ন করবেন তা ব্যাখ্যা করে। আমি আশা করি তারা আপনার কাজে লাগবে।


1

আমি এই বিষয়টি পেয়েছি এবং ভেবেছিলাম জুলিয়া লাইব্রেরি Plots.jl এ যুক্ত করার জন্য বিকাশকারী ইস্যু পৃষ্ঠাটি ভাগ করা উচিত । ম্যাথমেটিকার প্রয়োগের নোটগুলি থেকে শুরু করে কী কী ভাল ফলাফল দেবে তা দেখার জন্য আমরা বেশ কয়েকটি কৌশল চেষ্টা করেছি। কিছু ছাঁটাই যোগ করা, বিরতি শেষ পর্যায়ে ঠিক না শুরু করার জন্য একটি ক্ষুদ্র ক্ষুদ্র অংশ, একটি পুনরাবৃত্তি সীমা এবং একটি দ্বৈত জাল ত্রুটি অনুমানকারী "এটিকে ঠিক ঠিক পেতে" প্রয়োজনীয় ছিল। থ্রেড আপনাকে বাস্তবায়নের জন্য ওপেন সোর্স কোডের দিকেও নির্দেশ করে। সুতরাং এটি কিছুটা টুইট করতে পেরেছিল, তবে সেই বৈশিষ্ট্যগুলি যুক্ত করা এটি বেশ দৃust় করেছে (পরীক্ষাগুলি অনুসারে, থ্রেডে দেখানো হয়েছে)।

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