0 / 0 / 0
Регистрация: 02.07.2012
Сообщений: 8
1

Найти комплексные корни уравнения

05.07.2012, 15:57. Показов 3238. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот такая проблема. Есть две функции,одна из них кубическая,которая имеет три корня,один отрицательный два других корня положительные. В кубическом уравнении есть свободный член, который меняется в цикле. В зависимости от этого свободного члена,каждый раз корень кубической функции разный (в программе я отделил нужный мне корень отрезком). Вторая функция квадратичная, для решения которой нужен результат решения кубической функции которая прописана выше. В итоге в ней две переменные величины, и неизвестная которую ищем. Метод для решения этих функций использую один метод половинного деления. Загвоздка вот в чем, вторая функция имеет корень который отрицательный, а в функции есть операция извлечения корня квадратного из числа, естественно в этом случае будет число мнимое. И как тут быть, как найти эти корни на Паскале? Можете помочь?

Pascal
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
       program pr;
       uses crt;
         var t1:text;
         const
            a0=1E-5;
            ro1= 1000;
            ro2= 0.590;
            Cp1= 4216;
            //Cp2= 2034;
            lyam1= 0.680;
            gam= 1.3;
            l= 2257200;
            pi=3.14;
            p0= 1e5;
            T111=4967;
            p111=6.0716e+10;
            sigma= 0.05891;
            v= 279e-9;
            Rv=454;
            Rg=287;
            E=1e-8;
 
        var  mg0,mg00,rov,Cp2,Z,A,value1,vT,a00,pg0,lam_TT,Lam,Lam_R,Lam_VV,Lam_T,lam_RR,lam_MM,pv0,max,Ya,betta,Ts,Ts1,Nu,laym,laym1,value:real;
               i:integer;
 
          function f(a01,mg01:real):real;
          begin
               f:= (4*pi/3)*((pv0-p0)*a01*a01*a01-2*sigma*a01*a01)+mg01*Rg*Ts1;
          end;
 
 
          function Y(lam,a002:real):real;
          begin
               Y:= sqrt((lam*a002*a002*ro1*Cp1)/lyam1);
          end;
          
          function pg00(mg02,a002:real):real;
          begin
               pg00:=(3*mg0*Rg*Ts1)/(4*pi*a002*a002*a002);
          end;
          
          function FF(lam,a02,mg02:real):real;
          begin
              FF:= ro1*a02*a02*lam*lam+4*v*ro1*lam+(3*gam*pv0*Y(lam,a02)*Y(lam,a02)*(1+pg00(mg02,a02)/(ro2*l)))/
              (gam*Y(lam,a02)*Y(lam,a02)+betta*(1+Y(lam,a02)))+3*pg00(mg02,a02)-2*sigma/a02;
          end;
 
 
          function  pol_del1(mg_01:real):real;
           var a,b,c: real;
             begin
               a:= 0;
               b:= 6.6e-6;
               c:= (a+b)/2;
                 while (abs(b-a)>E) do
                       begin
                           if f(a,mg_01)*f(c,mg_01) < 0 then b:= c
                                    else a:= c;
                                 c:= (a+b)/2;
                       end;
                   value1:= (a+b)/2;
                   result:=value1;
             end;
 
          function  pol_del2(res,mg_02:real):real;
           var a,b,c: real;
             begin
              a:= -1e6;
               b:= 1e6;
               c:= (a+b)/2;
                 while (abs(b-a)>E) do
                       begin
                           if FF(a,res,mg_02)*FF(c,res,mg_02) < 0 then b:= c
                                    else a:= c;
                                 c:= (a+b)/2;
                       end;
                   Lam:= (a+b)/2;
                   result:=Lam;
             end;
 
 
        begin
        
            pv0:=p0+2*sigma/a0;
            vT:=lyam1/(ro1*Cp1);
            Ts1:=T111/ln(p111/pv0);
            mg00:=(128*sigma*sigma*sigma*pi)/(81*Rg*Ts1*(2*sigma/a0)*(2*sigma/a0));
            Cp2:=gam*Rv/(gam-1);
            betta:=3*(gam-1)*sqr(Cp2*Ts1/l)*((ro1*Cp1)/(ro2*Cp2));
 
 
            assign(t1,'D:\äàííûå\10 ìàÿ äëÿ óñòîé÷èâîãî.txt');
            rewrite(t1);
            writeln(t1,'   mg0                     value1                  Lam');
 
            begin
           
              for i:=0 to 1000 do begin
                        mg0:=i*mg00/1000;
                        value1:=pol_del1(mg0);
                        Lam:=pol_del2(value1,mg0);
 
                        writeln(t1,mg0,'    ',value1,'     ',Lam);
              end;
 
           close(t1);
          end;
          end.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.07.2012, 15:57
