Picproje Elektronik Sitesi

SERBEST BÖLGE => Bilim Teknik => Matlab => Konuyu başlatan: pea - 03 Aralık 2011, 21:35:28

Başlık: Solve komutu
Gönderen: pea - 03 Aralık 2011, 21:35:28
Matlab öğrenmeye çalışıyorum ancak solve komutunda takıldım.
Q= (2*pi*1000*80)/((1/(250*0.029))+(log(0.029/0.039))+(log(R/0.039)/0.03)+(1/(12*R)))
Şeklinde bir denklem var.Q da 23241.
Buradan R'yi çekmem lazım.

solve ('(2*pi*1000*80)/((1/(250*0.029))+(log(0.029/0.039))+(log(R/0.039)/0.03)+(1/(12*R)))=23241','R)
yazınca

ans = 0.07243097978982206343809881473143 - 8.3121704498543223282959666612491*10^(-43)*i

Şeklinde bir sonuç alıyorum.Format short olmasına rağmen.
Bu sonucun Reel kısmı benim aradığım R değeri , ancak sonucun sanal kısmı nereden niye geliyor anlamadım.

İlk sorum ; format short olmasına rağmen neden virgülden sonra 32 basamaklı bir sonuç alıyorum?
İkinci sorum ise sanal kısım nereden geliyor ve nasıl kurtulabilirim?

Teşekkürler  :)
Başlık: Ynt: Solve komutu
Gönderen: ferdem - 03 Aralık 2011, 22:08:59
Kompleks kısım 10^-43 çıkmış, 0 zaten. Matlabin neden kompleks kısım bulduğu nasıl hesapladığından anlaşılabilir. Sonucu
sonuc=round(100*(real(sonuc)))/100 şeklinde gösterin olsun bitsin. Yani real kısmı alıp 100 ile çarpıyoruz, round ile tamsayiya yuvarlayıp tekrar 100 e bölüyoruz.
Başlık: Ynt: Solve komutu
Gönderen: pea - 03 Aralık 2011, 22:42:32
subs ve real komutlarıyla işi yarım yamalak da olsa hallettim.
Teşekkürler
Başlık: Ynt: Solve komutu
Gönderen: pea - 03 Aralık 2011, 23:49:31
Yeni soru :
R dışındaki değişkenleri formüle yerleştirip Solve komutunu kullanmam gerekiyor.Ancak Solve komutu , formülde başka değişken varken sonuç veremiyor.
Yani ; formül şöyle :
(2*pi*L*deltat)/((1/(hic*iccap))+(log(iccap/cap)/kplastik)+(log(R/cap)/kyalitim)+(1/(hdis*R)))
Buradaki değişkenler input fonksiyonu ile girildi.Sadece R bilinmiyor ve Solve komutu ile bulunacak.
Ancak bu formülü direkt uygulayınca sonuç alamıyorum , sonuç bulunamadı diyor.
Solve'dan önce formülü işletirsem şöyle bir şey geliyor :

ans =

8635544130894091/(17179869184*((100*log((144115188075855872*R)/5726474923259005))/3 + 1/(12*R) - 5598313628169439/36028797018963968))

Matlab sayıları kendine göre genişletebildiği kadar genişletmiş.
Bunu da Solve'a atınca sonuç bulunamıyor.
Yapmam gereken şey nedir acaba?
Başlık: Ynt: Solve komutu
Gönderen: ferdem - 04 Aralık 2011, 01:17:03
İlginç, solve dan önce
(2*pi*L*deltat)/((1/(hic*iccap))+(log(iccap/cap)/kplastik) kısmını hesaplatıp *1000, round, /1000 numarasıyla(veya varsa bu işi yapan daha formal bir fonksiyonla) virgülden sonra 3 haneye düşürüp solve fonksiyonunun işini kolayştırmayı deneyebilirsiniz.
Başlık: Ynt: Solve komutu
Gönderen: pea - 04 Aralık 2011, 16:23:42
Bilinmeyen "R" ifadesi , paydada bulunduğu için o kısmı hesaplatamam.
Aldığım genişletilmiş sonuçlar da tam sayı olduğu için virgülden sonrasını atmak gibi bir yol yok şu an.
Başlık: Ynt: Solve komutu
Gönderen: pea - 04 Aralık 2011, 19:54:30
Solve komutunda istenen değişken dışında bir şey tutamıyoruz sanırım.Ya da değişkenin limiti var.
Bol değişkenli formülü tek bir değişkene atayıp sonuç buldurup , o değişkeni de solve'a atınca sonuç verebiliyor.
Ama bu verdiği sonuç da çok uzun.Bu sonucu da subs'a atınca kısalıyor.