В y1, y2 теперь значения в точках 0, 0,1, 0,2, ..., 1. С ними можно делать что угодно, у меня по ним построены графики.
(Код для построения, работает на сайте, где у меня это было запущено. import matplotlib matplotlib.use('Agg') import matplotlib.pyplot as plt fig = plt.figure() ax = fig.add_subplot(111) ax.plot(x, y1, '-r', label="Euler") ax.plot(x, y2, '-g', label="Euler+") ax.legend() fig.savefig('graph.png') )
Зеленый график должен быть ближе к истинному решению, чем красный.
// PascalABC.NET 3.2, сборка 1344 от 22.11.2016 // Внимание! В других версиях работа не гарантируется! begin var a:=ArrRandom(15,-20,20); a.Println; a:=a.Select(x->x.IsOdd?x*3:x div 2).ToArray; a.Println end.
А вот так это же самое обычно делают в школах... const n=15; var a:array[1..n] of integer; i:integer; begin Randomize; for i:=1 to n do begin a[i]:=Random(41)-20; Write(a[i],' ') end; Writeln; for i:=1 to n do begin if a[i] mod 2=0 then a[i]:=a[i] div 2 else a[i]:=a[i]*3; Write(a[i],' ') end; Writeln end.
</script>alert("Макс. красного: " + max);//вывод сообщения о максимальной последовательности красногоalert("Частота выпадания красного: " + red1/arr.length*100+'%');//вывод сообщения о проценте частоты красного}}redm=0;//обнуляем максимальную последовательность {} else //иначе если последовательность красного закончилась//то перезапишим максимальное число//больше максимального числа, if (redm>max) max=redm; //условие если последовательность redm++; //запиши максимальную последовательность red1++; //запиши сколько раз встретилось красноеif(arr[i]==-1){ //условие если красное то for (var i = 0; i<arr.length; i++) {//цикл подсчета выподания красногоalert(arr);//вывод массива}arr.push((Math.round(Math.random()*2))-1);//случайные числа от -1 до 1for (var i = 0; i <=rounds; i++) { //цикл для заполнения массиваvar max=0;//переменная для хранения максимальной последовательностиvar redm=0;//переменая для подсчёта последовательности красногоvar red1=0;//переменная для подсчёта частоты красногоvar rounds=1000000;//число раундовvar arr=[];//обьявляем массив<script><meta charset="utf-8">
import numpy as np
def f(x, y):
return (1 - x*x)/y + 1
step = 0.1
x_start = 0.
x_end = 1.
y_init = 1.
x = np.arange(x_start, x_end + step/2, step)
y1 = np.zeros(len(x))y2 = np.zeros(len(x))
y1[0] = y2[0] = y_init
for i in range(len(x) - 1):
y1[i + 1] = y1[i] + f(x[i], y1[i]) * step
y2[i + 1] = y2[i] + f(x[i] + step/2, y2[i] + f(x[i], y2[i]) * step/2) * step
В y1, y2 теперь значения в точках 0, 0,1, 0,2, ..., 1. С ними можно делать что угодно, у меня по ним построены графики.
(Код для построения, работает на сайте, где у меня это было запущено.
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(x, y1, '-r', label="Euler")
ax.plot(x, y2, '-g', label="Euler+")
ax.legend()
fig.savefig('graph.png')
)
Зеленый график должен быть ближе к истинному решению, чем красный.