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

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

10.11.2014, 23:36. Просмотров 3601. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.11.2014, 23:36
Ответы с готовыми решениями:

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

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

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

Метод простых итераций
Систему решил ,получилось верно.Возникла одна проблема ,иксы которые я получил перемножить на...

4
337 / 337 / 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
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
337 / 337 / 331
Регистрация: 02.10.2014
Сообщений: 666
12.11.2014, 00:58 4
Цитата Сообщение от Danikor Посмотреть сообщение
(tg(0.47x+0.2)=x^2
это не функция
0
0 / 0 / 0
Регистрация: 04.06.2014
Сообщений: 33
24.11.2014, 21:00  [ТС] 5
это нелинейное уравнение.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.11.2014, 21:00

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

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

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

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

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


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

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

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