C ile birinci dereceden üç bilinmeyenli denklem çözümü nasıl yapılır?

Başlatan rf, 06 Temmuz 2010, 01:02:08

rf

ANSI C ile birinci dereceden üç bilinmeyenli denklem çözümü nasıl yapılır? Klasik yöntemleri C ile kodlayamadım.
Bu konuda kullanılan kısa bir yöntem varmıdır?

Teşekkürler,
Saygılarımla.





KOSGEB Girişimcilik Desteği Bilgi ve Paylaşım Platformu http://www.girisimcilikdestegi.com/

JKramer

Cramer's_rule işinize yarayabilir. Bunu da hesap makinanız yoksa denemek için kullanabilirsiniz.

serdararikan

sayısal yöntemler dersi aldıysanız orada bilgisayarla denklem çözümü teknikleri anlatılır.bir sürü yöntem var.örneğin LU decomposition,gauss elemination,iterasyon ... gibi

rf

@JKramer
Gönderdiğiniz linkler için teşekkür ederim hesap makinesi linkindeki java kodlarını inceledim Excell'de bir benzerini yaptım ve doğru çalışmakta.

Kod Seç
<script language="JavaScript">

function 
calculate(equations)
{
= eval(document.equations.X1.value)
= eval(document.equations.Y1.value)
= eval(document.equations.Z1.value)
= eval(document.equations.C1.value)
= eval(document.equations.X2.value)
= eval(document.equations.Y2.value)
= eval(document.equations.Z2.value)
= eval(document.equations.C2.value)
= eval(document.equations.X3.value)
= eval(document.equations.Y3.value)
= eval(document.equations.Z3.value)
= eval(document.equations.C3.value)
<!--
EVALUATING THE DELTA DETERMINANT -->
delta = eval((a*f*k)+(b*g*i)+(c*e*j)-(c*f*i)-(a*g*j)-(b*e*k))
document.output.x.value delta

<!--EVALUATING THE X NUMERATOR ANSWER -->
xnum = eval((d*f*k)+(b*g*l)+(c*h*j)-(c*f*l)-(d*g*j)-(b*h*k))
xans "  " + eval(xnum/delta)
document.output.x.value xans

<!--EVALUATING THE Y NUMERATOR ANSWER -->
ynum = eval((a*h*k)+(d*g*i)+(c*e*l)-(c*h*i)-(a*g*l)-(d*e*k))
yans "  " + eval(ynum/delta)
document.output.y.value yans

<!--EVALUATING THE Z NUMERATOR ANSWER -->
znum = eval((a*f*l)+(b*h*i)+(d*e*j)-(d*f*i)-(a*h*j)-(b*e*l))
zans "  " + eval(znum/delta)
document.output.z.value zans}
</SCRIPT>


@serdararikan
Malesef böyle bir ders almadım matrislerede epeyce uzak kaldığımıda anladım, verdiğiniz keywordler sayesinde ve ufak bir araştırmayla yukarıdaki yöntemin Saruss Kuralı olduğunu buldum yukarıdaki kodu artık kolaylıkla C ye çevirebilirim.

http://www.matematik.tc/matematik-2-konu-anlatimlari-oku/matris-ve-determinant.html
http://en.wikipedia.org/wiki/Determinant

Not1: Nereden esti diyenler için NTC kalibrasyonunda Steinhart-Hart modeli için gereken a,b ve c değerlerinin hesaplanmasında gerekmektedir. üç farklı sıcaklık için verilen üç direnç değeri ile elde edilen 3 bilinmeyenli birinci dereceden denklemi çözmekte kullanacağım.

Not2: Java ile daha önce hiç kodlama yapmadım. Tahmin yöntemi ile kodları okudum.

Teşekkürlerimi sunuyorum,
Saygılarımla,
KOSGEB Girişimcilik Desteği Bilgi ve Paylaşım Platformu http://www.girisimcilikdestegi.com/

ErsinErce

@rf NTC için yazdığım programda matris yöntemi kullanılarak çözüm yaptım programın kodları da forumda mevcut yardımcı olur, bir inceleyin isterseniz.
http://www.picproje.org/index.php/topic,24675.0.html

rf

@cynetron
Programınız çok işime yaradı teşekkür ederim. Sourcecode ları verme inceliğini gösterdiniz ama benim onu açacak IDE'm kurulu olmadığı için NotDefteri ile açtım bi kaçını anlaşılmayan karakterlerle doluydu.

Birde onu sorsaydık ayıp olacaktı artık. Balığı istedik birde kılçıklarını ayıklarmısınız olacaktı.

Yazacağım program sizinkinden farklı olmayacak ama ilerde bunu işlemci içine gömerek online kalibrasyon menüleri oluşturmak istiyorum. Bu nedenle mantığını öğrenmem önemliydi.

Teşekkür ediyorum.
Saygılarımla,

KOSGEB Girişimcilik Desteği Bilgi ve Paylaşım Platformu http://www.girisimcilikdestegi.com/

ErsinErce

@rf
Programı biraz hızlı yazdığım için isimlendirmeler ve kurgu biraz karışık oldu, anlaşılması zor olabilir, bilmemek değil...  diye atasözümüz var ;)
çözümleme yapısında Cramer yöntemini kullanıldım nette sade anlatan şuan bunu bulabildim sayfa 79 http://www.aof.anadolu.edu.tr/kitap/IOLTP/2286/unite03.pdf sayfa 81de örneğide mevcut, bu yöntem birçok yerde işinize yarar.

İyi Çalışmalar.