- •5.1. Постановка задачи……………….………………………………………………..23
- •Заключение………………………………………………..……………………………25
- •1. Аппроксимация табличных данных
- •1.1 Исходные данные
- •1.2 Решение с использованием Excel
- •1.4 Реализация мнк в Excel’е
- •1.5 Реализация мнк в MathCad
- •1.6 Реализация мнк в Fortran
- •1.7 Вывод
- •2. Центральное растяжение и сжатие прямого бруса
- •2.1 Постановка задачи
- •2.2 Построение эпюр в Excel
- •2.3 Построение эпюр в Mathcad
- •2.4 Построение эпюр в Fortran
- •2.5. Вывод
- •3. Определение собственных частот колебаний системы с несколькими степенями свободы
- •3.1 Постановка задачи
- •3.2 Решение в Excel
- •3.3 Решение в Mathcad
- •3.4 Решение в Fortran
- •3.5 Вывод
- •4.Определение собственных форм колебаний упругой балки
- •4.1 Постановка задачи
- •4.2 Определние собственных форм колебаний в MathCad
- •4.3 Определение собственных форм колебаний в Fortran
- •4.4 Определение собственных форм колебений в Excel
- •5.3 Получение конформного отображения с помошью Mathcad
- •5.4 Вывод
- •Список использованных источников
1.4 Реализация мнк в Excel’е
По значениям вычисляеми формируем матрицу А и вектор В. Используя оператор превращения получаем обратную матрицу . Умножаемна В и получаем С.
Результаты операций приведены далее
|
1894,461 |
0 |
142 |
|
|
182,096 |
А= |
0 |
142 |
0 |
|
В= |
0 |
|
142 |
0 |
15 |
|
|
3,4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0,001818 |
0 |
-0,01721 |
|
|
0,272466 |
= |
0 |
0,007042 |
0 |
|
С= |
0 |
|
-0,01721 |
0 |
0,229551 |
|
|
-2,35268 |
Из С берутся и получается уравнение y = 0,272466x2 - 2,35268, аналогичноеполученному ранее.
1.5 Реализация мнк в MathCad
Для начала необходимо создать 2 текстовых документа и назвать их, например «x.txt» и «y.txt». Затем необходимо заполнить каждый из них координатами Х или У в. Далее в MathCad считываются данные командой READPRN. И только тогда есть возможность построить матрицу А и В по формуле 1.3 и найти С.
После этого необходимо построить график, Для этого вводим следующие присвоения
И уже можно строить график функций х,у (точки) и z,w(z) (линия).
Рис. 1.3
1.6 Реализация мнк в Fortran
Для построения данного графика в Fortran необходимо иметь 3 файла в проекте: 1) Головная программа (.f90) 2) SIMQ.FOR 3) Plot2m.f90
Головная программа
Program MNI integer,parameter::n=15 – задаем как целое число точек. real::x(n), y(n), a(3,3), b(3), x1(n), y1(n) - задаем вещественные массивы open(1,file='x.txt'); read(1,*)x; print*,x; close(1);print* - открываем файл x.txt open(1,file='y.txt'); read(1,*)y; print*,y; close(1) - открываем файл y.txt a(1,:)=(/sum(x**4),sum(x**3),sum(x**2)/) a(2,:)=(/sum(x**3),sum(x**2),sum(x)/) - вычисляем матрицу А по формуле 1.3 a(3,:)=(/sum(x**2),sum(x),1.*n/) b=(/sum((x**2)*y),sum(x*y),sum(y)/) - вычисляем вектор B по формуле 1.3 call simq(a,b,3,ier) - вызываем программу simq x0=minval(x); xk=maxval(x); h=(xk-x0)/(n-1) - задаем значению x0 минимальное значение x, значению xk задаем максимальное значение x. do i=1,n; x1(i)=x0+(i-1)*h; y1(i)=b(1)*x1(i)**2+b(2)*x1(i)+b(3) - задаем шаг от 0 до n. x1 вычисляем как x предыдущее плюс шаг, а y1 - как квадратичную функцию. enddo call cls(5) - вызываем программу cls. call plot2m(20,20,400,400,dble(x),dble(y),dble(x1),dble(y1),n) - вызываем программу plot2m для построения графика. End
|
Plot2m
$real:8 subroutine plot2m (jl,il,jr,ir,x,y,x1,y1,n) use dflib type (wxycoord)wxy type (xycoord)xy real::x(n),Y(n),x1(n),y1(n) ii=setcolor(0) ii=rectangle(2,jl,il,jr,ir) - Рамка callsetviewport(jl,il,jr,ir) -Начальные координаты переносятся в рамку xl=min(minval(x),minval(x1))- Наибольшие и наименьшие значения xp=max(maxval(x),maxval(x1)) yl=max(maxval(y),maxval(y1)) ym=min(minval(y),minval(y1)) dlx=xp-xl; dly=yl-ym xl=xl-0.1*dlx xp=xp+0.1*dlx yl=yl+0.2*dly ym=ym-0.2*dly ii=setwindow(.true.,xl,yl,xp,ym) ic=16 ii=setcolor(ic) irr=3 - Радиус окружности вокруг точки do i=1,n ii=setpixel_w(x(i),y(i)) call moveto_w(x(i),y(i),wxy) CALL GETCURRENTPOSITION (xy) ii=ellipse(3,xy.xcoord-irr,xy.ycoord-irr,xy.xcoord+irr,xy.ycoord+irr) end do call moveto_w(x1(1),y1(1),wxy) - Соединяет точки линиями ii=setcolor(ic) do i=2,n ii=lineto_w(x1(i),y1(i)) end do call moveto_w(xl,0d0,wxy) !Ось Х ii=lineto_w(xp,0d0) call moveto_w(0d0,yl,wxy) !Ось Y ii=lineto_w(0d0,ym) end subroutine CLS (IS) use dflib type (qwinfo) qw open (IS,file="user") qw.type=2;ii=setwsizeqq (QWIN$FRAMEWINDOW,qw) ii=setwsizeqq (is,qw) ii=setbkcolor(15) call clearscreen (0) ii=settextcolor (0) ii=setcolor(0) end |