- •Содержание
- •1. Задача №1. Нахождение корней уравнения. Исходные данные………………………2
- •Нахождение корней нелинейного уравнения (f1)
- •2.2. Текст задачи
- •2.3. Проверка (Excel). Вывод
- •3.1. Описание использованного метода (Метод квадратичной интерполяции)
- •3.2. Текст задачи
- •3.3. Проверка (Mathcad). Вывод
- •4.1. Описание использованного метода (Метод Жордана-Гаусса)
- •4.2. Текст задачи
- •4.3. Проверка (Excel). Вывод
- •5. Библиография
2.2. Текст задачи
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication27
{
class Program
{
static double F(double x)
{
double I = x * Math.Exp(x) * Math.Sin(x);
return I;
}
static double P(double t1, double t2)
{
double Ft1 = 1.0 / 2.0 * (t1 * Math.Exp(t1) * (Math.Sin(t1) - Math.Cos(t1)) + Math.Exp(t1) * Math.Cos(t1) - 1);
double Ft2 = 1.0 / 2.0 * (t2 * Math.Exp(t2) * (Math.Sin(t2) - Math.Cos(t2)) + Math.Exp(t2) * Math.Cos(t2) - 1);
return Ft2 - Ft1;
}
static double T(double t1, double t2, double p)
{
double In = 0;
double x = t1;
do
{
In += Math.Abs((F(x) + F(x + p)) * p / 2);
x = x + p;
} while (x - p < t2);
return In;
}
static void Main(string[] args)
{
double t1 = 0;
double t2 = 1;
double n = 500;
double p = (t2 - t1) / n;
Console.WriteLine(T(t1, t2, p));
Console.Write("proverka ");
Console.Write(P(t1, t2));
Console.ReadKey();
}
}
}
2.3. Проверка (Excel). Вывод
Проверка, выполненная в программе Excel, показывает, что программа составлена верно. Значение интеграла очень близко к его значению, найденному в С#.
Задача №3. Интерполирование функции. Исходные данные
Интерполирование функций
Используя линейную интерполяцию, найти значение функции в любой точке,
заключенной между минимальным и максимальным значениями аргумента и не
совпадающей с табличным значением.
Х |
27 |
327 |
402 |
477 |
627 |
777 |
927 |
1077 |
1227 |
1527 |
1827 |
У |
10 |
7,5 |
6 |
5,5 |
5 |
5 |
5 |
8 |
10 |
2,5 |
2 |
3.1. Описание использованного метода (Метод квадратичной интерполяции)
В методе квадратичной интерполяции точки соединяются отрезками парабол. Так как парабола, в отличие о прямой, определяется тремя точками, то теперь в вычислении функции в промежуточной точке участвуют три точки.
Если искомая точка x находится в диапазоне между точками (X1, Y1), (X2, Y2), (X3, Y3), то значение функции в этой точке определяется по формуле:
3.2. Текст задачи
using System;
namespace ConsoleApplication3
{
public struct point
{
public double x;
public double y;
}
class Program
{
static double I(double x, point[] m)
{
double S = 0;
for (int i = 0; i < m.Length; i++)
{
double S1 = 1;
for (int j = 0; j < m.Length; j++)
{
if (j != i)
{
S1 *= (x - m[j].x) / (m[i].x - m[j].x);
}
}
S += S1 * m[i].y;
}
return S;
}
static void Main()
{
int r = 11;
double[] y = new double[] { 10, 7.5, 6, 5.5, 5, 5, 5, 8, 10, 2.5, 2 };
double[] x = new double[] { 27, 327, 402, 477, 627, 777, 927, 1077, 1227, 1527, 1827 };
point[] m = new point[3];
m[0].x = 320;
m[1].x = 1500;
m[2].x = 53;
for (int i = 0; i < 3; i++)
{
point[] m1 = new point[3];
for (int j = 0; j < r - 1; j++)
{
if ((x[j] < m[i].x) && (x[j + 1] > m[i].x))
{
for (int k = 0; k < 3; k++)
{
m1[k].x = x[j + k];
m1[k].y = y[j + k];
}
m[i].y = I(m[i].x, m1);
}
}
Console.WriteLine("Tochka {0:f}", m[i].x);
Console.WriteLine("f(x)={0:f}", m[i].y);
}
Console.ReadKey();
}
}
}