বিষয়বস্তুতে চলুন

নিয়ন্ত্রণ ব্যবস্থা/ওপেন সোর্স টুল/জুলিয়া

উইকিবই থেকে


পূর্বশর্ত

[সম্পাদনা]

জুলিয়া ইনস্টল করার পর কন্ট্রোলসিস্টেমস.জেএল (ControlSystems.jl) প্যাকেজটি ইনস্টল করা প্রয়োজন। এক্ষেত্রে জুলিয়ার অফিসিয়াল ডকুমেন্টেশন অনুসরণ করার পরামর্শ দেওয়া হচ্ছে। জুলিয়া টার্মিনালে চালানো যায়, তবে জুনো/অ্যাটম (Juno/Atom) অথবা ভিজ্যুয়াল স্টুডিও কোডের মতো একটি ইন্টিগ্রেটেড ডেভেলপমেন্ট এনভায়রনমেন্ট (IDE) ব্যবহার করা বেশ সুবিধাজনক।

কন্ট্রোলসিস্টেমস.জেএল প্যাকেজটি লোড করার জন্য নিম্নলিখিত কমান্ডটি ব্যবহার করতে হবে:

using ControlSystems

ফাংশনটি মূল্যায়ন করার আগে কন্ট্রোলসিস্টেমস প্যাকেজটি লোড করা প্রয়োজন।

এই কোর্স জুড়ে ধরে নেওয়া হয়েছে যে ফলাফল তাৎক্ষণিকভাবে দেখার জন্য সোর্স কোডটি জুলিয়া আরইপিএল-এ টাইপ করা হচ্ছে। অন্যথায় ফলাফল মুদ্রণ করার জন্য নিম্নলিখিত কমান্ডটি ব্যবহার করা যেতে পারে:

print()

প্রচলিত নিয়ন্ত্রণ

[সম্পাদনা]

ট্রান্সফার ফাংশন

[সম্পাদনা]

ধরা যাক একটি ট্রান্সফার ফাংশন হলো:

ট্রান্সফার ফাংশন অন্যান্য নিউমেরিক্যাল টুলবক্সের মতোই লব এবং হর ব্যবহার করে তৈরি করা হয়

num = [1, 2]      # Numerator
den = [3, 4, 5]   # Denominator
G = tf(num, den)  # Transfer function

রেপল (REPL) তৈরি করা ট্রান্সফার ফাংশন অবজেক্টটির একটি সংক্ষিপ্ত সারসংক্ষেপ বা পরিচিতি প্রদর্শন করে

TransferFunction{ControlSystems.SisoRational{Int64}}
     s + 2
---------------
3*s^2 + 4*s + 5
Continuous-time transfer function model

ধ্রুবক ও শূন্যবিন্দু

[সম্পাদনা]

ট্রান্সফার ফাংশন এর ধ্রুবকগুলো নিম্নোক্তভাবে গণনা করা হয়

pole(G)

এবং রেপল (REPL) প্রতিক্রিয়াগুলি

 2-element Array{Complex{Float64},1}:
-0.6666666666666665 + 1.1055415967851332im
-0.6666666666666665 - 1.1055415967851332im

ট্রান্সফার ফাংশন এর শূন্যবিন্দু নিম্নোক্তভাবে গণনা করা হয়

tzero(G)

এবং এর ফলে পাওয়া যায়

1-element Array{Float64,1}:
-2.0

ফাংশনটি

zpkdata(G)

রেপল (REPL) শূন্যবিন্দু, ধ্রুবক এবং লাভ (গেইন) প্রদর্শন করবে।

ধ্রুবক-শূন্যবিন্দু প্লট তৈরি করা হয় নিম্নলিখিত ফাংশন ব্যবহার করে

pzmap(G)

ইমপালস এবং স্টেপ প্রতিক্রিয়া

[সম্পাদনা]

উভয় প্লটের জন্য সিমুলেশন সময় এবং একটি লেবেল সংজ্ঞায়িত করা সুবিধাজনক

Tf = 20 # Final simulation time in seconds
impulse_lbl = "y(t) = g(t)" # Label for impulse response g(t)
step_lbl    = "y(t) = h(t)" # Label for step response h(t)

ইম্পালস প্রতিক্রিয়া তৈরি করা হয় নিম্নলিখিত ফাংশন ব্যবহার করে

impulseplot(G, Tf, label=impulse_lbl) # Impulse response

এবং স্টেপ প্রতিক্রিয়া তৈরি করা হয় নিম্নলিখিত ফাংশন ব্যবহার করে

stepplot(G, Tf, label=impulse_lbl) # Step response

জুলিয়ায় স্টেপ প্লট

বোডে এবং নাইকুইস্ট প্লট

[সম্পাদনা]

বোডে প্লটটি নিম্নলিখিত ফাংশন ব্যবহার করে প্রিন্ট করা হয়

bodeplot(G) # Bode plot

এবং নাইকুইস্ট প্লটটি (গেইন সার্কেল ছাড়া) নিম্নলিখিত ফাংশন ব্যবহার করে প্রিন্ট করা হয়

nyquistplot(G, gaincircles=false) # Nyquist plot

গেইন সার্কেলগুলো বুলিয়ান ফ্ল্যাগ ব্যবহার করে চালু বা বন্ধ করা যেতে পারে।

দ্রষ্টব্য:

যদি শুধুমাত্র বোডে/নাইকুইস্ট প্লটের সাংখ্যিক ফলাফল প্রয়োজন হয় এবং সেগুলোর দৃশ্যমান উপস্থাপনা দরকার না হয়, তাহলে নিম্নলিখিত ফাংশন ব্যবহার করা যেতে পারে

bode(G)

এবং

nyquist(G)

আধুনিক নিয়ন্ত্রণ

[সম্পাদনা]

স্টেট-স্পেস উপস্থাপন

[সম্পাদনা]

ধ্রুবক স্থাপন

[সম্পাদনা]

আরও পড়ুন

[সম্পাদনা]

জুলিয়া হোমপেজ

জুলিয়া নথিপত্র

ControlSystems.jl ম্যানুয়াল