07.04.2016, 23:31 | #11 (permalink) |
Member
Регистрация: 24.03.2016
Сообщений: 25
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
|
07.04.2016, 23:31 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Прочтение похожих обсуждений способно упростить решение проблемы СНАУ методом Зэйделя Паскаль. Решить СНАУ методом Ньютона-Рафсона СНАУ методом Зейделя Интеграл методом прямоугольников |
08.04.2016, 12:43 | #12 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Код:
Uses Graph, CRT; Var x,y,step,Kx,Ky,Dx,Dy:Real; i:Integer; S:String; Begin InitGraph(.........); {Здесь - самостоятельно} SetLineStyle(SolidLn,0,ThickWidth); Line(20,GetMaxY-60,GetMaxX-20,GetMaxY-60); Line((GetMaxX div 2),GetMaxY-60,(GetMaxX div 2),20); SetTextJustify(CenterText,TopText); OutTextXY(GetMaxX-30,GetMaxY-35,'x'); OutTextXY(GetMaxX-20,GetMaxY-30,'2'); SetTextJustify(LeftText,CenterText); OutTextXY((GetMaxX div 2)+10,25,'x'); OutTextXY((GetMaxX div 2)+20,30,'1'); Kx:=(GetMaxX-40)/0.1; Ky:=(GetMaxY-80)/0.001; SetLineStyle(SolidLn,0,NormWidth); step:=0.01; SetTextJustify(CenterText,TopText); for i:=-5 to 5 do begin Line(Round(GetMaxX/2+step*i*Kx),GetMaxY-64, Round(GetMaxX/2+step*i*Kx),GetMaxY-56); Str(step*i:5:2,S); OutTextXY(Round(GetMaxX/2+step*i*Kx),GetMaxY-52,S); end; step:=0.0001; SetTextJustify(RightText,CenterText); for i:=1 to 10 do begin Line((GetMaxX div 2)-4,Round(GetMaxY-60-step*i*Ky), (GetMaxX div 2)+4,Round(GetMaxY-60-step*i*Ky)); Str(step*i:6:4,S); OutTextXY((GetMaxX div 2)-8,Round(GetMaxY-60-step*i*Ky),S); end; SetColor(LightRed); SetLineStyle(SolidLn,0,ThickWidth); MoveTo(Round(GetMaxX/2-0.008*Kx),Round(GetMaxY-60-Sqr(0.008)*16*Ky)); for i:=1 to 16 do LineTo(Round(GetMaxX/2+(-0.008+0.001*i)*Kx), Round(GetMaxY-60-Sqr(-0.008+0.001*i)*16*Ky)); SetColor(LightBlue); MoveTo(Round(GetMaxX/2-0.05*Kx),Round(GetMaxY-60-Sqr(0.05)/7*Ky)); for i:=1 to 100 do LineTo(Round(GetMaxX/2+(-0.05+0.001*i)*Kx), Round(GetMaxY-60-Sqr(-0.05+0.001*i)/7*Ky)); ReadKey End. Турбо Паскаль. Задание на анимацию и дальше, а также Турбо Паскаль. Задание на анимацию |
|
08.04.2016, 23:08 | #13 (permalink) |
Member
Регистрация: 24.03.2016
Сообщений: 25
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Есть программа которая рисует 2 графика. но она на FreePaskal, помогите, пожалуйста переделать на Турбо Паскаль 7.
программа построения дух графиков на одной оси координат} program P; uses Graph, CRT; function f1(X: real): real; begin f1 := 16 * sqr(X); end; function f2(X: real): real; begin f2 := 1 / 7 * sqr(X); end; var GraphDevice, GraphMode: integer; ScreenXstart, ScreenXfinish, ScreenYstart, ScreenYfinish: integer; ScaleX, ScaleY: real; Xstart, Xfinish, Ystart, Yfinish: real; X, Y, dX: real; Xscreen, Yscreen: integer; IsNextVisiblePixel: boolean; begin {параметры графиков} Xstart := -0.05; Xfinish := 0.05; Ystart := 0.0; Yfinish := 0.0010; {инициализация графики} GraphDevice := Detect; GraphMode := Detect; InitGraph(GraphDevice, GraphMode, ''); if GraphResult <> grOk then begin writeln('Error'); Exit; end; {от края экрана отступим по 10% экрана} ScreenXstart := GetMaxX div 10; ScreenXfinish := GetMaxX - ScreenXstart; ScreenYstart := GetMaxY div 10; ScreenYfinish := GetMaxY - ScreenYstart; {расчёт масштабных коэффициентов} ScaleX := (ScreenXfinish - ScreenXstart) / (Xfinish - Xstart); ScaleY := (ScreenYfinish - ScreenYstart) / (Yfinish - Ystart); {построение осей координат} SetColor(7); MoveTo(ScreenXstart, ScreenYstart); LineTo(ScreenXstart, ScreenYfinish); LineTo(ScreenXfinish, ScreenYfinish); LineTo(ScreenXfinish, ScreenYstart); LineTo(ScreenXstart, ScreenYstart); MoveTo((ScreenXfinish + ScreenXstart) div 2, ScreenYstart); LineTo((ScreenXfinish + ScreenXstart) div 2, ScreenYfinish); {построение 1-го графика} SetColor(5); IsNextVisiblePixel := False; X := Xstart; dX := (Xfinish - Xstart) / 1000; while X <= Xfinish do begin Y := f1(X); Xscreen := round((X - Xstart) * ScaleX) + ScreenXstart; Yscreen := -round((Y - Ystart) * ScaleY) + ScreenYfinish; if (Xscreen >= ScreenXstart) and (Xscreen <= ScreenXfinish) and (Yscreen > ScreenYstart) and (Yscreen < ScreenYfinish) then begin if IsNextVisiblePixel then LineTo(Xscreen, Yscreen) else MoveTo(Xscreen, Yscreen); IsNextVisiblePixel := True; end else IsNextVisiblePixel := False; X := X + dX; end; {построение 2-го графика} SetColor(4); IsNextVisiblePixel := False; X := Xstart; dX := (Xfinish - Xstart) / 1000; while X <= Xfinish do begin Y := f2(X); Xscreen := round((X - Xstart) * ScaleX) + ScreenXstart; Yscreen := -round((Y - Ystart) * ScaleY) + ScreenYfinish; if (Xscreen >= ScreenXstart) and (Xscreen <= ScreenXfinish) and (Yscreen > ScreenYstart) and (Yscreen < ScreenYfinish) then begin if IsNextVisiblePixel then LineTo(Xscreen, Yscreen) else MoveTo(Xscreen, Yscreen); IsNextVisiblePixel := True; end else IsNextVisiblePixel := False; X := X + dX; end; ReadKey; end. |
09.04.2016, 09:24 | #14 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
И если Вам больше по сердцу такой слепой график чем тот, что предложил Вам я - с разметкой осей - то что же, как говорится, "насильно мил не будешь". Успехов! |
|
09.04.2016, 14:30 | #15 (permalink) |
Member
Регистрация: 24.03.2016
Сообщений: 25
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Добрый день,Vladimir_S. Хочу еще раз сказать спасибо именно за вашу программу. Проблема была в том, что я не мог увидеть результат. Теперь все нормально. график есть. Огромное спасибо еще раз!!!!!!!!!
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|