Помогите, пожалуйста! Есть диаграмма с накоплением + точечный график (сделано так с целью заштриховать область). Но при построении такого графика: 1. не закрашивается верхушка у графика 2. сбивается нумерация у оси Х
Объясните, пожалуйста как решить это!
Помогите, пожалуйста! Есть диаграмма с накоплением + точечный график (сделано так с целью заштриховать область). Но при построении такого графика: 1. не закрашивается верхушка у графика 2. сбивается нумерация у оси Х
это сделано с помощью интерполяции полиномами Ньютона (где почитать) функция реализована в модуле VBA (код не оптимизирован - делал как-то на скорую руку)
[vba]
Код
Function Newton(x As Double, r As Range) As Double Application.Volatile Dim m() As Double Dim i As Integer, j As Integer, n As Integer, k As Integer, l As Integer
n = r.Rows.Count ReDim m(1 To n, 1 To n + 1)
For i = 1 To n For j = 1 To 2 m(i, j) = r(i, j) Next j Next i
k = 1
For j = 3 To n + 1 k = k + 1 For i = k To n m(i, j) = (m(i, j - 1) - m(i - 1, j - 1)) m(i, j) = m(i, j) / (m(i, 1) - m(i - j + 2, 1)) Next i Next j
For i = 1 To n m(i, 1) = x - m(i, 1) m(i, 2) = m(i, i + 1) Next i
For i = 2 To n m(i, 1) = m(i, 1) * m(i - 1, 1) Next i
For i = n To 2 Step -1 m(i, 1) = m(i - 1, 1) Next i
m(1, 1) = 1
For i = 1 To n Newton = Newton + m(i, 1) * m(i, 2) Next i
End Function
[/vba]
Интерполируем промежутки между вашими точками с шагом 0,1 (или какой нужен) - при этом диапазон интерполяции двигаем (см. формулы в файле) Потом кидаем на график. Вроде всё
это сделано с помощью интерполяции полиномами Ньютона (где почитать) функция реализована в модуле VBA (код не оптимизирован - делал как-то на скорую руку)
[vba]
Код
Function Newton(x As Double, r As Range) As Double Application.Volatile Dim m() As Double Dim i As Integer, j As Integer, n As Integer, k As Integer, l As Integer
n = r.Rows.Count ReDim m(1 To n, 1 To n + 1)
For i = 1 To n For j = 1 To 2 m(i, j) = r(i, j) Next j Next i
k = 1
For j = 3 To n + 1 k = k + 1 For i = k To n m(i, j) = (m(i, j - 1) - m(i - 1, j - 1)) m(i, j) = m(i, j) / (m(i, 1) - m(i - j + 2, 1)) Next i Next j
For i = 1 To n m(i, 1) = x - m(i, 1) m(i, 2) = m(i, i + 1) Next i
For i = 2 To n m(i, 1) = m(i, 1) * m(i - 1, 1) Next i
For i = n To 2 Step -1 m(i, 1) = m(i - 1, 1) Next i
m(1, 1) = 1
For i = 1 To n Newton = Newton + m(i, 1) * m(i, 2) Next i
End Function
[/vba]
Интерполируем промежутки между вашими точками с шагом 0,1 (или какой нужен) - при этом диапазон интерполяции двигаем (см. формулы в файле) Потом кидаем на график. Вроде всёbuchlotnik
а может просто так подойдет с рисунком. Частоту линий можно поменять - нужно сделать внешний файл - картинку другую или после вставки рисунка поставить преобразовать рисунок в текстуру и там проиграться с масштабом.
а может просто так подойдет с рисунком. Частоту линий можно поменять - нужно сделать внешний файл - картинку другую или после вставки рисунка поставить преобразовать рисунок в текстуру и там проиграться с масштабом.SLAVICK