Я пишу программу, которая должна получить полином в следующем виде:
x^4*6+x^3*4+x^2+x
также подойдет вариант, если скобки будут нераскрыты, т.е. например:
(x-5)(x+9)(x-4) + (x-4)(x-3)(x+2) +...
вот формула, по которой считается :
*значок суммирования я тут написать не могу, так что напишу словами
*li(x) -здесь i -индекс, т.е "эль итое от икс"; f(xi)-"эф от икс итого"
L(x)=[сумма от i=0 до n] li(x)*f(xi)
f(xi)-значение функции в точке.
lk(x)=(x-x0)...(x-x(k-1))(x-x(k+1))...(x-xn) / (xl-x0)...(xk-x(k-1)) (xk-x(k+1))...(xk-xn)
lk(x)-"эль катое от икс"
x(k-1) -"икс ка минус первое"
Ввод данных уже организован (на ввод пользователь должен ввести ко-во узлов,потом сами узлы, интервалы для расчета Чебышевских узлов) значение функции в узлах программа считает.
Вот уже написанный код:
<html>
<head>
<script>
function vvod_elementov(N) {
var N = N.value, div = document.getElementById("el_len"), span, input, but, sub;
if (!parseInt(N, 10)) { return alert("Введенное значение не является числом!"); }
else { N = parseInt(N, 10); }
div.innerHTML = "";
for (i=0; i < N; i++) {
span = document.createElement("span");
input = document.createElement("input");
input.setAttribute("type", "text");
input.setAttribute("name", "x"+i);
but = document.createElement("input");
but.setAttribute("type", "button");
but.setAttribute("value", "Определить значение функции в узле");
but.onclick = (function(i) { return function() { Proverka(this.parentNode, i); } })(i);
sub = document.createElement("sub");
sub.appendChild(document.createTextNode(i));
span.appendChild(document.createTextNode("Введите x"));
span.appendChild(sub);
span.appendChild(input);
span.appendChild(document.createElement("br"));
span.appendChild(document.createElement("br"));
span.appendChild(but);
span.appendChild(document.createElement("br"));
span.appendChild(document.createElement("br"));
div.appendChild(span);
}
}
function Proverka(el, i) {
var div = document.getElementById("res"), sub;
if (!parseInt(el.children[1].value)) { return alert("Введенное значение не является числом!"); }
else { var sin = parseInt(el.children[1].value)-Math.sin(parseInt(el.children[1].value))-0.25;
/* если нужно в градусах то пишем
var sin = (parseInt(el.children[1].value) * Math.PI / 180)-Math.sin(parseInt(el.children[1].value) * Math.PI / 180)-0.25;
*/
}
//div.innerHTML = "";
sub = document.createElement("sub");
sub.innerHTML = i;
div.appendChild(document.createTextNode(" f(x"));
div.appendChild(sub);
div.appendChild(document.createTextNode(") = "));
div.appendChild(document.createTextNode(sin));
div.appendChild(document.createElement("br"));
}
function Cheb(a,b) {
var a=a.value;
var b=b.value;
var n1=6;
document.write("<br>");
document.write("a="+a);
document.write("<br>");
document.write("b="+b);
document.write("<br>");
document.write("n1="+n1);
document.write("<br>");
document.write("Узлы Чебышева и значение данной функции в этих узлах");
document.write("<br>");
for (var i=0;i<n1; i++) {
document.write("x"+i+"= ");
var z=0.5*( (b-a)*Math.cos( (2*i+1)/(2*n1+1)*Math.PI)+b+a);
document.write(z);
document.write("<br>");
document.write("f(x"+i+")= ");
var fz=z-Math.sin(z)-0.25;
document.write(fz);
document.write("<br>");
document.write("<br>");
/*document.write("(x- " + z+")");
document.write("<br>");
document.write("<br>");*/
}
for (var i=0;i<n1; i++) {
+document.write("(x- " + 0.5*( (b-a)*Math.cos( (2*i+1)/(2*n1+1)*Math.PI)+b+a)+")");
}
}
</script>
</head>
<body>
<div>Пожалуйста, введите количество узлов</div>
<input type="text" id="el" value="0"><input type="button" value="Перейти к вводу узлов" onClick="vvod_elementov(document.getElementById('el'))">
<div id="el_len"></div>
<div id="res"></div>
<div>Пожалуйста, задайте интервал [a;b] для расчета Чебышевских узлов </div>
<div></div>
<div> a=<input type="text" id="a" value="0"></div>
<div></div>
<div> b=<input type="text" id="b" value="0"></div>
<div></div>
<input type="button" value="Перейти к расчету узлов Чебышева" onClick="Cheb(a,b)">
<div></div>
</body>
</html>
не получается по формуле сделать((
помогите пожалуйста