Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> MATLAB

Menghitung Turunan Simbolik di MATLAB dengan Perintah diff

MATLAB menyediakan perintah diff untuk menghitung turunan simbolik. Dalam bentuk sederhananya, Anda meneruskan fungsi yang ingin diturunkan ke perintah diff sebagai argumen.

Misalnya, mari kita hitung turunan dari fungsi f(t) = 3t2 + 2t-2

Contoh

Buat file skrip dan ketikkan kode berikut di dalamnya −

 syms t f = 3*t^2 + 2*t^(-2); diff(f) 

Ketika kode di atas dikompilasi dan dieksekusi, hasilnya adalah sebagai berikut −

 ans = 6*t - 4/t^3 

Berikut adalah setara Octave dari perhitungan di atas −

 pkg load symbolic symbols t = sym("t"); f = 3*t^2 + 2*t^(-2); differentiate(f,t) 

Octave mengeksekusi kode dan mengembalikan hasil berikut −

 ans = -(4.0)*t^(-3.0)+(6.0)*t 

Verifikasi Aturan Dasar Turunan

Mari kita sebutkan secara singkat berbagai persamaan atau aturan untuk turunan fungsi dan verifikasi aturan-aturan tersebut. Untuk tujuan ini, kita akan menulis f'(x) untuk turunan orde pertama dan f"(x) untuk turunan orde kedua.

Berikut adalah aturan turunan −

Aturan 1

Untuk fungsi apapun f dan g dan bilangan real apapun a dan b, turunan dari fungsi −

h(x) = af(x) + bg(x) terhadap x diberikan oleh −

h'(x) = af'(x) + bg'(x)

Aturan 2

Aturan jumlah dan pengurangan menyatakan bahwa jika f dan g adalah dua fungsi, dan f' dan g' adalah turunan masing-masing, maka,

(f + g)' = f' + g'

(f - g)' = f' - g'

Aturan 3

Aturan perkalian menyatakan bahwa jika f dan g adalah dua fungsi, dan f' dan g' adalah turunan masing-masing, maka,

(f.g)' = f'.g + g'.f

Aturan 4

Aturan pembagian menyatakan bahwa jika f dan g adalah dua fungsi, dan f' dan g' adalah turunan masing-masing, maka,

(f/g)' = (f'.g - g'.f)/g2

Aturan 5

Aturan polinomial atau pangkat dasar menyatakan bahwa, jika y = f(x) = xn, maka f' = n. x(n-1)

Hasil langsung dari aturan ini adalah turunan dari konstanta apapun adalah nol, yaitu, jika y = k, konstanta apapun, maka

f' = 0

Aturan 6

Aturan rantai menyatakan bahwa, turunan dari fungsi komposit h(x) = f(g(x)) terhadap x adalah,

h'(x)= f'(g(x)).g'(x)

Contoh

Buat file skrip dan ketikkan kode berikut di dalamnya −

 syms x syms t f = (x + 2)*(x^2 + 3) der1 = diff(f) f = (t^2 + 3)*(sqrt(t) + t^3) der2 = diff(f) f = (x^2 - 2*x + 1)*(3*x^3 - 5*x^2 + 2) der3 = diff(f) f = (2*x^2 + 3*x)/(x^3 + 1) der4 = diff(f) f = (x^2 + 1)^17 der5 = diff(f) f = (t^3 + 3* t^2 + 5*t -9)^(-6) der6 = diff(f) 

Ketika Anda menjalankan file, MATLAB menampilkan hasil berikut −

 f = (x^2 + 3)*(x + 2) der1 = 2*x*(x + 2) + x^2 + 3 f = (t^(1/2) + t^3)*(t^2 + 3) der2 = (t^2 + 3)*(3*t^2 + 1/(2*t^(1/2))) + 2*t*(t^(1/2) + t^3) f = (x^2 - 2*x + 1)*(3*x^3 - 5*x^2 + 2) der3 = (2*x - 2)*(3*x^3 - 5*x^2 + 2) - (- 9*x^2 + 10*x)*(x^2 - 2*x + 1) f = (2*x^2 + 3*x)/(x^3 + 1) der4 = (4*x + 3)/(x^3 + 1) - (3*x^2*(2*x^2 + 3*x))/(x^3 + 1)^2 f = (x^2 + 1)^17 der5 = 34*x*(x^2 + 1)^16 f = 1/(t^3 + 3*t^2 + 5*t - 9)^6 der6 = -(6*(3*t^2 + 6*t + 5))/(t^3 + 3*t^2 + 5*t - 9)^7 

Berikut adalah setara Octave dari perhitungan di atas −

 pkg load symbolic symbols x = sym("x"); t = sym("t"); f = (x + 2)*(x^2 + 3) der1 = differentiate(f,x) f = (t^2 + 3)*(t^(1/2) + t^3) der2 = differentiate(f,t) f = (x^2 - 2*x + 1)*(3*x^3 - 5*x^2 + 2) der3 = differentiate(f,x) f = (2*x^2 + 3*x)/(x^3 + 1) der4 = differentiate(f,x) f = (x^2 + 1)^17 der5 = differentiate(f,x) f = (t^3 + 3* t^2 + 5*t -9)^(-6) der6 = differentiate(f,t) 

Octave mengeksekusi kode dan mengembalikan hasil berikut −

 f = (2.0+x)*(3.0+x^(2.0)) der1 = 3.0+x^(2.0)+(2.0)*(2.0+x)*x f = (t^(3.0)+sqrt(t))*(3.0+t^(2.0)) der2 = (2.0)*(t^(3.0)+sqrt(t))*t+((3.0)*t^(2.0)+(0.5)*t^(-0.5))*(3.0+t^(2.0)) f = (1.0+x^(2.0)-(2.0)*x)*(2.0-(5.0)*x^(2.0)+(3.0)*x^(3.0)) der3 = (-2.0+(2.0)*x)*(2.0-(5.0)*x^(2.0)+(3.0)*x^(3.0))+((9.0)*x^(2.0)-(10.0)*x)*(1.0+x^(2.0)-(2.0)*x) f = (1.0+x^(3.0))^(-1)*((2.0)*x^(2.0)+(3.0)*x) der4 = (1.0+x^(3.0))^(-1)*(3.0+(4.0)*x)-(3.0)*(1.0+x^(3.0))^(-2)*x^(2.0)*((2.0)*x^(2.0)+(3.0)*x) f = (1.0+x^(2.0))^(17.0) der5 = (34.0)*(1.0+x^(2.0))^(16.0)*x f = (-9.0+(3.0)*t^(2.0)+t^(3.0)+(5.0)*t)^(-6.0) der6 = -(6.0)*(-9.0+(3.0)*t^(2.0)+t^(3.0)+(5.0)*t)^(-7.0)*(5.0+(3.0)*t^(2.0)+(6.0)*t) 

Turunan Fungsi Eksponensial, Logaritma, dan Trigonometri

Tabel berikut menyediakan turunan dari fungsi eksponensial, logaritma, dan trigonometri yang umum digunakan −

Fungsi Turunan
ca.x ca.x.ln c.a (ln adalah logaritma natural)
ex ex
ln x 1/x
lncx 1/x.ln c
xx xx.(1 + ln x)
sin(x) cos(x)
cos(x) -sin(x)
tan(x) sec2(x), atau 1/cos2(x), atau 1 + tan2(x)
cot(x) -csc2(x), atau -1/sin2(x), atau -(1 + cot2(x))
sec(x) sec(x).tan(x)
csc(x) -csc(x).cot(x)

Contoh

Buat file skrip dan ketikkan kode berikut di dalamnya −

 syms x y = exp(x) diff(y) y = x^9 diff(y) y = sin(x) diff(y) y = tan(x) diff(y) y = cos(x) diff(y) y = log(x) diff(y) y = log10(x) diff(y) y = sin(x)^2 diff(y) y = cos(3*x^2 + 2*x + 1) diff(y) y = exp(x)/sin(x) diff(y) 

Ketika Anda menjalankan file, MATLAB menampilkan hasil berikut −

 y = exp(x) ans = exp(x) y = x^9 ans = 9*x^8 y = sin(x) ans = cos(x) y = tan(x) ans = tan(x)^2 + 1 y = cos(x) ans = -sin(x) y = log(x) ans = 1/x y = log(x)/log(10) ans = 1/(x*log(10)) y = sin(x)^2 ans = 2*cos(x)*sin(x) y = cos(3*x^2 + 2*x + 1) ans = -sin(3*x^2 + 2*x + 1)*(6*x + 2) y = exp(x)/sin(x) ans = exp(x)/sin(x) - (exp(x)*cos(x))/sin(x)^2 

Berikut adalah setara Octave dari perhitungan di atas −

 pkg load symbolic symbols x = sym("x"); y = Exp(x) differentiate(y,x) y = x^9 differentiate(y,x) y = Sin(x) differentiate(y,x) y = Tan(x) differentiate(y,x) y = Cos(x) differentiate(y,x) y = Log(x) differentiate(y,x) % paket simbolik tidak memiliki dukungan ini %y = Log10(x) %differentiate(y,x) y = Sin(x)^2 differentiate(y,x) y = Cos(3*x^2 + 2*x + 1) differentiate(y,x) y = Exp(x)/Sin(x) differentiate(y,x) 

Octave mengeksekusi kode dan mengembalikan hasil berikut −

 y = exp(x) ans = exp(x) y = x^(9.0) ans = (9.0)*x^(8.0) y = sin(x) ans = cos(x) y = tan(x) ans = 1+tan(x)^2 y = cos(x) ans = -sin(x) y = log(x) ans = x^(-1) y = sin(x)^(2.0) ans = (2.0)*sin(x)*cos(x) y = cos(1.0+(2.0)*x+(3.0)*x^(2.0)) ans = -(2.0+(6.0)*x)*sin(1.0+(2.0)*x+(3.0)*x^(2.0)) y = sin(x)^(-1)*exp(x) ans = sin(x)^(-1)*exp(x)-sin(x)^(-2)*cos(x)*exp(x) 

Menghitung Turunan Orde Tinggi

Untuk menghitung turunan orde lebih tinggi dari fungsi f, kita gunakan sintaks diff(f,n).

Mari kita hitung turunan kedua dari fungsi y = f(x) = x .e-3x

 f = x*exp(-3*x); diff(f, 2) 

MATLAB mengeksekusi kode dan mengembalikan hasil berikut −

 ans = 9*x*exp(-3*x) - 6*exp(-3*x) 

Berikut adalah setara Octave dari perhitungan di atas −

 pkg load symbolic symbols x = sym("x"); f = x*Exp(-3*x); differentiate(f, x, 2) 

Octave mengeksekusi kode dan mengembalikan hasil berikut −

 ans = (9.0)*exp(-(3.0)*x)*x-(6.0)*exp(-(3.0)*x) 

Contoh

Dalam contoh ini, mari kita selesaikan sebuah masalah. Diberikan bahwa fungsi y = f(x) = 3 sin(x) + 7 cos(5x). Kita harus menentukan apakah persamaan f" + f = -5cos(2x) benar.

Buat file skrip dan ketikkan kode berikut di dalamnya −

 syms x y = 3*sin(x)+7*cos(5*x); % mendefinisikan fungsi lhs = diff(y,2)+y; %mengevaluasi sisi kiri persamaan rhs = -5*cos(2*x); %sisi kanan persamaan if(isequal(lhs,rhs)) disp('Ya, persamaan benar'); else disp('Tidak, persamaan tidak benar'); end disp('Nilai LHS adalah: '), disp(lhs); 

Ketika Anda menjalankan file, hasilnya adalah sebagai berikut −

 Tidak, persamaan tidak benar Nilai LHS adalah: -168*cos(5*x) 

Berikut adalah setara Octave dari perhitungan di atas −

 pkg load symbolic symbols x = sym("x"); y = 3*Sin(x)+7*Cos(5*x); % mendefinisikan fungsi lhs = differentiate(y, x, 2) + y; %mengevaluasi sisi kiri persamaan rhs = -5*Cos(2*x); %sisi kanan persamaan if(lhs == rhs) disp('Ya, persamaan benar'); else disp('Tidak, persamaan tidak benar'); end disp('Nilai LHS adalah: '), disp(lhs); 

Octave mengeksekusi kode dan mengembalikan hasil berikut −

 Tidak, persamaan tidak benar Nilai LHS adalah: -(168.0)*cos((5.0)*x) 

Mencari Maksimum dan Minimum Kurva

Jika kita mencari maksimum dan minimum lokal untuk grafik, kita pada dasarnya mencari titik tertinggi atau terendah pada grafik fungsi di lokasi tertentu, atau untuk rentang nilai tertentu dari variabel simbolik.

Untuk fungsi y = f(x), titik pada grafik di mana grafik memiliki nol kemiringan disebut titik stasioner. Dengan kata lain, titik stasioner adalah di mana f'(x) = 0.

Untuk menemukan titik stasioner dari sebuah fungsi, kita turunkan, kita perlu menyetapkan turunan sama dengan nol dan menyelesaikan persamaannya.

Contoh

Mari kita cari titik stasioner dari fungsi f(x) = 2x3 + 3x2 − 12x + 17

Lakukan langkah berikut −

Pertama mari kita masukkan fungsi dan plot grafiknya.

 syms x y = 2*x^3 + 3*x^2 - 12*x + 17; % mendefinisikan fungsi ezplot(y) 

MATLAB mengeksekusi kode dan mengembalikan plot berikut −

Menghitung Turunan Simbolik di MATLAB dengan Perintah diff

Berikut adalah kode setara Octave untuk contoh di atas −

 pkg load symbolic symbols x = sym('x'); y = inline("2*x^3 + 3*x^2 - 12*x + 17"); ezplot(y) print -deps graph.eps 

Tujuan kami adalah menemukan beberapa maksimum dan minimum lokal pada grafik, jadi mari kita cari maksimum dan minimum lokal untuk interval [-2, 2] pada grafik.

 syms x y = 2*x^3 + 3*x^2 - 12*x + 17; % mendefinisikan fungsi ezplot(y, [-2, 2]) 

MATLAB mengeksekusi kode dan mengembalikan plot berikut −

Menghitung Turunan Simbolik di MATLAB dengan Perintah diff

Berikut adalah kode setara Octave untuk contoh di atas −

 pkg load symbolic symbols x = sym('x'); y = inline("2*x^3 + 3*x^2 - 12*x + 17"); ezplot(y, [-2, 2]) print -deps graph.eps 

Selanjutnya, mari kita hitung turunan.

 g = diff(y) 

MATLAB mengeksekusi kode dan mengembalikan hasil berikut −

 g = 6*x^2 + 6*x - 12 

Berikut adalah setara Octave dari perhitungan di atas −

 pkg load symbolic symbols x = sym("x"); y = 2*x^3 + 3*x^2 - 12*x + 17; g = differentiate(y,x) 

Octave mengeksekusi kode dan mengembalikan hasil berikut −

 g = -12.0+(6.0)*x+(6.0)*x^(2.0) 

Mari kita selesaikan fungsi turunan, g, untuk mendapatkan nilai di mana itu menjadi nol.

 s = solve(g) 

MATLAB mengeksekusi kode dan mengembalikan hasil berikut −

 s = 1 -2 

Berikut adalah setara Octave dari perhitungan di atas −

 pkg load symbolic symbols x = sym("x"); y = 2*x^3 + 3*x^2 - 12*x + 17; g = differentiate(y,x) roots([6, 6, -12]) 

Octave mengeksekusi kode dan mengembalikan hasil berikut −

 g = -12.0+(6.0)*x^(2.0)+(6.0)*x ans = -2 1 

Ini sesuai dengan plot kita. Jadi mari kita evaluasi fungsi f di titik kritis x = 1, -2. Kita dapat mengganti nilai dalam fungsi simbolik dengan menggunakan perintah subs.

 subs(y, 1), subs(y, -2) 

MATLAB mengeksekusi kode dan mengembalikan hasil berikut −

 ans = 10 ans = 37 

Berikut adalah setara Octave dari perhitungan di atas −

 pkg load symbolic symbols x = sym("x"); y = 2*x^3 + 3*x^2 - 12*x + 17; g = differentiate(y,x) roots([6, 6, -12]) subs(y, x, 1), subs(y, x, -2) 

 ans = 10.0 ans = 37.0-4.6734207789940138748E-18*I 

Oleh karena itu, nilai minimum dan maksimum pada fungsi f(x) = 2x3 + 3x2 − 12x + 17, dalam interval [-2,2] adalah 10 dan 37.

Menyelesaikan Persamaan Diferensial

MATLAB menyediakan perintah dsolve untuk menyelesaikan persamaan diferensial secara simbolik.

Bentuk paling dasar dari perintah dsolve untuk menemukan solusi dari satu persamaan adalah

 dsolve('eqn') 

di mana eqn adalah string teks yang digunakan untuk memasukkan persamaan.

Ini mengembalikan solusi simbolik dengan serangkaian konstanta sembarang yang ditandai MATLAB sebagai C1, C2, dan seterusnya.

Anda juga dapat menentukan kondisi awal dan batas untuk masalah, sebagai daftar yang dipisahkan koma setelah persamaan sebagai −

 dsolve('eqn','cond1', 'cond2',…) 

Untuk tujuan menggunakan perintah dsolve, turunan ditandai dengan D. Misalnya, persamaan seperti f'(t) = -2*f + cost(t) dimasukkan sebagai −

'Df = -2*f + cos(t)'

Turunan lebih tinggi ditandai dengan menambahkan D dengan orde turunan.

Misalnya persamaan f"(x) + 2f'(x) = 5sin3x harus dimasukkan sebagai −

'D2y + 2Dy = 5*sin(3*x)'

Mari kita ambil contoh sederhana persamaan diferensial orde pertama: y' = 5y.

 s = dsolve('Dy = 5*y') 

MATLAB mengeksekusi kode dan mengembalikan hasil berikut −

 s = C2*exp(5*t) 

Mari kita ambil contoh lain dari persamaan diferensial orde kedua sebagai: y" - y = 0, y(0) = -1, y'(0) = 2.

 dsolve('D2y - y = 0','y(0) = -1','Dy(0) = 2') 

MATLAB mengeksekusi kode dan mengembalikan hasil berikut −

 ans = exp(t)/2 - (3*exp(-t))/2 

MATLAB

  1. Apa Itu Differential? Memahami Peran, Jenis, dan Perawatannya
  2. Flu Diferensial Dijelaskan: Tujuan, Jenis, dan Pemeliharaan
  3. Memahami Tipe Data MATLAB: Panduan Lengkap
  4. Mahir Operator MATLAB: Panduan Lengkap Operasi Aritmetika, Logis, dan Bitwise
  5. Mahir Dasar Matriks MATLAB: Buat, Referensi, dan Manipulasi Data
  6. MATLAB: Menguasai Array Multidimensi dan Khusus
  7. Menguasai Notasi Titik Dua MATLAB: Buat Vektor & Iterasi dengan Efisien
  8. MATLAB – Angka: Tipe, Penyimpanan, dan Konversi
  9. Menguasai String MATLAB: Panduan Pembuatan & Penggunaan yang Mudah
  10. Fungsi MATLAB: Definisi, Ruang Kerja, Masukan & Keluaran