[Fortran] Szukanie pierwiastków metodą bisekcji

sirduke
Użytkownik
Użytkownik
Posty: 46
Rejestracja: 20 lut 2011, o 09:10
Płeć: Mężczyzna
Lokalizacja: Kraków
Podziękował: 3 razy

[Fortran] Szukanie pierwiastków metodą bisekcji

Post autor: sirduke »

Potrzebuje napisać program w Fortranie 95 szukający pierwiastków funkcji \(\displaystyle{ sin(x)-x^2}\). Napisałem, ale wylicz wartości bez sensu i nie eksportuje danych do pliku. Mógłby ktoś pomóc.
Załączam kod:

Kod: Zaznacz cały

real function f(x)
real x
f=sin(x)-(x*x)
end function f

program bisekcja
implicit none 

real a, b, e, c, x, f
character znak

write (*,*) 'Program poszukuje miejsca zerowego równania w oparciu o metode bisekcji'
write (*,*) 'Podaj przedzial poszukiwan <a,b>' 
write (*,*) 'a = '; read (*,*) a; write (*,*) 'b = '; read (*,*) b;
if((f(a)*f(b))>0)then
  write (*,*)'niepoprawne dane wejsciowe'
  stop
  end if
write (*,*) 'Podaj dokladnodnosc: '; write (*,*) 'e = '; read (*,*) e;

	if((b-a)>e)then
    c=((a+b)/2);
     write (*,*) 'Srodek przedzialu: ';
    write (*,*) c
  
  	endif
  !open(unit=c,file='ja.txt',form='formatted',access='direct',status='new')
  !write (unit=c),c
  open(1,file='ala.txt',form='formatted')
  write(1,*)'ala ma kota'
  do while ((b-a)>e)
    c=(a+b)/2
	if(f(a)*f(b)<0) then
    b=c
    else
      a=c
    
    endif
    write (*,*)'pierwiastek w podprzedziale'; write (*,*) (a+b)/2; write (*,*) (b-a)/2;
 ! 	write(unit=3),3
    enddo

  
read (*,*) znak
end program bisekcja
Ostatnio zmieniony 24 gru 2011, o 19:13 przez Afish, łącznie zmieniany 2 razy.
Powód: Kod w [code][\code]! Tagi dla tematu.
Grzesio_
Użytkownik
Użytkownik
Posty: 44
Rejestracja: 23 gru 2011, o 22:59
Płeć: Mężczyzna
Lokalizacja: Polska
Pomógł: 3 razy

[Fortran] Szukanie pierwiastków metodą bisekcji

Post autor: Grzesio_ »

czy w Fortranie ma znaczenie w której kolumnie znajduje się tekst programu?
Awatar użytkownika
Psiaczek
Użytkownik
Użytkownik
Posty: 1502
Rejestracja: 22 lis 2010, o 09:53
Płeć: Mężczyzna
Lokalizacja: Polska, Warmia, Olsztyn :)
Podziękował: 1 raz
Pomógł: 475 razy

[Fortran] Szukanie pierwiastków metodą bisekcji

Post autor: Psiaczek »

sirduke pisze:
...do while ((b-a)>e)
c=(a+b)/2
if(f(a)*f(b)<0) then
b=c
else
a=c ....

w podkreślonym miejscu , nie powinno być \(\displaystyle{ f(c)}\) w miejscu \(\displaystyle{ f(b)}\) ?
sirduke
Użytkownik
Użytkownik
Posty: 46
Rejestracja: 20 lut 2011, o 09:10
Płeć: Mężczyzna
Lokalizacja: Kraków
Podziękował: 3 razy

[Fortran] Szukanie pierwiastków metodą bisekcji

Post autor: sirduke »

w fortranie 77 grało rolę w której kolumnie jest tekst kodu, ale w nowszym (90/95) chyba to nie ma znaczenia.
to chyba nie o to chodzi z tym f(b) i f(c) bo dalej jest coś nie tak.
ODPOWIEDZ