Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/10: Рейтинг темы: голосов - 10, средняя оценка - 4.60
Danikor
0 / 0 / 0
Регистрация: 04.06.2014
Сообщений: 33
1

Посчитать количество проведенных итераций (метод простых итераций, Pascal -> C++)

10.11.2014, 23:36. Просмотров 1879. Ответов 4
Метки нет (Все метки)

перевести из паскаля в С++

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
program method_of_simple_iteration;
uses crt;
var a:array [1..3,1..3] of real;
b,c:array [1..3] of real;
x1,x2,x3,x1c,x2c,x3c,E:real;
n:integer;
begin
clrscr;
 
a[1,1]:=9.88; a[1,2]:=-6.4; a[1,3]:=1.18; b[1]:=-7.07;
a[2,1]:=-1.73; a[2,2]:=10.47; a[2,3]:=0.03; b[2]:=-1;
a[3,1]:=2.47; a[3,2]:=-1.67; a[3,3]:=11.25; b[3]:=-2.13;
 
writeln('Введите x1, x2, x3 начальные значения(приближения):');
readln(x1,x2,x3);
 
writeln('Введите степень точности:');
readln(E);
 
repeat
begin
x1c:=x1;
x2c:=x2;
x3c:=x3;
 
x1:=(-a[1,2]*x2c-a[1,3]*x3c+b[1])/a[1,1];
x2:=(-a[2,1]*x1c-a[2,3]*x3c+b[2])/a[2,2];
x3:=(-a[3,1]*x1c-a[3,2]*x2c+b[3])/a[3,3];
 
c[1]:=abs(x1-x1c);
c[2]:=abs(x2-x2c);
c[3]:=abs(x3-x3c);
 
n:=n+1;
 
end;
until ((c[1]<E) and (c[2]<E) and (c[3]<E));
 
writeln(' X1=',x1:7:4,' X2=',x2:7:4,' X3=',x3:7:4);
write('К-во итераций:',n);
readkey;
end.
программа должна считать количество проведенных итераций
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.11.2014, 23:36
Ответы с готовыми решениями:

Метод простых итераций
Необходимо реализовать программно метод простых итерация для решения НУ. к...

Метод простых итераций
Здраствуйте! Нужно методом простой итерации решать такую систему нелинейных...

Метод простых итераций
Помогите с написанием программы на С++, нужно решить СЛАУ методом простых...

Метод простых итераций. С/С++
Такое задание: написать алгоритм численного решения нелинейных уравнений...

Метод простых итераций
Дана функция 1.4 Cos - Log=0 Ее надо преобразовать к виду ф(x)=x, я не совсем...

4
D_in_practice
331 / 331 / 331
Регистрация: 02.10.2014
Сообщений: 666
11.11.2014, 04:48 2
Код на С++
C++
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
#include <iostream>
#include <cmath>
 
using namespace std;
 
int main(){
    
    double a[3][3] = {
        {9.88, -6.4, 1.18},
        {-1.73, 10.47, 0.03},
        {2.47 , -1.67, 11.25}
    };
    
    double b[] = {-7.7, -1, -2.13};
    
    double x[3];
    cout << "Ââåäèòå Г*Г*Г·Г*ëüГ*ûå Г§Г*Г*Г·ГҐГ*ГЁГї (ïðèáëèæåГ*ГЁГї): ";
    cin >> x[0] >> x[1] >> x[2];
    
    double eps;
    cout << "Ââåäèòå Г±ГІГҐГЇГҐГ*Гј òî÷Г*îñòè: ";
    cin >> eps;
    
    double xc[3], c[3];
    int n = 0;
    
    do{
        xc[0] = x[0];
        xc[1] = x[1];
        xc[2] = x[2];
        
        x[0] = (-a[0][1] * xc[1] - a[0][3] * xc[2] + b[0]) / a[0][0];
        x[1] = (-a[1][0] * xc[0] - a[1][2] * xc[2] + b[1]) / a[1][1];
        x[2] = (-a[2][0] * xc[0] - a[2][1] * xc[1] + b[2]) / a[2][2];
        
        c[0] = fabs(x[0] - xc[0]);
        c[1] = fabs(x[1] - xc[1]);
        c[2] = fabs(x[2] - xc[2]);
        
        ++n;
    }while (c[0] > eps && c[1] > eps && c[2] > eps);
    
    cout << "x1 = " << x[0] << endl;
    cout << "x2 = " << x[1] << endl;
    cout << "x3 = " << x[2] << endl;
    cout << "Êîëëè÷åñòâî ГЁГІГҐГ°Г*öèé: " << n << endl;   
}
1
Danikor
0 / 0 / 0
Регистрация: 04.06.2014
Сообщений: 33
11.11.2014, 22:31  [ТС] 3
Очень благодарен за помощь!

а подскажите , как вписать функцию (tg(0.47x+0.2)=x^2 на языке С++ если есть пример на языке паскаля.
(нужно найти корень нелинейного уравнения).

вот пример.

program method_of_dividing_the_segment_in_half;
uses crt;
var a,b,c,E,sol:real;
n:integer;

function f(x:real):real;
begin
f:=sqrt(x)-cos(0.387*x);
end;

begin
clrscr;
write('Введiть межi вiдрiзка на якому iснує корiнь:');
readln(a,b);

write('Введiть степiнь точностi:');
readln(E);

repeat
begin
c:=(a+b)/2;
if f(a)*f(c)<0 then b:=c else a:=c;
n:=n+1;
end;
until ((b-a)<E);

sol:=c;
writeln('Розв"язок:',sol:8:6,' f(x)=',f(sol):8:6,' n=',n);
readkey;
end.


начал переводить - написал свой код. но никак не могу вписать ф-ю. не могу понять как.

вот мой код
#include <iostream>
#include <math.h>
#include <conio.h>

using namespace std;
int main()
{
int a,b,c,f,n,x;
double solution;

cout<<"Vvedit' znachennya pochatky vidrizka - a=";
cin>>a;
cout<<"Vvedit' znachennya kincya vidrizka - b=";
cin>>b;
double eps;
cout << "Vvedit' stepin' tochnosti: ";
cin >> eps;
do
{
f=((cos/sin)(0.47(x)+0.2)-pow(x,2));
c=(a+b)/2;
if (f(a)*f(c)<0) b=c;
else a=c;
n=n+1;
while((b-a)<eps);
}

}
0
D_in_practice
331 / 331 / 331
Регистрация: 02.10.2014
Сообщений: 666
12.11.2014, 00:58 4
Цитата Сообщение от Danikor Посмотреть сообщение
(tg(0.47x+0.2)=x^2
это не функция
0
Danikor
0 / 0 / 0
Регистрация: 04.06.2014
Сообщений: 33
24.11.2014, 21:00  [ТС] 5
это нелинейное уравнение.
0
24.11.2014, 21:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.11.2014, 21:00

Метод простых итераций для СЛАУ
Прошу помочь с написанием МПИ для СЛАУ на C. Каким образом выразить из AX=b...

Метод простых итераций для СЛАУ
Помогите пожалуйста! Нужно реализовать метод простых итераций для решения СЛАУ...

Метод простых итераций для СЛАУ
Здравствуйте! Пытаюсь реализовать метод простых итераций. Все функции, которые...


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

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

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