Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/29: Рейтинг темы: голосов - 29, средняя оценка - 4.79
1 / 1 / 0
Регистрация: 26.04.2009
Сообщений: 4

Решение квадратного уравнения методом Ньютона

24.05.2010, 21:23. Показов 5817. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер.
помогите пожалуйста с программой.
необходимо решить кв.уравнение ax^2+bx+c=0 методом ньютона. [x1,x2]-интервал изоляции.
ниже предложен мой вариант-но он не правильно считает корень =( помогите пожалуйста с решением данной проблемы.
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
class Program
    {
        static void Main(string[] args)
        {
            double a, b, c, x, xn;
            x = 1;
            Console.Write("a = ");
            a = Convert.ToDouble(Console.ReadLine());
            Console.WriteLine("a = {0}", a);
            Console.Write("b = ");
            b = Convert.ToDouble(Console.ReadLine());
            Console.WriteLine("b = {0}", b);
            Console.Write("c = ");
            c = Convert.ToDouble(Console.ReadLine());
            Console.WriteLine("c = {0}", c);
 
            double x1, x2;
            Console.Write("x1 = ");
            x1 = Convert.ToDouble(Console.ReadLine());
            Console.WriteLine("x1 = {0}", x1);
            Console.Write("x2 = ");
            x2 = Convert.ToDouble(Console.ReadLine());
            Console.WriteLine("x2 = {0}", x2);
 
            if ((a*x1*x1+b*x1+c) * (2*a) > 0)
              x = x1;
             else x = x2;
            do
            {
                xn = x;
                x = x - ((a * x * x + b * x + c) / (2 * a * x + b));
            }
            while (Math.Abs(x - xn) < 0.001);
           
            Console.WriteLine("X = {0:#.###}", x);
            Console.ReadLine();
 
 
 
 
        }
    }
1
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.05.2010, 21:23
Ответы с готовыми решениями:

Решение нелинейного уравнения методом Ньютона. Переписать с Pascal на C#
Есть примерный алгоритм программы, нужно написать его на C# и доработать так, чтобы m менялось от -79.5 до 79.5 с шагом единица. ...

Решение квадратного уравнения
Подскажите, что здесь не так, я ввожу данные, но после ввода консоль закрывается using System; using System.Collections.Generic; ...

Решение квадратного уравнения
Всем добрый вечер,нужно мне решить задачу с квадратным уравнением.Думал,что тут сложного?Дискриминант вычислил и все дела,считай. Но вот...

6
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
24.05.2010, 21:35
Если это вычисление корня, то ничего не получится
Цитата Сообщение от Atomeg Посмотреть сообщение
while (Math.Abs(x - xn) < 0.001);
потому что вычисление корня Math.Sqrt()
0
1 / 1 / 0
Регистрация: 26.04.2009
Сообщений: 4
24.05.2010, 21:40  [ТС]
nio,
это проверка на точность вычисления
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
24.05.2010, 21:42
Цитата Сообщение от Atomeg Посмотреть сообщение
ниже предложен мой вариант-но он не правильно считает корень
тогда проблема в том, что вычисления корня вообще нет
0
1 / 1 / 0
Регистрация: 26.04.2009
Сообщений: 4
24.05.2010, 21:58  [ТС]
Delphi
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
function f(x:real):real;
begin
  f:=strtofloat(form1.a4.Text)*x*x*x*x+strtofloat(form1.a3.Text)*x*x*x+strtofloat(form1.a2.Text)*x*x+strtofloat(form1.a1.Text)*x+strtofloat(form1.a0.Text);
end;
 
function df(x:real):real;
begin
  df:=4*strtofloat(form1.a4.Text)*x*x*x+3*strtofloat(form1.a3.Text)*x*x+2*strtofloat(form1.a2.Text)*x+strtofloat(form1.a1.Text);
end;
function ddf(x:real):real;
begin
  ddf:=12*(strtofloat(form1.a4.Text))*x*x+6*(strtofloat(form1.a3.Text))*x+2*(strtofloat(form1.a2.Text));
end;
 
procedure kasat;
var
  a,b,xn:real;
begin
  a:=strtofloat(form1.Edit1.Text);
  b:=strtofloat(form1.Edit2.Text);
  if f(a)*ddf(a)>0 then x:=a else x:=b;
  repeat
    xn:=x;
    x:=x-f(x)/df(x)
  until abs(x-xn)<0.001;
  x:=1000*x;
  x:=round(x);
  x:=x/1000;
  form1.Label11.Caption:=floattostr(x);
end;
аналогичное для ур-я 4-го порядка на делфи.всё работает.
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
24.05.2010, 23:40
Цитата Сообщение от Atomeg Посмотреть сообщение
аналогичное для ур-я 4-го порядка на делфи
Самый простой вариант: решаешь на листике для каких-нить простых чисел, а затем отладчиком прогоняешь и сверяешь на каждом шаге.
Мне кажется просто неправильно реализована формула (к сожалению с методом Ньютона не знаком).
0
11 / 11 / 3
Регистрация: 18.03.2010
Сообщений: 45
25.05.2010, 17:13
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
using System;
 
class Program
{
    static void Main(string[] args)
    {
        double a, b, c, x, xn;
        x = 1;
        Console.Write("a = ");
        a = Convert.ToDouble(Console.ReadLine());
        Console.WriteLine("a = {0}", a);
        Console.Write("b = ");
        b = Convert.ToDouble(Console.ReadLine());
        Console.WriteLine("b = {0}", b);
        Console.Write("c = ");
        c = Convert.ToDouble(Console.ReadLine());
        Console.WriteLine("c = {0}", c);
 
        double x1, x2, discr;
        Console.Write("x1 = ");
        x1 = Convert.ToDouble(Console.ReadLine());
        Console.WriteLine("x1 = {0}", x1);
        Console.Write("x2 = ");
        x2 = Convert.ToDouble(Console.ReadLine());
        Console.WriteLine("x2 = {0}", x2);
        discr = b * b - 4 * a * c;
 
        if (discr < 0)
        {
            Console.WriteLine("Корней нет - дискриминант отрицательный");
        }
        else
        {
            Console.WriteLine("Корнень равен = {0}", ((-b + Math.Sqrt(discr))/(2*a)));
            Console.WriteLine("Корнень равен = {0}", ((-b - Math.Sqrt(discr)) / (2*a)));
        }
 
        if ((a * x1 * x1 + b * x1 + c) * (2 * a) > 0)
            x = x1;
        else x = x2;
        do
        {
            xn = x;
            Console.WriteLine("XN = {0:#.###}", xn);
            x = x - ((a * x * x + b * x + c) / (2 * a * x + b));
            Console.WriteLine("X = {0:#.###}", x);
        }
        while (Math.Abs(x - xn) > 0.00001);
 
        Console.WriteLine("X = {0:#.###}", x);
        Console.ReadLine();
 
 
 
 
    }
}
Вашей исходной задаче нужно заменить условие выхода из цикла:
while (Math.Abs(x - xn) < 0.001);
на
while (Math.Abs(x - xn) > 0.001);
и все будет работать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.05.2010, 17:13
Помогаю со студенческими работами здесь

Решение квадратного уравнения.
Дано квадратное уравнение в виде (то есть пользователь вводит такую строчку) +-aX^2+-bx+-c=h или +-aX^4+-bx^2+-c=h где h-произвольное...

Решение квадратного уравнения
Помогите!!! Очень нужна помощь!!! Нужно разработать класс Квадратное уравнение, т.е. Ax2+bx+c. Коэффициенты уравнения следует хранить...

Решение квадратного уравнения
Всем привет,только начал изучение C#,сдавал лабу преподавателю,он засчитал,но сказал на следующую пару усовершенствовать код,т.к он...

Решение квадратного уравнения
Добрый день всем! В общем написал простенькую &quot;решалку&quot; квадратных уравнений на консоли. Вот код: using System; using...

Решение квадратного уравнения
Помогите пожалуйста, необходимо создать метод, который решает квадратное уравнение, коэффициенты a, b, c задаются во входных параметрах.


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru