Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.52/21: Рейтинг темы: голосов - 21, средняя оценка - 4.52
Swex
0 / 0 / 0
Регистрация: 19.03.2012
Сообщений: 15
1

Метод хорд для решения нелинейного уравнения

31.03.2012, 23:36. Просмотров 3857. Ответов 25
Метки нет (Все метки)

Проблема вылазит при нажатии на кнопку вычислить в строке, где опичывается функция f (64-ая строчка)... дело с ln... промежуток брал от 1 и дальше...не знаю как исправить...

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
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, ExtCtrls, TeeProcs, TeEngine, Chart, Math, Series;
 
type
  TForm1 = class(TForm)
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Memo1: TMemo;
    Button1: TButton;
    Button2: TButton;
    Chart1: TChart;
    Series1: TLineSeries;
    Edit5: TEdit;
    TabSheet2: TTabSheet;
    Edit6: TEdit;
    Edit7: TEdit;
    Edit8: TEdit;
    Edit9: TEdit;
    Label1: TLabel;
    Button3: TButton;
    Chart2: TChart;
    ListBox1: TListBox;
    Series2: TLineSeries;
    Edit10: TEdit;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Button4: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
function f(x,a:extended):extended;
begin
f := a*power(cos(abs(x)),3)+a*sin(a*x)+a*power((sin(x)/cos(x)),4)+a*power(ln(abs(x)),2)+a;
end;
 
function pp(x,a:extended):extended;
begin
pp := power((-a),3)*sin(a*x);
end;
 
 
procedure TForm1.Button1Click(Sender: TObject);
var j:extended;
var x,x0,e,c,x1,x2,a:extended;
begin
e:= strtofloat(Edit3.Text);
X1 := strtofloat(Edit1.Text);
x1:=max(x1,0);
X2 := strtofloat(Edit2.Text);
a := strtofloat(Edit5.Text);
x := x1;
c := x2;
if f(c,a)*pp(a,c)<0 then begin c := x1; x := x2 end;
repeat
  x0 := x;
  x := (c*f(a,x0)-x0*f(a,c))/(f(a,x0)-f(a,c));
until abs(f(x,a))/0.00001<=e;
j := x;
Memo1.Lines.Add('Корень для метода хорд: '+floattostrf(j,ffgeneral,5,3));
end;
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.03.2012, 23:36
Ответы с готовыми решениями:

Решение нелинейного уравнения методом хорд
Помогите написать программу для решения нелинейного уравнения...

Найти корень нелинейного уравнения четыремя методами: половинного деления, касательных, хорд, итераций
Задание. Отделить корни уравнений F(x) = 0 и уточнить значения корней (или...

Найти корень нелинейного уравнения F(x)=0 методом хорд. Крайние значения предела ([a,b]) содержащий корень и погрешность (\epsilon ) вводятся с клавиа
Найти корень нелинейного уравнения F(x)=0 методом хорд. Крайние значения...

Решение нелинейного уравнения. Метод Ньютона
здравствуй, помогите пожалуйста найти ошибку в программе! необходимо найти...

Найти корень уравнения Метод Хорд
Задача, Найти корень уравнения sin(x)=0,5 методом хорд. Не могу понять как...

25
BumerangSP
4287 / 1409 / 463
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
01.04.2012, 16:45 21
Swex, хм, я вроде на первой странице описал. Тангенс - это синус/косинус. Т.е. можно написать функцию tg со входным параметром x, что я и сделал. Перепишу сюда:
Delphi
1
2
3
4
function tg(x: real): real;
begin
 tg:=sin(x)/cos(x);
end;
А далее в коде уже писать как tg(x).

Добавлено через 38 минут
Ну, что? Все еще пересекает?
1
Swex
0 / 0 / 0
Регистрация: 19.03.2012
Сообщений: 15
01.04.2012, 21:17  [ТС] 22
да, такая же ерунда...к преподу подойду спрошу...
0
BumerangSP
4287 / 1409 / 463
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
01.04.2012, 21:48 23
Swex, нашел я, откуда эта ошибка. Там постоянно ln(0) был, что означает "бесконечность". Нужно, чтобы изначально x был равен какому-нибудь очень малому значению. Но! График все равно никак не пересекает ось. А посему и корней нет.
0
Swex
0 / 0 / 0
Регистрация: 19.03.2012
Сообщений: 15
01.04.2012, 21:51  [ТС] 24
А если записать так: ln(х+0,00001)?
0
BumerangSP
4287 / 1409 / 463
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
01.04.2012, 21:57 25
Не, так не прокатит. Надо заранее.
Пример:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
Function f(x: real): real;
var a:real;
Begin
 a:=0.5;
 f:=a*cos(abs(x))*cos(abs(x))*cos(abs(x))+
  a*sin(a*x)+a*tg(x)*tg(x)*tg(x)*tg(x)+
  a*sqr(ln(x))+a;
End;
............
begin
 x:=0.001;
 f1:=f(x);
end;
0
Миниатюры
Метод хорд для решения нелинейного уравнения  
Swex
0 / 0 / 0
Регистрация: 19.03.2012
Сообщений: 15
01.04.2012, 22:04  [ТС] 26
Спасибо за помощь!
0
01.04.2012, 22:04
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.04.2012, 22:04

Найти корень нелинейного уравнения F(x)=0 методом касательных (метод Ньютона). Крайние значения предела ([a,b]) содержащий корень и погрешность (\epsi
Найти корень нелинейного уравнения F(x)=0 методом касательных (метод Ньютона)....

Метод хорд для дух функций (проверка)
Написал программу, вроде считает что-то, проверте правильная она . Заранее...

Метод хорд, метод касательных, метод половинного деления
Ребят помогите пожалуйста. Задали тему курсовой &quot;Решение нелинейных уравнений...


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

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

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