и не загрязняйте ту тему))))
исходники на си...
Сообщений 1 страница 4 из 4
Поделиться22008-11-11 21:29:13
Вот такая нетривиальная задача... Поиск определителя 3-го порядка не перемножением элементов по алгоритму диагоналей и треугольников, а методом копирования 1 и 2 столбцов матрицы в 3 и 4 соответственно и рассмотрения только диагоналей вместо треугольников .. Не знаю, чем это легче, но препод сказал сделать именно так, я сделал
\\\
#include <stdio.h>
main()
{
float A[3][5];
int i=0; float P=0; float O=0;
int n=0;
printf("Vvedite matricu \n");
for (i=0;i<=2;i++) scanf("%f %f %f",&A[i][0],&A[i][1],&A[i][2]);
for (i=0;i<=2;i++) //kopiruem stolbci 1 i 2 v 4 i 5
{A[i][3]=A[i][0];
A[i][4]=A[i][1];}
int k=0;
float C=1; //bufer umnozheniya elementov
for (n=0;n<=2;n++) //summiruem glavniye diagonali
{
for (i=0;i<3;i++) C=C*(A[i][i+k]);
P=P+C;
k=k+1;
C=1;
}
k=0;
O=P; P=0; C=1;
for (n=0;n<=2;n++) //summiruem pobochniye diagonali
{
for (i=0;i<=2;i++)
C=C*(A[i][2-i+k]);
P=P+C;
k=k+1;
C=1;
}
O=O-P; //vichitaem
printf("opred=%f",O);
}
Отредактировано Лирический физик (2008-11-12 15:54:16)
Поделиться32008-11-14 21:16:42
Перемножение двух матриц 3x3
#include <stdio.h>
main()
{
float A[3][3],B[3][3],C[3][3];
int i=0;
int n=0;
int j=0;
printf("Vvedite matricu 1 \n");
for (i=0;i<=2;i++) scanf("%f %f %f",&A[i][0],&A[i][1],&A[i][2]);
printf("Vvedite matricu 2 \n");
for (i=0;i<=2;i++) scanf("%f %f %f",&B[i][0],&B[i][1],&B[i][2]);
for (i=0;i<=2;i++)
for (j=0;j<=2;j++) C[i][j]=0;
for (n=0;n<=2;n++)
{
for (j=0;j<=2;j++)
for (i=0;i<3;i++) C[n][j]=C[n][j]+A[n][i]*B[i][j];
}
for (i=0;i<=2;i++) printf("%3g %3g %3g \n",C[i][0],C[i][1],C[i][2]);
}
Поделиться42008-11-19 22:44:41
Численный метод поиска нуля монотонной функции (первая теорема Больцано-Коши). Способ дихотомии.
Функцию (монотонную на промежутке) задаем в описании float f
Концы исходного отрезка задаем в теле главной подпрограммы (float a=, float b=).
Точность нахождения нуля (корня многочлена) составляет +- 0,1 (задается как условие повторения цикла).
--
#include <stdio.h>
#include <math.h>
float f(float x)
{
float rez;
rez=pow((x+10),3);
return rez;
}
int main()
{
float b=50;
float a=-50;
float c=0;
float rez=0;
do{
c=(b+a)/2;
if (((f(c)>0)&&(f(b)<0))||((f(c)<0)&&(f(b)>0))) a=c;
else b=c;
}
while ((b-a)>0.1);
rez=(b+a)/2;
printf("koren=%f",rez);
}