Académique Documents
Professionnel Documents
Culture Documents
I.
a
31 a32 a33 a3n Los
Una matriz es un conjunto de elementos ordenados en las y columnas como
.
..
..
..
..
.
.
.
elementos aij son nmeros reales o complejos, o funciones de una o varias variables. En este libro slo se tratarn
matrices cuyos elementos son nmeros reales.
Para denotar matrices se utilizarn las primeras letras maysculas del alfabeto en cursivas. Cuando se hace referencia
a una matriz es conveniente especicar su nmero de las y columnas. As la expresin de A de mxn, indica que se
trata de una matriz dem las y de n columnas.
Cuando m = n, se tiene una matriz cuadrada de orden n.
Dos matrices son iguales cuando tienen el mismo nmero de las y columnas y, adems, los elementos correspondientes
son iguales.
Dos matrices A y B son conformes en ese orden (primero A y despus B ), si A tiene el mismo nmero de columnas
que B tiene de las.
Se denir la multiplicacin slo para matrices conformes. Dada una matriz A de mxn y una matriz B de nxp, el
producto es una matriz C de mxp cuyo elemento general cij se obtiene por la suma de los productos de los elementos
de i -sima
la de A y la j
-sima columna de B. Si
a11
a21
..
.
A=
ai1
..
.
am1
Y
b11
b21
B= .
..
bn1
a12 a1n
a22 a2n
..
..
.
.
ai2 ain
..
..
.
.
am2 amn
..
..
..
.
.
.
bn2 bnj bnp
Entonces
c11 c12 c1j
c21 c22 c2j
..
..
..
.
.
.
AB = C =
ci1 ci2 cij
..
..
..
.
.
.
cm1 cm2 cmj
Donde
Electronic
address:
c1p
c2p
..
.
cip
..
.
cmp
reyesbp2014@licifug.ugto.mx
Obsrvese que AB 6=
(1)
(2)
(AB)C = A(BC)
(3)
A.
Pseudocdigo
PASO 1:
Declarar las dimensiones de los arreglos para las matrices.
int n=2, m=2;
PASO 2:
Pedir los coecientes de la matriz 1 y de la matriz 2.
Hacer dos ciclos para los coecientes de cada la de cada matriz.
Declarar dos variables auxiliares (i, j).
Iniciar los auxiliares en 1.
PASO 3:
Calcular los coecientes de la matriz 3.
Imprimir la matriz 3.
B.
#include<stdio.h>
main()
{
int n=2, m=2, i=0, j=1;
float a[n][m]; \\ARREGLO PARA MATRIZ A
float b[n][m]; \\ARREGLO PARA MATRIZ B
float c[n][m]; \\ARREGLO PARA MATRIZ C
//LLENAR MATRIZ A
//PRIMER FILA
for(i=1;i<=n;i++)
{
printf("Dame a(%d,%d)\n", i, j);
scanf("%f",&a[i][j]);
}
3
//SEGUNDA FILA
i=1; //REINICIAR i
j=2; //ASIGNAR VALOR A J
while(i<=n)
{
printf("Dame a(%d,%d)\n", i, j);
scanf("%f",&a[i][j]);
i++;
}
//LLENAR MATRIZ B
//PRIMER FILA
j=1; //REINCIAR J
for(i=1;i<=n;i++)
{
printf("Dame b(%d,%d)\n", i, j);
scanf("%f",&b[i][j]);
}
//SEGUNDA FILA
i=1; //REINICIAR i
j=2; //ASIGNAR VALOR A J
while(i<=n)
{
printf("Dame b(%d,%d)\n", i, j);
scanf("%f",&b[i][j]);
i++;
}
//CALCULAR COEFICIENTES MATRIZ C
c[1][1]=(a[1][1]*b[1][1]) + (a[2][1]*b[1][2]);
c[2][1]=(a[1][1]*b[2][1]) + (a[2][1]*b[2][2]);
c[1][2]=(a[1][2]*b[1][1]) + (a[2][2]*b[1][2]);
c[2][2]=(a[1][2]*b[2][1]) + (a[2][2]*b[2][2]);
//IMPRIMIR MATRIZ
printf("La martriz C es \n\n\t (%f,%f)\n\t(%f,%f)\n\t", c[1][1], c[2][1], c[1][2], c[2][2]);
return 0;
}
C.
#include<stdio.h>
#include <stdlib.h>
int main()
{
int af,ac,bf,bc,i,j,k;
//variables para las entradas de las matrices
printf("Numero de filas de la matriz A");
scanf("%d",&af);
printf("Numero de columnas de la matriz A");
scanf("%d",&ac);
printf("Numero de filas de la matriz B");
scanf("%d",&bf);
printf("Numero de columnas de la matriz B");
4
scanf("%d",&bc);
if(ac==bf)
{
int A[af][ac],B[bf][bc],C[af][bc];
for(i=0;i<af;i++)
//ingreso de valores a la matriz A
{
for(j=0;j<ac;j++)
{
printf("escribe el valor de la componente A(%d,%d)=",i+1,j+1);
scanf("%d",&A[i][j]);
}
}
for(i=0;i<bf;i++)
//ingreso de valores a la matriz B
{
for(j=0;j<bc;j++)
{
printf("escribe el valor de la componente B(%d,%d)=",i+1,j+1);
scanf("%d",&B[i][j]);
}
}
for(i=0;i<af;i++)
{
for(j=0;j<bc;j++)
{
C[i][j]=0;
for(k=0;k<ac;k++)
{
C[i][j]=(C[i][j]+(A[i][k]*B[k][j]));
}
}
}
//impresion en pantalla de matrices
printf("\n\n\t\t\tMatriz A");
for(i=0;i<af;i++)
{
printf("\n\t\t");
for(j=0;j<ac;j++)
{
printf(" %6d ",A[i][j]);
}
}
printf("\n\n\t\t\tMatriz B");
for(i=0;i<bf;i++)
{
printf("\n\t\t");
for(j=0;j<bc;j++)
{
printf(" %6d ",B[i][j]);
}
}
printf("\n\n\t\t\tMatriz C");
for(i=0;i<af;i++)
{
}
}
else
{
printf("\n\t\t");
for(j=0;j<bc;j++)
{
printf(" %6d ",C[i][j]);
}
printf("Introduce el mismo numero de columnas para la matriz A y de filas para la matriz B");
}
return 0;
}
II.
Los clculos de la resistencia al avance tambin son importantes en el movimiento bidimensional de proyectiles.
Una pelota de bisbol, por ejemplo, deja el bat con una rapidez aproximada de 100 mi/h(45m/s). Esto ya es mayor
que su rapidez terminal en el aire cuando la soltamos del reposo . La magnitud de la fuerza de resistencia al avance
de D = bv , puede estimarse a partir del clculo precedente. En la ecuacin
vT =
mg
b
vemos que la constante b es el peso mg de la pelota (cerca de 1.4 N, lo cual corresponde a una masa de 0.14 kg),
dividido entre su rapidez terminal, 42 m/s. Por tanto, b = 0.033 N/(m/s). Si la pelota recorre 45 m/s, sentir una
fuerza de resistencia al avance bv con una magnitud aproximada de 1.5 N, que es mayor que su peso y que, por tanto,
tiene un efecto considerable en su movimiento.
La gura (2) muestra el diagrama de cuerpo libre en un punto particular de la trayectoria de la pelota de
bisbol.
Cuando se tiene en cuenta la resistencia del aire, el alcance disminuye de 179m a 72m y la altura mxima de
78m a 48m. Ntese asimismo que la trayectoria ya no es simtrica alrededor de la mxima altura; el movimiento
descendente es mucho ms pronunciado que el ascendente. Con 0 = 60o , el proyectil cae al suelo en un ngulo de
79o , y sin resistencia al avanzar lo hara en un ngulo igual a 0 = 60o .
El clculo ha de efectuarse con mtodos numricos en otras opciones (mas realistas) de la fuerza de resisten~.
cia al avance D
A.
Pseudodigo
Problema: Calcular las posiciones y velocidades en "x" y "y" en cada instante de tiempo.
INPUT:
1. Velocidad inicial
2. ngulo de lanzamiento
3. Posiciones iniciales
4. Constante de friccin
5. Tiempo a estimar
OUTPUT:
1. Posiciones y velocidades en "x" y "y" en cada instante de tiempo
PASO 1:
Declarar como constante pi, g y n.
Declarar como otantes todas las variables a usar (Vo, Xo, Yo, ang, b, tmax, t, dt, ti, dt, Vox, Voy, Vx, Vy, x, y)
PASO 2:
Pedir todos los valores de entrada (Vo, Xo, Yo, ang, b)
Convertir el ngulo de grados a radianes
PASO 3:
Calcular las componentes de Vo
Partir tmax en n
Asignar a ti el valor de dt
Iniciar auxiliar t en 1
PASO 4:
Comenzar el ciclo para calcular x, y, Vx y Vy para cada instante de tiempo desde ti hasta tmax con la condicin de
que el programa termine en cuanto, aunque no llegue a tmax, y sea menor que cero.
Imprimir los valores
B.
#include<stdio.h>
#include<math.h>
#define pi 3.14159264
main()
{
float Vo, Xo, Yo, ang, b; //VALORES DE ENTRADA
CDIGO
7
float
float
float
float
8
C.
#include<stdio.h>
#include<math.h>
#define pi 3.14159264
FILE *doc; //RESERVA DE MEMORIA PARA EL PUNTERO
FILE *doc2;
main()
{
doc=fopen("parab.docx","w"); //CREAR ARCHIVO PARA ESCRIBIR LOS DATOS
doc2=fopen("/home/reyesbp2014/Documentos/Inputs/parab.inp","r"); /*EN EL ARCHIVO YA CREADO,
INSERTAR DATOS*/
float
float
float
float
float
fscanf(doc2, "%f\n %f\n %f\n %f\n %f", &Vo,&Xo,&Yo,&ang,&b,&tmax); /*CON LOS DATOS YA GUARDADOS,
HACE LAS OPERACIONES SIGUIENTES*/
printf("%f", Vo); //VERIFICAR QUE LOS DATOS GUARDADOS ESTAN GUARDADOS
/*printf("Dame la velocidad inicial\n");
scanf("%f",&Vo);
printf("Dame la posicion inicial en x\n");
scanf("%f",&Xo);
printf("Dame la posicion inicial en y\n");
scanf("%f",&Yo);
printf("Dame el angulo de lanzamiento\n");
scanf("%f",&ang);
printf("Dame la constante de friccion\n");
scanf("%f",&b);
printf("Dame el tiempo\n");
scanf("%f",&tmax);*/
//COVERTIR DE GRADOS A RADIANES
ang=(ang*pi)/180;
//CALCULAR LAS COMPONENTES DE VO
Vox=cos(ang)*Vo;
Voy=sin(ang)*Vo;
dt=(tmax-0.0)/n; \\EL TMAX SE PARTIRA EN N
t=1.0; //AUXILIAR PARA HACER EL CICLO HASTA N PARTICIONES
ti=dt; /*PARA INCREMENTAR NO DE UNO EN UNO EL TIEMPO, SINO EN DT PARA VER
MEJOR LA PARABOLA CON MAS PUNTOS*/
while(t<=n)
{
x= (Xo) + ((Vox/b)*(1.0-exp(-1.0*b*ti)));
y= (Yo) + ((((g + (b*Voy))/(pow(b,2)))*(1.0-exp(-1.0*b*ti)))-((g/b)*ti));
if(y<0)
{
9
goto flagn;
}
Vx= Vox*exp(-1.0*b*ti);
Vy= (((exp(-1.0*b*ti))*(g+(b*Voy)))-g)/b;
ti=ti+dt; //SUMAR AL TI DT PARA LLEGAR A TMAX HASTA LLEGAR A N PARTICIONES
t++; //INCREMENTAR T
fprintf(doc,"%f\t%f\t%f\t%f\t%f\n",ti,x,y,Vx,Vy); //IMPRIMIR EN EL ARCHIVO LOS VALORES
//printf("%f\t%f\t%f\t%f\t%f\n",ti,x,y,Vx,Vy);
//printf("Para t=%f la posicion en x es %f y en y %f \n la velocidad en x es %f y en y %f \n", t, x,
y, Vx, Vy);
}
fclose(doc); //CERRAR PUNTEROS
fclose(doc2);
flagn:
return 0;
}
[1] Mtodo numricos aplicados a la ingeniera, Nieves Dominguez, Captulo 3, seccin 3.1.
[2] Resnick, Halliday, Krane, A. Fsica Volumen 1. Mxico: Compa Editorial Continental, 2002, pp. 73