Ответы с готовыми решениями:

Найти корни уравнения
на нахождение корней уравнения:tg(7.5*x)-2(x+1) Заранее Спасибо

Найти корни уравнения
Номер теста |Проверяемый случай |__Коэффициенты__|________________Результаты________________...

Найти корни уравнения
На входе даётся число n. Нужно решить уравнение n^2sin^2x+(2n-1)*sinx+1=0

Найти корни уравнения
найти корни уравнения и отделить один из них методом деления отрезка пополам x^2=sinx

6
Почетный модератор
64291 / 47589 / 32740
Регистрация: 18.05.2008
Сообщений: 115,181
06.07.2012, 10:59 2
И какие проблемы? Все точно также только ответ, комплексное число.
http://ru.wikipedia.org/wiki/%... 0%B8%D0%B5
Комплексные числа нужно представить в виде записи, например
Pascal
1
2
3
type compl=record
                re,in:real;
                end;
Если нужно с ними работать сделать нужные процедуры.
Пример есть здесь.
Сложение, вычитание, умножение и деление комплексных чисел
Если недостаточно, дописать.
0
0 / 0 / 0
Регистрация: 02.07.2012
Сообщений: 8
06.07.2012, 11:32  [ТС] 3
Puporev, вся проблема модуль надо подключить,а как я не знаю, вот в чем дело. Может поможете, подключить модуль для моей программы? Нужно извлечение квадратного корня из отрицат. числа еще. Буду очень благодарен
0
Почетный модератор
64291 / 47589 / 32740
Регистрация: 18.05.2008
Сообщений: 115,181
06.07.2012, 11:43 4
Цитата Сообщение от niderok Посмотреть сообщение
модуль надо подключить,а как я не знаю, вот в чем дело
В заголовке программы пишем
Pascal
1
2
Uses Complex;//это наш откомпилированный модуль, файл Complex.tpu, 
который должен быть в папке с программой
Добавлено через 1 минуту
Не думай что кто-то полезет в твою программу и будет ее переделывать, пиши сам, что не понятно, спрашивай.

Добавлено через 4 минуты
Пример модуля

https://www.cyberforum.ru/post559618.html
0
0 / 0 / 0
Регистрация: 02.07.2012
Сообщений: 8
06.07.2012, 12:08  [ТС] 5
в программе, которая на форуме ничего не исправляем? А в модуле пишем Uses Complex?

Добавлено через 5 минут
я скачал, Пример модуля, только не запускается он. я основную программу запускаю, сразу ошибку выдает неизвестный идентификатор f
0
Почетный модератор
64291 / 47589 / 32740
Регистрация: 18.05.2008
Сообщений: 115,181
06.07.2012, 12:17 6
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

niderok, Нельзя писать программы вообще ничего не зная в Паскале. Я ликбезом заниматься не собираюсь. Читайте, учите, разбирайтесь. Нет желания или времени, есть платный раздел Заказ программ.

Добавлено через 1 минуту
Цитата Сообщение от niderok Посмотреть сообщение
А в модуле пишем Uses Complex?
Вы даже читать не умеете что Вам пишут

Цитата Сообщение от Puporev Посмотреть сообщение
В заголовке программы пишем
Код Pascal
1
2
Uses Complex;//это наш откомпилированный модуль, файл Complex.tpu,
который должен быть в папке с программой
Добавлено через 50 секунд
И я написал uses complex для примера, модуль может называться совсем не так.
0
0 / 0 / 0
Регистрация: 02.07.2012
Сообщений: 8
06.07.2012, 12:32  [ТС] 7
спасибо большое вы ОЧЕНЬ ДОБРЫЙ человек!!!!!!!!!!!!!Хвала вам и низкий поклон до земли!
0
06.07.2012, 12:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.07.2012, 12:32
Помогаю со студенческими работами здесь

Найти корни уравнения
заданы уравнения: 8x+3=0 и 5x^2+3x+4=0 с помощью программы найдите корни уравнения

Найти корни уравнения
Помогите с задачей в паскале: Задано уравнение: a*x*2+b*x+c=0 где a,b,c - целые числа. Заданы...

Найти корни уравнения.

Найти корни квадратного уравнения
Напишите заголовок программы и объявите переменные в разделе описания переменных к задачам: Задача...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru