Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/54: Рейтинг темы: голосов - 54, средняя оценка - 4.83
2 / 2 / 0
Регистрация: 05.04.2011
Сообщений: 89
1

Решение уравнений методом хорд и касательных

03.01.2012, 16:31. Показов 9911. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Решить уравнение x^3-0,2x^2+1,5=0 [-1;0] E=0,001
в делфи комбинированным методом хорд и касательных.
Где в ответе должна получиться таблица с промежуточными действиями, с помощью StringGrid

таблица приблезительно с такими данными

i(номер шага)XiлXiпXiп- XiлF(Xiл)F(Xiп)
0-101-0,21,5
10,9487-0,88240,0663-0,00820,216
2-0,9466-0,94630,0003  
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.01.2012, 16:31
Ответы с готовыми решениями:

Сделать двумя методами: методом хорд и методом Ньютона (касательных)
Пусть известны функции спроса D(p) и предложения S(p) для некоторого товара Т. Найти равновесную...

Решение нелинейного уравнения методом хорд
Помогите написать программу для решения нелинейного уравнения sqrt(x)-cos(0,387*x) по данной схеме.

Решение уравнений методами половинного деления, хорд и касательных
1. В программе предусмотреть формирование меню из четырех пунктов: три пункта - для вызова...

Решение уравнения методом хорд и касательных
Комбінований метод хорд та дотичних x належить Перевожу. Решение уравнения комбинированным...

11
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
03.01.2012, 17:14 2
Цитата Сообщение от v234 Посмотреть сообщение
x^3-0,2x^2+1,5=0 [-1;0]
Вроде как нет на этом интервале корня...
0
2 / 2 / 0
Регистрация: 05.04.2011
Сообщений: 89
03.01.2012, 17:45  [ТС] 3
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
program metod;
uses crt;
function f(var x:real):real;
begin
f:= X*X*X-0.2*X*X+0.5*X+1.5;
end;
function f1(var x:real):real;
begin
f1:= 3*X*X-0.4*X+0.5; {первая производная}
end;
function f2(var x:real):real;{вторая производная}
begin
f2:= 6*X-0.4;
end;
var
a,b:real;
e,e1:real;
x0,tmp:real;
x11,x12:real;
z,x6,y:real;
begin
clrscr;
a:=-1;
b:=0;
e:=0.001;
x0:=a;
if f(a)*f(b)>0 then writeln('a or b is incorrect')
else
 begin
  x11:=x0-f(x0)/f1(x0);
  x12:=a-((b-a)*f(a)/(f(b)-f(a)));
  e1:=(x11+x12)/2;
  while  abs(e1-x11)>e do
    begin
     a:=x11;
     b:=x12;
     x11:= a-F(a)/f1(a);
     x12:= a-((b-a)*f(a)/(f(b)-f(a)));
     e1:=(x11+x12)/2;
    end;
  writeln ('koren: ',x11:6:4)
 end;
readln
end.
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
03.01.2012, 17:48 4

Не по теме:

До боли знакомый код на Паскале...

.
0
2 / 2 / 0
Регистрация: 05.04.2011
Сообщений: 89
03.01.2012, 17:49  [ТС] 5
решала с помощью вашей же задачи..
так и не поняла откуда вы взяли формулу e1
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
03.01.2012, 18:38 6
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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

Добавлено через 43 минуты
Вот нашел вроде правильные формулы. Хотя странно что интервал [-1,0] если корень = -1.082

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
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
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids;
 
type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    Button1: TButton;
    Edit1: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
function f(var x:real):real;
begin
f:= x*x*x-0.2*x*x+1.5;
end;
function f1(var x:real):real;
begin
f1:= 3*x*x-0.4*x; {первая производная}
end;
function f2(var x:real):real;{вторая производная}
begin
f2:=16*x-0.4;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
with Stringgrid1 do
 begin
  RowCount:=2;
  ColCount:=6;
  DefaultColWidth:=100;
  Width:=630;
  Cells[0,0]:='Номер шага';
  Cells[1,0]:='Xi левое';
  Cells[2,0]:='Xi правое';
  Cells[3,0]:='Xiп - Xiл';
  Cells[4,0]:='F(Xiл)';
  Cells[5,0]:='F(Xiп)';
 end;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var a,b:real;
    e:real;
    x1,x2:real;
    k:integer;
begin
a:=-1;
b:=0;
e:=0.001;
k:=0;
StringGrid1.Cells[0,k+1]:=IntToStr(k);
StringGrid1.Cells[1,k+1]:=FloatToStrF(a,ffFixed,4,1);
StringGrid1.Cells[2,k+1]:=FloatToStrF(b,ffFixed,4,1);
StringGrid1.Cells[3,k+1]:=FloatToStrF(b-a,ffFixed,4,1);
StringGrid1.Cells[4,k+1]:=FloatToStrF(F(a),ffFixed,4,1);
StringGrid1.Cells[5,k+1]:=FloatToStrF(F(b),ffFixed,4,1);
repeat
 k:=k+1;
 if f1(a)*f2(a)>0 then
  begin
   x1:=a-(f(a)*(b-a))/(f(b)-f(a));
   x2:=x1-(f(x1)*(b-x1)/(f(B)-f(x1)));
   a:=x2;
  end
 else
  begin
   x1:=b-(f(b)*(b-a))/(f(b)-f(a));
   x2:=x1-f(x1)*(x1-a)/(f(x1)-f(a));
   b:=x2;
  end;
  StringGrid1.RowCount:=StringGrid1.RowCount+1;
  StringGrid1.Cells[0,k]:=IntToStr(k-1);
  StringGrid1.Cells[1,k]:=FloatToStrF(x1,ffFixed,7,4);
  StringGrid1.Cells[2,k]:=FloatToStrF(x2,ffFixed,7,4);
  StringGrid1.Cells[3,k]:=FloatToStrF(x2-x1,ffFixed,7,4);
  StringGrid1.Cells[4,k]:=FloatToStrF(F(x1),ffFixed,7,4);
  StringGrid1.Cells[5,k]:=FloatToStrF(F(x2),ffFixed,7,4);
until abs(x2-x1)<=e;
Edit1.Text:='Корень = '+FloatToStrF(x2,ffFixed,7,3);
end;
 
end.
1
2 / 2 / 0
Регистрация: 05.04.2011
Сообщений: 89
03.01.2012, 18:46  [ТС] 7
спасибо попробуем, странно у меня получился корень -0,9464 совпадает с решением
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
03.01.2012, 18:49 8
Я в Экселе проверял, тоже -1.0818
Может Вы в условии здесь формулу неверно написали?
0
2 / 2 / 0
Регистрация: 05.04.2011
Сообщений: 89
03.01.2012, 18:52  [ТС] 9
x^3-0,2x^2+1,5=0
ну если это вы расценили как X*X*X-0.2*X*X+0.5*X+1.5;
то думаю что верно
Та задача в паскале верна, просто в ней можно многое выкинуть
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
03.01.2012, 18:52 10
Вот в Экселе.
Вложения
Тип файла: xls Книга2.xls (18.5 Кб, 99 просмотров)
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
03.01.2012, 18:56 11
Ну конечно, Вы же пропустили +0.5*X

Добавлено через 2 минуты
Тщательнее нужно... Так корень -0.946

Добавлено через 33 секунды
Поправьте в коде F и F1
0
2 / 2 / 0
Регистрация: 05.04.2011
Сообщений: 89
03.01.2012, 19:04  [ТС] 12
благодарю за участие, буду разбираться
0
03.01.2012, 19:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.01.2012, 19:04
Помогаю со студенческими работами здесь

Решение уравнений методом хорд на C++
Здравствуйте. Столкнулся с проблемой, решения уравнения методом хорд, с программированием все...

Решение уравнений методом хорд
Здравствуйте. Столкнулся с проблемой, решения уравнения методом хорд, с программированием все...

Решение уравнений методом хорд
Помогите решить уравнение методом хорд и составить блок схему,пожалуйста очень очень нужно,заранее...

Решение системы уравнений методом хорд
a(ij) = - матрица 4х4 b(i) = - матрица 1 столбец 4 строки


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru