|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
13.11.2017, 13:34 | #1 |
Регистрация: 13.11.2017
Сообщений: 8
|
, решить уравнение методом хорд с графиком, я сделал все по формуле, но выдает ошибку в 71 строке кода.
Дана задача, решить уравнение методом хорд с графиком, я сделал все по формуле, но выдает ошибку в 71 строке кода. Ниже код и скриншоты, помогите пожалуйста. С++Builder 6.
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "math.h" #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- double fy(double x){ double k; k=-x*x+1;//(pow(x,2)*x-0.2*pow(x,2.00)-0.2*x-1.2);//*(-1); return k;}; double proizII(double x){ double k; k=-2;//(6*x-0.4);//*(-1); return k;}; void __fastcall TForm1::FormActivate(TObject *Sender) { double x,y; Series1->Clear(); for (x=-10; x<=10; x=x+0.01) { y=fy(x); Series1->AddXY(x,y);} y=0; x=0; for (x=-20; x<=20; x=x+0.01) { y=0; Series2->AddXY(x,y);} y=0; x=0; for (y=-20; y<=20; y=y+0.01) { x=0; Series3->AddXY(x,y);} Chart1->Refresh(); Chart1->LeftAxis->Maximum=20; Chart1->LeftAxis->Minimum=-20; Chart1->LeftAxis->Increment=(Chart1->LeftAxis->Maximum-Chart1->LeftAxis->Minimum)/20; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { float** tabl = new float *[10]; for (int i = 0; i < 10; i++) tabl[i] = new float[8]; tabl[0][0]=1; tabl[0][1]=StrToFloat(Edit1->Text); tabl[0][2]=StrToFloat(Edit2->Text); tabl[0][5]=fy(StrToFloat(Edit1->Text)); tabl[0][6]=fy(StrToFloat(Edit2->Text)); tabl[0][4]=(tabl[0][1]*tabl[0][6]-tabl[0][2]*tabl[0][5])/(tabl[0][6]-tabl[0][5]); tabl[0][7]=fy(tabl[0][4]); int p; if(fy(tabl[0][1])*proizII(tabl[0][4])>0) p=1; if(fy(tabl[0][1])*proizII(tabl[0][4])<0) p=2; for (int w=0; w<8; w++) StringGrid1->Cells[w][1]=FloatToStr(tabl[0][w]); int i=1; float t,o; t=StrToFloat(Edit3->Text); do{ tabl[i][0]=i+1; if (p==1) {tabl[i][1]=tabl[i-1][1]; tabl[i][2]=tabl[i-1][4]; }; if (p==2) {tabl[i][2]=tabl[i-1][2]; tabl[i][1]=tabl[i-1][4]; }; tabl[i][5]=fy(tabl[i][1]); tabl[i][6]=fy(tabl[i][2]); tabl[i][4]=(tabl[i][1]*tabl[i][6]-tabl[i][2]*tabl[i][5])/(tabl[i][6]-tabl[i][5]); tabl[i][7]=fy(tabl[i][4]); o=fabs(tabl[i-1][4]-tabl[i][4]); i++; } while (t<o); Edit4->Text=FloatToStr(tabl[i-1][4]); StringGrid1->RowCount=i+1; for (int q=1; q<i; q++) {for (int w=0; w<8; w++) {StringGrid1->Cells[w][q+1]=FloatToStr(tabl[q][w]);}} } //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { StringGrid1->Cells[0][0]="Номер итерации"; StringGrid1->Cells[1][0]="Левая границы"; StringGrid1->Cells[2][0]="Правая граница"; StringGrid1->Cells[3][0]="h"; StringGrid1->Cells[4][0]="Точка перес. Ox и хорды"; StringGrid1->Cells[5][0]="Функция от лев. гран."; StringGrid1->Cells[6][0]="Функция от пр. отр."; StringGrid1->Cells[7][0]="Функция от корня"; } //--------------------------------------------------------------------------- |
13.11.2017, 13:36 | #2 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,759
|
Проверяйте, скорее всего tabl[i][6] == tabl[i][5]
|
13.11.2017, 14:49 | #3 |
Регистрация: 13.11.2017
Сообщений: 8
|
|
13.11.2017, 14:51 | #4 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,759
|
Это не исправление. Это фраза о том, что у вас tabl[i][6] РАВНО tabl[i][5] и происходит деление на 0.
|
13.11.2017, 15:03 | #5 |
Регистрация: 13.11.2017
Сообщений: 8
|
Большое спасибо))
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
решить нелинейное уравнение методом секущих (хорд). Нелинейные уравнения (Lazarus) | Loonas | Lazarus, Free Pascal, CodeTyphon | 2 | 24.04.2014 21:45 |
Решить уравнение методом хорд( нужен ответ - программа работает правильно?) | alilar | Помощь студентам | 1 | 17.09.2012 20:31 |
квадратное уравнение методом Хорд и методом касательных | Pomio1 | Помощь студентам | 1 | 24.11.2011 00:37 |
уравнение x=f(x) методом касательный и методом хорд в делфи | electrovolk | Помощь студентам | 0 | 30.12.2010 00:06 |