Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
10 / 10 / 2
Регистрация: 17.11.2011
Сообщений: 84
1

Найти корни уравнения методом хорд. Проверить код

13.12.2012, 01:04. Показов 2980. Ответов 4
Метки нет (Все метки)

Вот такой вот занимательный метод: нада найти корни уровнения g(x)= f(x) методом хорд.
f(x)это полином н-го степеня . значения g(x) задаются набором точек. Для получения промежуточных точек нада использовать интерполяцию полинома лагранжа. Все запрограмировал,нарисовал графики а они пересекаются не в той точке,которую находит код. Врятли кто то знает такое но все же, подскажите где ошибка.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Serialization;
using System.IO;
 
namespace Kurs
{
    public class Task
    {
        public double a { get; set; }
        public double b { get; set; }
        public double e { get; set; }
        public double[] x {get;set;}
        public double[] y {get;set;}
        public double[] k {get;set;}
    }
 
    public delegate double Func(double x, double[] x1, double[] y1, double[] k1);
  
    public static class Solver
    {
      public static Func H {get; set;}
 
        public static double Chord(double a, double b, double e, double[] x1, double[] y1,double[] k1, Func F)
        {
            double[] x = new double[2];
            x[0] = a;
            x[1] = b;
            int i = 1;
            do
            {
                Array.Resize(ref x, x.Length + 1);
                x[i + 1] = x[i] - (F(x[i], x1, y1,k1) * (x[i] - x[i - 1])) / (F(x[i], x1, y1, k1) - F(x[i - 1], x1, y1, k1));
                i++;
            }
            while (!(Math.Abs(x[i] - x[i - 1]) < e));
                return x[x.Length - 1];
        }
    }
    
    class Program
    {
        public static double f(double x, params double[] k)
        {
            double pol = 0;
            for (int i = 0; i < k.Length; i++)
                pol += k[i] * Math.Pow(x, k.Length - 1 - i);
            return pol;
        }
        public static double g(double[] x, double[] y, double argx)
        {
            double m;
            double s = 0;
            for (int i = 0; i < x.Length; i++)
            {
                m = 1;
                for (int j = 0; j < x.Length; j++)
                {
                    if (j != i)
                        m *= (argx - x[j]) / (x[i] - x[j]);
                }
                s += m * y[i];
            }
            return s;
        }
        public static double F(double x, double[] x1, double[] y1, double[] k1)
        {
            return f(x, k1) - g(x1, y1, x);
        }
        static void Main(string[] args)
        {
            Task task = new Task();
            XmlSerializer deserializer = new XmlSerializer(typeof(Task));
            using (TextReader textReader = new StreamReader("Kurs.xml"))
            {
                task = (Task)deserializer.Deserialize(textReader);
            }
            Console.WriteLine(Solver.Chord(1, 9, 0.001, task.x, task.y,task.k, F));
        }
    }
}
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.12.2012, 01:04
Ответы с готовыми решениями:

Найти корни уравнения с точностью 0,001 методом хорд
x^3+x+1=0 на интервале

Найти корни уравнения методом хорд
Доброго времени суток,Помогите пожалуйста написать программу для нахождения корней ф-ции методом...

С заданной точностью найти корни уравнения методом хорд
С заданной точностью нужно найти корни уравнение методом хорд. e^-x+sqrt(x+1)-4=0 Добавлено...

Отделить корни уравнения и уточнить один из них методом хорд
Помогите пожалуйста решить задание по предмету численные методы! Отделить корни уравнения...

4
308 / 204 / 44
Регистрация: 15.02.2012
Сообщений: 605
13.12.2012, 20:04 2
ну, для начала, стоит выяснить
Цитата Сообщение от ruslannos Посмотреть сообщение
пересекаются не в той точке,которую находит код.
а код находит верные корни или нет?
0
10 / 10 / 2
Регистрация: 17.11.2011
Сообщений: 84
14.12.2012, 14:18  [ТС] 3
находит точку с небольшой погрешностью, плюс нада находить все точки пересечения а находит одну
0
308 / 204 / 44
Регистрация: 15.02.2012
Сообщений: 605
14.12.2012, 17:56 4
находит одну - потому, что метод хорд предназначен для того, чтобы найти один корень уравнения () на заданном отрезке изоляции (это такой отрезок, на котором присутствует лишь один корень)

раз находит верно, то показывайте как графики рисуются ... зачем нам проверять модель расчета, если она выдает верные результаты?
0
0 / 0 / 0
Регистрация: 19.09.2013
Сообщений: 12
31.10.2013, 19:32 5
Можешь скинуть файл "Kurs.xml", очень нужно!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.10.2013, 19:32

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Отыскать корни уравнения методом хорд (microsoft visual studio)
Очень прошу помочь мне решить эту задачу: Отыскать корни уравнения f(x)=0 на интервале (0.5;1) с...

Написать функцию, находящую корни уравнения методом хорд с использованием указателей
Написать функцию, находящую корни уравнения методом хорд. Аргументы этой функции: указатель на...

Найти все вещественные корни уравнения функции метод хорд
Вот уравнение функции f=@(x) (exp(x).*abs(x-4)-x.^2 и надо методом хорд найти все вещественные...

Найти корни уравнения. использовать методы хорд, дихотомии, Ньютона
Помогите сделать задания по инфе


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.