Pauta Prueba Nº 2

Anuncio
UNIVERSIDAD DE CONCEPCIÓN
FACULTAD DE INGENIERÍA AGRÍCOLA
DEPTO. DE AGROINDUSTRIAS
Juan Carlos Sandoval Avendaño
PAUTA PRUEBA N° 2
LENGUAJE DE PROGRAMACIÓN
INGENIERÍA CIVIL AGRÍCOLA
NOMBRE :___________________________________________ PTOS. :________
TIEMPO MÁXIMO : 1 HORA 40 MINUTOS
FECHA : Lu 03/07/06
(1) El método de Newton-Raphson resuelve ecuaciones no lineales de la
forma 0 ÐBÑ œ !ß para lo cual es preciso conocer un valor aproximado de la
raíz. Este método parte con una aproximación inicial B! y genera la sucesión
0 ÐB Ñ
˜B8 ™
definida por
B8 œ B8"  w 8" ß 8 œ "ß #ß $ß ÞÞÞÞÞÞ
8−
0 ÐB8" Ñ
El proceso de generación de aproximaciones sucesivas se detiene cuando
+Ñ kB8  B8" k  %ß donde % es un número positivo pequeño
,Ñ El número de iteraciones excede a un número de iteraciones máximo
dado.
Prepare un programa en pascal que:
+Ñ Muestre por pantalla, considerando 1 decimal, la solución de la ecuación
/B =/8ÐBÑ œ "ß usando el método de Newton-RaphsonÞ
Los valores de % ß B! y el número de iteraciones máximo deben ser
ingresados por el usuario.
,Ñ Genere un archivo de texto con la siguiente información (debe incluir los
valores y expresiones correspondientes):
VALOR DE EPSILON:
NÚMERO DE ITERACIONES MÁXIMO:
ITERACIÓN
VALOR
!
B!
"
B"
#
B#
Þ
Þ
Þ
Þ
(30 puntos)
Solución:
Program Newton_Raphson;
Type vector=array[0..1000] of real;
Var
n : integer;
x : vector;
eps : real;
Ar : Text;
NMaxIter : integer;
1
Function f(x:real):real;
begin
f:=exp(x)*sin(x)-1;
end;
Function fp(x:real):real;
begin
fp:=exp(x)*(sin(x)+cos(x));
end;
Begin
Write('Ingrese epsilon : ');
Readln(eps);
Write('Ingrese x0 : ');
Readln(x[0]);
Write('Ingrese el número máximo de iteraciones : ');
Readln(NMaxIter);
Assign(Ar,'NEWTON.TXT');
Rewrite(Ar);
Writeln(Ar,'VALOR DE EPSILON: ',eps:0:10);
Writeln(Ar,'NÚMERO DE ITERACIONES MÁXIMO: ',NMaxIter);
Writeln(Ar,'ITERACIÓN ',' ':6,'VALOR');
n:=0;
Writeln(Ar,' ':4,n,' ':8,x[n]:0:10);
Repeat
n:=n+1;
x[n]:=x[n-1]-f(x[n-1])/fp(x[n-1]);
Writeln(Ar,' ':4,n,' ':8,x[n]:0:10);
until (abs(x[n]-x[n-1])<eps) or (n>NMaxIter);
Writeln('La solución aproximada es : ',x[n]:0:1);
Close(Ar);
End.
(2) +Ñ Escriba una unidad en pascal que permita calcular la suma y el
producto de dos matrices de orden 3, triangulares inferior.
Además esta unidad debe calcular el determinante de una matriz triangular
inferior de orden 3Þ
,Ñ Use la unidad de la parte +Ñ para calcular y mostrar por pantalla la matriz
ÐE  FÑ † Eß usando formato matricial, donde +3 4 œ 3  4 y ,3 4 œ 3  4 à
3ß 4 œ "ß #ß $Þ
(30 puntos)
Solución:
2
+Ñ UNIDAD MATRICES.PAS
Unit Matrices;
Interface
Const
n=3;
Type
Matriz=array[1..n,1..n] of real;
Procedure Suma(A,B:matriz;var C:matriz);
Procedure Producto(A,B:matriz;var C:matriz);
Function Determinante(A:matriz):real;
Implementation
Procedure Suma(A,B:matriz;var C:matriz);
var
i,j : 1..n;
begin
for i:=1 to n do
for j:=1 to n do
C[i,j]:=A[i,j]+B[i,j];
end;
Procedure Producto(A,B:matriz;var C:matriz);
Var
i, j , k : 1..n;
begin
for i:=1 to n do
for j:=1 to n do
begin
C[i,j]:=0;
for k:=1 to n do
C[i,j]:=C[i,j]+A[i,k]*B[k,j];
end;
end;
Function Determinante(A:matriz):real;
Var
Prod : real;
i:1..n;
begin
Prod:=1;
for i:=1 to n do
Prod:=Prod*A[i,i];
Determinante:=Prod;
end;
End.
3
,Ñ PROGRAMA QUE USA LA UNIDAD ANTERIOR:
Program UsoMatrices;
Uses Matrices, Crt;
Var
i, j : 1..n;
A, B , C, P : matriz;
Begin
ClrScr;
for i:=1 to n do
for j:=1 to n do
begin
A[i,j]:=i+j;
B[i,j]:=i-j;
end;
Suma(A,B,C);
Producto(C,A,P);
for i:=1 to n do
for j:=1 to n do
begin
GotoXY(4+(j-1)*8,2+(i-1)*2);
Write(P[i,j]:0:2);
end;
End.
4
Descargar