PDA

Visualizza la versione completa : [scilab] errore 49


sangi89
08-07-2009, 17:15
salve a tutti.. ho un problema con scilab..

ho i seguenti files fatti con fortran:
errorebisex.txt


program bisezione
real*8 f,bisez,h,a,b
write(*,*)'inserire il primo punto dell''intervallo'
read(*,*)a
write(*,*)'inserire il secondo punto dell''intervallo'
read(*,*)b
if((f(a)*f(b)).lt.0) then
h=bisez(a,b)
write(*,*)'lo zero della funzione nell''intervallo e''',h
else
write(*,*)'non e'' possibile applicare il teorema degli zeri'
endif
end


real*8 function bisez(a,b)
real*8 f,a,b,c,y,x,soglia,z
integer o
soglia=(1./2)*(10.)**(-6)
z=2
o=0
open(unit=100,file='errorebisez.txt')
do while (abs(z).gt.soglia)
x=b
y=f(x)
c=(a+b)/2
z=f(c)
if((y*z).gt.0) then
a=a
b=c
else
b=b
a=c
endif
o=o+1
write(100,'(I8,f35.20)')o,abs(z)
enddo
bisez=c
return
endfunction

real*8 function f(x)
real*8 x
f=(x*x)-sin(x)-1
return
endfunction


errorefissi.txt


program fissi
real*8 f,a,x,fx,soglia,errore,b
integer k
k=0
write(*,*)’inserire il valore del primo estremo’
read(*,*)a
write(*,*)’inserire il valore del secondo estremo’
read(*,*)b
soglia=(1./2)*10**(-6.)
errore=soglia+1
open(unit=100,file='errorefissi.txt')
do while(errore.gt.soglia)
x=a-(f(a)*(a-b)/(f(a)-f(b)))
fx=f(x)
k=k+1
b=a
a=x
errore=abs(fx)
write(*,*)'x=',x
write(*,*) 'f(x)=',fx
write(100,'(I8,f35.20)') k,errore
enddo
close(100)
write(*,*) 'e'' uno zero della funzione'
write(*,*) 'iterazioni',k
end

real*8 function f(x)
real*8 x
f=(x*x)-sin(x)-1
return
end function


errorenewton.txt


program newton
real*8 f,a,x,fx,df,soglia,errore
integer k
k=0
read(*,*)a
fx=7.
soglia=(1./2)*10**(-6.)
errore=soglia+1
open(unit=100,file='errorenewton.txt')
do while(errore.gt.soglia)
x=a-(f(a)/df(a))
fx=f(x)
k=k+1
a=x
errore=abs(fx)
write(100,'(I8,f35.20)') k,errore
enddo
write(*,*)'x=',x
write(*,*) 'f(x)=',fx
write(*,*) 'e'' uno zero della funzione'
write(*,*) 'iterazioni',k
end

real*8 function f(x)
real*8 x
f=(x*x)-sin(x)-1
return
end function

real*8 function df(x)
real*8 x
df=2*x-cos(x)
return
end function



che poi richiamo in scilab per essere plottati col seguente codice:


//Rappresenzazione degli errori per iterazione dei metodi Bisezione, Newton ed ad Estremi Fissi
cd 'C:\Users\utente\Desktop\errori'
unit1=file('open','errorenewton.txt','unknown')
unit2=file('open','errorefissi.txt','unknown')
unit3=file('open','errorebisez.txt','unknown')
x=read(unit1,4,2,"(f15.0,f35.20)");
y=read(unit2,5,2,"(f15.0,f35.20)");
z=read(unit3,19,2,"(f15.0,f35.20)");
plot2d(x(:,1),x(:,2),[6]);
plot2d(y(:,1),y(:,2),[13]);
plot2d(z(:,1),z(:,2),[10]);
legend("Newton","Estremi Fissi","Bisezione");
xtitle('Errore di approssimazione','Numero Iterazioni','Errore assoluto')
close(unit1)
close(unit2)
close(unit3)

il problema è che mi da errore 49 Incorrect file or format.

preciso che mi da lo stesso errore anche con altri programmi.. praticamente nn sono ancora riuscita a plottare nulla.. mi potete aiutare?????

Loading