Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.03.2012, 17:34   #1
Swex
 
Регистрация: 25.03.2012
Сообщений: 3
По умолчанию Нелинейное уравнение методом хорд (подсказать)

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

Вот мой код:

PHP код:
unit Unit1;

interface

uses
  Windows
MessagesSysUtilsVariantsClassesGraphicsControlsForms,
  
DialogsStdCtrlsComCtrlsExtCtrlsTeeProcsTeEngineChartMathSeries;

type
  TForm1 
= class(TForm)
    
PageControl1TPageControl;
    
TabSheet1TTabSheet;
    
Edit1TEdit;
    
Edit2TEdit;
    
Edit3TEdit;
    
Edit4TEdit;
    
Memo1TMemo;
    
Button1TButton;
    
Button2TButton;
    
Chart1TChart;
    
Series1TLineSeries;
    
Edit5TEdit;
    
procedure Button1Click(SenderTObject);
    
procedure Button2Click(SenderTObject);
  private
    { Private 
declarations }
  public
    { Public 
declarations }
  
end;

var
  
Form1TForm1;

implementation

{$R *.dfm}

function 
f(x,a:extended):extended;
begin
:= a*power(cos(abs(x)),3)+a*sin(a*x)+a*power((sin(x)/cos(x)),4)+a*power(ln(x),2)+a;
end

function 
pp(x,a:extended):extended;
begin
pp 
:= power((-a),3)*sin(a*x);
end


procedure TForm1.Button1Click(SenderTObject);
var 
j:extended;
var 
x,x0,e,c,x1,x2,a:extended;
begin
e
:= strtofloat(Edit3.Text);
X1 := strtofloat(Edit1.Text);
X2 := strtofloat(Edit2.Text);
:= strtofloat(Edit5.Text);
:= x1;
:= x2;
if 
f(c,a)*pp(a,c)<0 then begin c := x1:= x2 end;
repeat
  x0 
:= x;
  
:= (c*f(a,x0)-x0*f(a,c))/(f(a,x0)-f(a,c));
until abs(f(x,a))/0.00001<=e;
:= x;
Memo1.Lines.Add('Корень для метода хорд: '+floattostrf(j,ffgeneral,5,3));
end;
end
Но вылазит ошибка!!! Подскажите что исправить...

Последний раз редактировалось Swex; 25.03.2012 в 17:40.
Swex вне форума Ответить с цитированием
Старый 25.03.2012, 19:53   #2
Cannibal
Форумчанин
 
Регистрация: 17.02.2008
Сообщений: 191
По умолчанию

Где Ошибка? Какая ошибка?
Mathematicians often mix up Christmas and Halloween, because Dec.25=Oct.31.
Cannibal вне форума Ответить с цитированием
Старый 25.03.2012, 20:15   #3
Swex
 
Регистрация: 25.03.2012
Сообщений: 3
По умолчанию

Ошибка с таким содержанием: invalid floating point operation. В строчке, где описывается функция f. Я так понял, что она ругается на ln, который не модет быть 0 и меньше...но что можно исправить?
Swex вне форума Ответить с цитированием
Старый 25.03.2012, 20:23   #4
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
Сообщение от Swex Посмотреть сообщение
Ошибка с таким содержанием: invalid floating point operation. В строчке, где описывается функция f. Я так понял, что она ругается на ln, который не модет быть 0 и меньше...но что можно исправить?
Нет, если такая функция задана, то ничего менять не надо, просто надо не допускать, чтобы функция принимала такие значения, при которых она не определена.
Вадим Мошев вне форума Ответить с цитированием
Старый 25.03.2012, 20:24   #5
Swex
 
Регистрация: 25.03.2012
Сообщений: 3
По умолчанию

А как этого добиться, чтобы не допускала? промежуток я брал от 1 и дальше...
Swex вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
квадратное уравнение методом Хорд и методом касательных Pomio1 Помощь студентам 1 24.11.2011 00:37
Нелинейное уравнение lubov_morkov Помощь студентам 7 23.05.2011 21:16
уравнение x=f(x) методом касательный и методом хорд в делфи electrovolk Помощь студентам 0 30.12.2010 00:06
как решить нелинейное уравнение методом простых итераций??? Bonifaciy Помощь студентам 3 13.11.2008 17:30