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 −
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 −
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