求C语言编程 编程二次插值法求fx=(X-3)^2最优解初始区间[a,b]=[1,7]精度0.01

9356℃ TERENCE

求C语言编程 编程二次插值法求fx=(X-3)^2最优解初始区间[a,b]=[1,7]精度0.01

C语言二次插值法求f(x)=3x^3-4x+2=0

#include<stdio.h>

double fun(double x)

{//多项式

double a[]={2,-4,0,3};

double sum;

int n=4;

n--;

sum=a[n];

while(--n >= 0)

sum=sum*x+a[n];

return sum;

}

typedef double (*Function)(double);

double cal(Function f,double a,double b,double e)

{

double a1,a2,a3,t_a2,t;

a1=a;a3=b;a2=(a+b)/2;

while(1)

{

t=((f(a3)-f(a2))/(a3-a2)-(f(a2)-f(a1))/(a2-a1))/(a3-a1);

t_a2=((a1+a2)*t-(f(a2)-f(a1))/(a2-a1))/(2*t);

if(t_a2-a2 < e && t_a2-a2 > -e)break;

if(t_a2 > a2)a1=a2;

else a3=a2;

a2=t_a2;

}

return f(t_a2);

}

void main()

{

printf("%lf\n",cal(fun,0,2,0.01));

}希望能帮到你 望采纳 谢谢

试用二次插值法求函数f(x)=8x^3-2 x^2-7x+3的最优解,初始区间为[0,2],精度为0.01.

给些参考,不想计算了

mdesign.tyut.edu/kuai_su/youhuasheji/suanfayuanli/2.3.asp

用黄金分割法求f(x)=(x-3)的最优解 附C语言程序

黄金分割法其实也是Fibonacci法吧!!!因为对于Fibonacci数列,有f(n)/f(n-1)-→0.618...... 这题解法我是参考hi.baidu/shyyooeren/blog/item/d74f42104e8ef9f9c2ce7902.html, 只是改了多项式和Fibonacci数列用黄金分割数来求而已(需要改的还有x的范围(a,b))! #include #include const int fi[10]={1,1,2,3,5,8,13,21,34,55}; double f(double x) //多项式 { return (x-3)*(x-3); } double F(int tn)//计算Fibonacci数 { if(tn<10) return fi[tn]; return pow(1.618,tn-9)*fi[9]; } void main(void) { double r,u,a,b,fr,fu,q; int k,n; //步骤1,初始化 a=0.0; b=3.0; k=0; q=0.00001; n=0; while(F(n)<((b-a)/q))n++; //计算次数n r=a+(F(n-k-1)/F(n-k+1))*(b-a); u=a+(F(n-k)/F(n-k+1))*(b-a); fr=f(r); fu=f(u); while(kfu) { if(b-r<=q) { printf("%d:%f",k,u); break; } else { a=r; b=b; r=u; fr=fu; u=a+(F(n-k)/F(n-k+1))*(b-a); fu=f(u); k++; } } else { if(u-a<=q) { printf("%d:%f",k,r); break; } else { a=a; b=u; u=r; fu=fr; r=a+(F(n-k-1)/F(n-k+1))*(b-a); fr=f(r); k++; } } } getchar(); }

c++编程:用二次插值法求目标函数f(x)=x^2+2x-6的最优解。给定初始区间[-3,5],收敛精度&=0.05.

最优解指的是最大或最小?

采纳哦