ödev etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
ödev etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

29 Mart 2010 Pazartesi

c'de strcat() fonksiyonu

dosya yapıları lab ödevi ile uğraşırken strcat()   fonksiyonu ile karşılaştım,ne işe yaradığını bilmiyordum,biraz bakındım,sizinle de  paylaşmak istedim:
strcat() c'de kullanılan hazır bir fonksiyondur içine aldığı iki arrayden ikincisini birincinin sonuna ekler,örnek koduna bakalım:

#include

int main(int argc, char *argv[])

{

char derya[]="yeni birsey";

char derya2[]="ogrendim";

strcat(derya,derya2);

puts(derya);

system("PAUSE");

return 0;

}

OUTPUT
yeni birseyogrendim

10 Ocak 2010 Pazar

solving systems of ODEs...(ikinci dereceden türevi olan sistemleri çözmek)

%ikinci dereceden türevi verilen denklemleri çözmek için o ikinci dereceyi

%iki tane birinci dereceye parçalayarak çözeriz y dediğim birinci
%dereceden türev,z ikinci dereceden türev değri
%f dosyasını açmayı unutmayın
disp('baslangıc degerlerni griniz:');

y(1)=input('y(1):');

z(1)=input('z(1)');

h=input('h:');

a=input('üst sınır degri:');

b=input('alt sınır degeri');

n=(b-a)/h;

x=a:h:b;

for i=1:n

y(i+1)=y(i)+z(i)*h;

z(i+1)=z(i)+f(x(i),y(i))*h;

end

fprintf('ikinci türev degeri=%f',z(n+1));

f FONKSİYONU

function y=f(x,t);

y=x-t;

OUTPUT
baslangıc degerlerni griniz:


y(1):2

z(1)0

h:0.1

üst sınır degri:0

alt sınır degeri5

ikinci türev degeri=3.127871>>

9 Ocak 2010 Cumartesi

integral bulmada sympson 1/3 kuralı ile sympson 3/8 kuralının beraber uygulanması

daha önce sympson 1/3 kuralını vermiştim bu kez sympson 1/3 ile 3/8 in beraber kullanılmasını  ekledim.çünkü hatırlarsanız 1/3 sadece aralık sayısı  çift olanlar için kullanılıyordu,tek olanlar için ise aşağıdaki kod geçerli olur. %kodu eklerken f fonksiyon dosyasını da eklemeyi unutmayın!!!!!
a=input('alt sını değerini girinz:');

b=input('üst sınır degerini giriniz:');

n=input('segment sayısını ggirniz:');

h=(b-a)/n;

if rem(n,2)==0

k=0;%0a atamayınca hata veriyor

p=0;

x=a:h:b;

for i=2:n %verilen n değeri çift olduğu için sympson 1/3 kuralı uygulanır

if rem(i,2)==0 %indisi çift olanlar(xin indisi 1den başladığı için kitaba göre ters oluyor)

k=k+4*f(x(i));

else %indisi tek olanalr

p=p+2*f(x(i));
end

end

I=(f(a)+f(b)+k+p)*(h/3)

syms x;

trueval=int(sin(x),a,b)

Et=trueval-I

Ea=-((((b-a)^5)/(180*n^4))*(int(sin(x),a,b)/(b-a)))

else %aralık sayısı tek ise sympson 1/3 ile 3/8 beraber kullanılır

if(n==3)%aralık 3 ise sadece sympson 3/8 uygulanır

x=a:h:b;

sum=f(x(1))+3*f(x(2))+3*f(x(3))+f(b);

I=((b-a)/8)*sum

else%aralık tek fakat 3den düyükse ilk 4 nokta için sympson 3/8 geriye kalan noktalara da sympson 1/3 uygulanır

x=a:h:b;

sum1=f(a)+f(4);

sum1=sum1+3*(f(2)+f(3));

I=(b-a)*(sum1/8)%sympson 3/8in uygulandığı kısım

sum2=f(4)+f(b);%geriye kalan noktalara sympson 1/3 uygulanır

for i=6:n

if rem(i,2)==0 %indisi çift olanlar(xin indisi 1den başladığı için kitaba göre ters oluyor)

k=k+4*f(x(i));

else %indisi tek olanalr

p=p+2*f(x(i));
end

end

sum2=sum2+k+p;

T=((b-a)/(3*n))*sum2

integral=I+T%en sonda bulunan iki integral değeri toplanır

end

end
f foNKSİYONU f.m dosyası
function y=f(x);

y=sin(x);

4 Ocak 2010 Pazartesi

sympson 1/3 yöntemi ile integral hesaplama

