Você está na página 1de 10

CURSO SUPERIOR EM ENGENHARIA DE CONTROLE E AUTOMAÇÃO

Lista 2 – Cálculo Numérico


Disciplina: Circuitos Elétricos Experimental Turma: ECA2020
Professor: Ricardo Kerschbaumer Período: 2023/ 2° Semestre
Aluna: Marina Caldart Data da atividade: 12/12/2023

Lista 2

1) Abaixo está a imagem da questão 1 resolvida:


2)

→ Programação:

#include <stdio.h>
#include <math.h>

// Função para encontrar os coeficientes do polinômio de segundo grau


void metodoDosMinimosQuadrados(double x[], double y[], int n, double coeficientes[])
{
double somaX = 0, somaX2 = 0, somaX3 = 0, somaX4 = 0, somaY = 0, somaXY = 0,
somaX2Y = 0;

for (int i = 0; i < n; i++) {


somaX += x[i];
somaX2 += pow(x[i], 2);
somaX3 += pow(x[i], 3);
somaX4 += pow(x[i], 4);
somaY += y[i];
somaXY += x[i] * y[i];
somaX2Y += pow(x[i], 2) * y[i];
}

double matriz[3][4] = {
{somaX4, somaX3, somaX2, somaX2Y},
{somaX3, somaX2, somaX, somaXY},
{somaX2, somaX, n, somaY}
};

for (int i = 0; i < 2; i++) {


double pivo = matriz[i][i];

for (int j = i + 1; j < 3; j++) {


double fator = matriz[j][i] / pivo;

for (int k = i; k < 4; k++) {


matriz[j][k] -= fator * matriz[i][k];
}
}
}

coeficientes[2] = matriz[2][3] / matriz[2][2];


coeficientes[1] = (matriz[1][3] - matriz[1][2] * coeficientes[2]) / matriz[1][1];
coeficientes[0] = (matriz[0][3] - matriz[0][2] * coeficientes[2] - matriz[0][1] *
coeficientes[1]) / matriz[0][0];
}

int main() {
// Definindo os pontos no intervalo [-1, 1]
double x[] = {-1, 0, 1};
double y[] = {6, 0, -4}; // Calculados a partir de f(x) = x^4 - 5x

int n = sizeof(x) / sizeof(x[0]);


double coeficientes[3];

// Encontrando os coeficientes do polinômio de segundo grau


metodoDosMinimosQuadrados(x, y, n, coeficientes);

printf("Coeficientes do polinômio de segundo grau: a = %.2f, b = %.2f, c = %.2f\n",


coeficientes[0], coeficientes[1], coeficientes[2]);

return 0;
}

➔ Resultado obtido na programação:

3)

→ Programação:

#include <stdio.h>

// Função para calcular α usando o método dos mínimos quadrados


double calcularAlpha(double x[], double fx[], int n) {
double somaXQuadrado = 0, somaFXVezesXQuadrado = 0;

// Calculando somatórios necessários


for (int i = 0; i < n; i++) {
somaXQuadrado += x[i] * x[i];
somaFXVezesXQuadrado += fx[i] * x[i] * x[i];
}
// Calculando α usando a fórmula dos mínimos quadrados
double alpha = somaFXVezesXQuadrado / somaXQuadrado;

return alpha;
}

int main() {
int n = 11; // Quantidade de pontos a serem inseridos
double x[n], fx[n]; // Arrays para armazenar os valores de x e f(x)

// Solicitação dos valores de x e f(x) ao usuário


printf("Digite os valores de x:\n");
for (int i = 0; i < n; i++) {
scanf("%lf", &x[i]);
}

printf("Digite os valores de f(x):\n");


for (int i = 0; i < n; i++) {
scanf("%lf", &fx[i]);
}

// Chamando a função para calcular α


double alpha = calcularAlpha(x, fx, n);

printf("O valor de alpha (α) é: %.4lf\n", alpha);

return 0;
}

➔ Resultado obtido na programação:


4)

→ Programação:
#include <math.h>
#include <stdio.h>

float func(float x) {
return exp(x) * cos(x);
}

float trapezio(float a, float b, int n) {


float sum = 0.0;
float h = (b - a) / n;

for (int i = 1; i < n; i++) {


float x = a + i * h;
sum += func(x);
}

float area = (h / 2) * (func(a) + func(b) + 2 * sum);


return area;
}

int main(void) {
float a, b;
int n;

printf("Informe o valor de a: ");


scanf("%f", &a);
printf("Informe o valor de b: ");
scanf("%f", &b);
printf("Informe o valor de n: ");
scanf("%d", &n);

printf("O valor da integral é: %f", trapezio(a, b, n));


return 0;
}

5)
→ Programação:
#include <math.h>
#include <stdio.h>

#define FUNC(x) (exp(x) * cos(x))

int main() {
float a, b, simpson = 0.0f, intervalWidth, k;
int i, numIntervals;

printf("Digite o valor de a: ");


scanf("%f", &a);
printf("Digite o valor de b: ");
scanf("%f", &b);
printf("Digite o número de intervalos (n): ");
scanf("%d", &numIntervals);

intervalWidth = (b - a) / numIntervals;

simpson = FUNC(a) + FUNC(b);


for (i = 1; i <= numIntervals - 1; i++) {
k = a + i * intervalWidth;
if (i % 3 == 0) {
simpson += 2 * FUNC(k);
} else {
simpson += 3 * FUNC(k);
}
}
simpson = simpson * 3 * intervalWidth / 8;

printf("\nO valor da integral é: %.3f", simpson);

return 0;
}

6) Abaixo estão as imagens da questão 6 resolvida:

Você também pode gostar