日期:2014-05-20  浏览次数:20876 次

一道c#编程题!帮我一下
x*x*x*-3sin(x)-1=0   在0到1之间的解,精确到小数点5位     !

谢谢

------解决方案--------------------
以下为matlab的一个.m文件,可以利用C#内部的matlab引擎进行调用执行。
此函数要稍加改动,元函数用于计算z = c * sqrt(1- y.*y/b/b - x.*x/a/a),可改为
x-3y-1=Z,其中a = 1 b = -3 c =-1这个函数的基本原理是利用二分法逼近求值。
至于C#内调用matlab文件可参考帮助内的源码。
function BendArea(a,b,c,N)
a = input( 'a = ');
b = input( 'b = ');
c = input( 'c = ');
N = input( '绘图精度: ');

xgrid = linspace(-abs(a), abs(a), N);
ygrid = linspace(-abs(b), abs(b), N);
[x,y] = meshgrid(xgrid, ygrid);
z = c * sqrt(1- y.*y/b/b - x.*x/a/a);

u = 1;

z1 = real(z);
for k = 2 : N - 1

for j = 2 : N - 1

if imag(z(k , j)) ~=0

z1(k,j) = 0;

end
if all(imag(z([k-1,k+1],[j-1,j+1]))) ~=0

z1(k,j) = NaN;

end
end
end
surf(x,y,z1);
hold on;

if u == 1

z2 = -z1;
surf(x,y,z2);
axis([-abs(a),abs(a),-abs(b),abs(b),-abs(c),abs(c)]);
end

xlabel( 'x ');
ylabel( 'y ');
zlabel( 'z ');

title( '曲面输出 ');
hold off;





------解决方案--------------------
能用MATLAB很昂贵啊,MATLAB本身就大,然后还需要将MATLAB,的算法封装成NET程序集,本身还需要用M语言,(特别灵活,而且动态定义)呵呵