%sympson 1/3 kuralına göre integral heasaplama 
%sympson 1/3 kuralı n nin tek olduğu durumlarda çalışır
%f fonkisyounun kodunu ayrı bir m-file da açmak gerek


a=input('alt sını değerini girinz:');

b=input('üst sınır degerini giriniz:');

n=input('segment sayısını ggirniz:');//aralık sayısı

h=(b-a)/n;

if rem(n,2)==0;//mod görevi görüyor

else

disp('verilen n degeri gecersiz' )

n=input('yeni n degeri');

end



k=0;%0a atamayınca hata veriyor

p=0;



x=a:h:b;

for i=2:n

if rem(i,2)==0 %indisi çift olanlar(xin indisi 1den başladığı için)

k=k+4*f(x(i));

else %indisi tek olanalr

p=p+2*f(x(i));

end

end

I=(f(a)+f(b)+k+p)*(h/3)

syms x;

trueval=int(sin(x),a,b)

Et=trueval-I

Ea=-((((b-a)^5)/(180*n^4))*(int(sin(x),a,b)/(b-a)))
F FONKSİYONU
function y=f(x);
y=sin(x);
OUTPUT
alt sını değerini girinz:0

üst sınır degerini giriniz:pi
segment sayısını ggirniz:4
I =2.0046
trueval =2
Et =
-10267655424369/2251799813685248
Ea =
-7656611879816833/(576460752303423488*pi)

30 Aralık 2009 Çarşamba

matlab kodu(ordinary differential equations/eulers metod)

numeric metods dersinde differansiyel denklemi verilen eğrinin farklı x değerlerine karşın y değerlerinin bulunması için kulllanılan EULER YÖNTEMİ


a=input('alt sınır:');


b=input('üst sınır');
p=input('baslangıc degeri::');

h=input('h:');//aralık

y=[];

y(1)=p;

n=(b-a)/h;
     
for i=1:n

y(i+1)=y(i)+fon(a,y(i))*h

a=a+h;

end

çağırılan fon fonksiyonu

      function y=fon(x,y);
        y=y*(x^2)-1.2*y;

                ayrı bir mfile dosyasına yazılır
         OUTPUT
alt sınır:0


üst sınır2

baslangıc degeri::1

h:0.5
y =

1.0000 0.4000 0.2100 0.1890 0.2882

25 Aralık 2009 Cuma

menü tabanlı ağaç uygulaması

//veri yapıları dersi için menü tabanlı ağaç uygulaması yazdım,kitaptan da yardım alarak üzerinde değişiklikler ve eklemeler yaparak yazıldı.
#include


#include

#include

typedef struct topluluk{

int bilgi;

struct topluluk *sol,*sag;



}agac;

agac *kok=NULL;

agac *ara(),*sil(),*okuklavye();

void ekranayaz(),ekle(),listele(),terslistele();

agac *sirala();

agac *ara();



int sayagacdugum();



int main(int argc, char *argv[])

{

agac *yeni,*adres;

int bilgi,miktar;

char secim;

while(1){

puts("\nekleme --------e\nsilme-------s\nkucukten buyuge sıralama----------l\nsayma----S\nprogramdan cıkıs------c\nara-----a\nbuyukten kucuge sırala------t ");

secim=getch();

switch(secim){

case 'e': yeni=okuklavye();

ekle(kok,yeni);

break;

case 'l':if(kok!=NULL)

listele(kok);

else

puts("bos liste");

break;

case 's':

puts("silinecek:");

scanf("%d",&bilgi);

adres=sil(kok,bilgi);

if(adres!=NULL)

puts("silindi");

else

puts("silinmek istenen yok!!!!");

break;

case 'c':

puts("hoşçakal!!!!!");

exit(0);

break;

case 'S': miktar=sayagacdugum(kok,0);



printf("agactaki eleman sayısı:%d",miktar);

break;

case 'a':

puts("aranan:");

scanf("%d",&bilgi);

adres=ara(kok,bilgi);

if(adres==NULL)

puts("Aaranan bulunamadı");

else

ekranayaz(adres);

break;

case 't':

if(kok!=NULL)

terslistele(kok);

else

puts("bos liste");

break;

default:

puts("yanlıs secim!!!");

}

}

}



void ekle(agackok,yeni)

agac *agackok,*yeni;

{

if(agackok==NULL)kok=yeni;

else

{

if((yeni->bilgi) <= (agackok->bilgi)){

if(agackok->sol==NULL)

agackok->sol=yeni;

else ekle(agackok->sol,yeni);



}

else{ if(agackok->sag==NULL)

agackok->sag=yeni;

else ekle(agackok->sag,yeni);



}

}



}

void listele(agac *agackok){

if(agackok!=NULL)

{listele(agackok->sol);

ekranayaz(agackok);

listele(agackok->sag);



}

}

void ekranayaz(agac *veri){

printf("\nbilgi:%d",veri->bilgi);

}

agac *sil(agac *agackok,int silinecek)

{ agac *qa,*q,*qc,*sa,*s;

if(agackok==NULL)//ağaçta düğüm olup olmadığı

return NULL;

q=agackok;

qa=NULL;

//silnecek veriyi içeren düğümğn ağaçta olup olmadığı vearsa kendisinin ve ailesinin adresinin bulunması

while(q!=NULL && q->bilgi!=silinecek){

qa=q;

if(silinecek <=q->bilgi)

q=q->sol;

else

q=q->sag;

}

if(q==NULL)//aranan bulundu mu

return NULL;//aranan yok

if(q->sol!=NULL && q->sag!=NULL)//iki alt cocuğu varsa

{

//iki çocuk varsa sol alt ağaçtaki en büyük değerin bulunması ve silinecek olanla yer değişmesi

s=q->sol;

sa=q;

while(s->sag!=NULL){

sa=s;

s=s->sag;

}

q->bilgi=s->bilgi;

q=s;

qa=sa;



}

if(q->sol!=NULL)//qnun en fazla bir çocuğu olabilir



qc=q->sol;

else

qc=q->sag;

//düğüm silme

if(q==agackok)//silinecek olan kök mü

kok=qc;

else

{ //q sag mı sol mu

if(q==qa->sol)

qa->sol=qc;

else

qa->sag=qc;



}

free(q);

return q;

}

int sayagacdugum(agac *agackok,int miktar)

{ if(agackok==NULL) return miktar;//agac bos ise mikrarı değiştirmeden geri döner

miktar++;

miktar=sayagacdugum(agackok->sol,miktar);

miktar=sayagacdugum(agackok->sag,miktar);

return miktar;



}

agac *okuklavye()

{ agac *yeni;

yeni=malloc(sizeof(agac));

if(yeni==NULL){

puts("bellek dolu");

return NULL;

}

puts("bilgi giriniz:");

scanf("%d",&(yeni->bilgi));

yeni->sag=NULL;

yeni->sol=NULL;

return yeni;//bilginin yerleştirildiği adres gönderiliyor

}

agac *ara(agackok,aranan)

agac *agackok;

int aranan;

{ while(agackok!=NULL && agackok->bilgi!=aranan)

{ if(aranan< agackok->bilgi)

agackok=agackok->sol;

else

agackok=agackok->sag;





}

return agackok;



}

agac *sirala(agackok)

agac *agackok;

{

ekranayaz(agackok->sol);

sirala(agackok);

ekranayaz(agackok->sag);





}

void terslistele(agac *agackok)

{ if(agackok!=NULL)

{ terslistele(agackok->sag);

ekranayaz(agackok);

terslistele(agackok->sol);



}

}

25 Kasım 2009 Çarşamba

yaklaşık 4 saatir uğraştığım matlab kodu yrn ödevi öldüm bittim:(

disp('to use exponential form enter 0')


disp('to use power equation enter 1')

disp('to use saturation method enter 2')

deger=input('cozum metodu');

switch deger

case 0

n=input('vektörler kac elemanlı olsun');

a=input('ilk vektörü giriniz:');

b=input('ikinci vektörü giriniz:');

x=a;

y=log(b);



a1=(n*sum(x.*y)-sum(x)*sum(y))/(n*sum(x.^2)-sum(x)^2);

a0=mean(y)-a1*mean(x);

B1=a1

A1=exp(a0)

y=A1*(exp(B1)*a)%farklı bişeyler çıkıyor biyerlerde bi yanlışlık var?

case 1

n=input('vektörler kac elemanlı olsun');

a=input('ilk vektörü giriniz:');

b=input('ikinci vektörü giriniz:');

x=log10(a);

y=log10(b);

a1=(n*sum(x.*y)-sum(x)*sum(y))/(n*sum(x.^2)-sum(x)^2)

a0=mean(y)-a1*mean(x)

A2=10^(a0)

B2=a1

y=A2*(a^B2)%hata veriyor?

case 2



n=input('vektörler kac elemanlı olsun');

a=input('ilk vektörü giriniz:');

b=input('ikinci vektörü giriniz:');

x=1./a;

y=1./b;

a1=(n*sum(x.*y)-sum(x)*sum(y))/(n*sum(x.^2)-sum(x)^2)

a0=mean(y)-a1*mean(x)

A3=1/a0

B3=a1*A3

b=A3*a/(B3+a)

end
 
Facebook

Bizi takip edin!

ESOGÜ Bilişim GünleriESOGÜ Bilişim Günleri