Probléme en matlab
arita
Messages postés
4
Date d'inscription
Statut
Membre
Dernière intervention
-
Toby -
Toby -
Bonjour,j'ai un script de la methode itérative : methode de jacobi programmée en matlab quand j' essaye de l'excuter il m'affiche l' erreur"??? Error: File: C:\matlabR12\work\gradfixe.m Line: 29 Column: 1
A function declaration cannot appear within a script M-file."
voici le script si quelqu'un peut le corriger:
%programme principal
n=input('donner le nombre de points de discrétisations N : ');
while(n<=0 )
disp('nombre de points de discrétisations doit être strictement positif ');
n=input('nombre de points de discrétisations : ');
end
epsilon=input('donner epsilon :')
h=2/(n+1) ;
A=2*eye(n)-diag(ones((n-1),1),1)-diag(ones((n-1),1),-1)
x(1)=-1 ;f(1)=1 ;b(1)=h*h ;
for i=2 :n+1
x(i)=-1+((i-1)*h)
val=exp(x(i)) ;
f(i)=val ;
b(i)=h*h*f(i) ;
end
na=input(' donner le nombre des alphas pour le traçage de la courbe :')
for i=1 :na
alpha(i) = input ('donner alpha: ');
[v]=gradfixe(A,b,n,alpha,err) ;
nit(i)=v ;
end
plot(nit)
title('Nit=f(a)')
Xlabel('a')
Ylabel('Nit')
function[iter]=gradfixe(A,b,dim,alpha,tol)
% Resolution de Ax=b par la methode du gradient conjugue
clear
close all
x0=ones(dim,1);
% initialisation
r=b-A*x0;
k=0;
% programme principal
xprec=x0;
rprec=r;
pprec=r;
normerprec=norm(r);
nor(1)=normerprec;
while normerprec>tol,
prod=A*pprec;
xsuiv=xprec+alpha*pprec;
rsuiv=rprec-alpha*prod;
beta=(norm(rsuiv))^2/(normerprec)^2;
psuiv=rsuiv+beta*pprec;
xprec=xsuiv;
rprec=rsuiv;
normerprec=norm(rprec);
nor(k+2)=normerprec;
pprec=psuiv;
k=k+1;
end
iter=k ;
x=xprec;
end
A function declaration cannot appear within a script M-file."
voici le script si quelqu'un peut le corriger:
%programme principal
n=input('donner le nombre de points de discrétisations N : ');
while(n<=0 )
disp('nombre de points de discrétisations doit être strictement positif ');
n=input('nombre de points de discrétisations : ');
end
epsilon=input('donner epsilon :')
h=2/(n+1) ;
A=2*eye(n)-diag(ones((n-1),1),1)-diag(ones((n-1),1),-1)
x(1)=-1 ;f(1)=1 ;b(1)=h*h ;
for i=2 :n+1
x(i)=-1+((i-1)*h)
val=exp(x(i)) ;
f(i)=val ;
b(i)=h*h*f(i) ;
end
na=input(' donner le nombre des alphas pour le traçage de la courbe :')
for i=1 :na
alpha(i) = input ('donner alpha: ');
[v]=gradfixe(A,b,n,alpha,err) ;
nit(i)=v ;
end
plot(nit)
title('Nit=f(a)')
Xlabel('a')
Ylabel('Nit')
function[iter]=gradfixe(A,b,dim,alpha,tol)
% Resolution de Ax=b par la methode du gradient conjugue
clear
close all
x0=ones(dim,1);
% initialisation
r=b-A*x0;
k=0;
% programme principal
xprec=x0;
rprec=r;
pprec=r;
normerprec=norm(r);
nor(1)=normerprec;
while normerprec>tol,
prod=A*pprec;
xsuiv=xprec+alpha*pprec;
rsuiv=rprec-alpha*prod;
beta=(norm(rsuiv))^2/(normerprec)^2;
psuiv=rsuiv+beta*pprec;
xprec=xsuiv;
rprec=rsuiv;
normerprec=norm(rprec);
nor(k+2)=normerprec;
pprec=psuiv;
k=k+1;
end
iter=k ;
x=xprec;
end
A voir également:
- Probléme en matlab
- Gnu octave matlab - Télécharger - Édition & Programmation
- Intervalle sur matlab ✓ - Forum Matlab
- Programmer avec MATLAB ✓ - Forum Matlab
- Créer un vecteur en matlab - Forum Matlab
- Projet en finance sur Matlab - Forum Matlab
1 réponse
Bonjour,
Comme tu as pas de réponse, essaye plutot le forum MATLAB :
https://www.developpez.net/forums/f148/environnements-developpement/matlab/
Comme tu as pas de réponse, essaye plutot le forum MATLAB :
https://www.developpez.net/forums/f148/environnements-developpement/matlab/