首页 > 编程语言 >C++趣味实验之:二次函数面积与微积分

C++趣味实验之:二次函数面积与微积分

时间:2024-08-27 18:54:32浏览次数:11  
标签:分割 函数 二次 int 微积分 面积 C++ 趣味 图形

在数学中,我们可以使用微积分来计算由二次函数抛物线构成的图形

根据这个原理,我们可以用程序模拟计算这些图形的面积

long double x,y,a,b,c;

首先,定义出函数的各个参数

输入a,b,c的数值后,计算其数值并绘制其图像

for(int i=1;i<=1000;i++){
		x+=0.1;
		y=a*x*x;
		y=y+b*x;
		y=y+c;
		putpixel(x*10+250,250-y,WHITE);
	}
	x=0;
	for(int i=1;i<=1000;i++){
		x-=0.1;
		y=a*x*x;
		y=y+b*x;
		y=y+c;
		putpixel(x*10+250,250-y,WHITE);
	}

(函数被y轴分割)

之后,在二次函数上取一点A,由该点作一条y轴的平行线,求点A至该线交于x轴的点B与点B到原点O、二次函数构成的图形的面积

        设点A的x值为N,平均分割N到0的距离,每份长度为N2

分割150次↓↓↓

for(int i=1;i<=150;i++){
		n2=n/i;
		
		x=n;
		y=a*x*x;
		y=y+b*x;
		y=y+c;	
		if(i==1){
			S=x*y*0.5;
		}
		else if(i>10){
			x=n2;
			y=a*x*x;
			y=y+b*x;
			y=y+c;
			S=x*y*0.5;
			y2=y;
			x2=x;
			for(int j=1;j<=i;j++){
				x=x+n2;
				y=a*x*x;
				y=y+b*x;
				y=y+c;
				S=(y+y2)*x*0.5+S;
				y2=y;
				x2=x;
				line(x*10+250,250-y,x*10+250,250);
			}	
		}
		
	}

这里的分割方法是把截取部分分割成一个三角形和若干梯形并累计相加其面积

有效结果部分如下图所示

图像运行结果如下图所示

(为了使结果更加准确,可以使用高精度)

本期就到这里,感谢您的阅读

标签:分割,函数,二次,int,微积分,面积,C++,趣味,图形
From: https://blog.csdn.net/weixin_61702409/article/details/141609797

相关文章

  • C++:new
    还记得之前帖子中提到的malloc吗,new和malloc都可以申请和释放空间。一般使用new有三种格式:1.指针变量名=new+类型;2.指针变量名=new+类型(赋予一个初始值);3.指针变量名=new+类型[内存单元个数];释放空间需要用到delete。例子:#include<iostream>usingnamespacestd;in......
  • C++基础
    目录思维导图:学习内容:1.面向对象 1.1.概念1.2.所谓面向对象编程1.3.面向过程与面向对象2.命名空间2.1为何引入命名空间2.2程序中的标识符2.3 系统提供的命名空间std2.4 自定义命名空间 2.4.1 定义格式2.4.2 多个命名2.4.3 命名空间嵌套定义2......
  • 有趣的C++模板代码
    1#include<iostream>2template<typename...Ts>3structCNAny{4staticboolDo(inti){5return(Ts::Do(i)||...);6}7};89template<typename...Ts>10structCNAll{11staticboolDo(inti){......
  • C++学习随笔——算法transform和lambda的用法
    std::transform是一个常用的STL算法,用于对序列中的每个元素进行操作,并将结果存储在另一个序列中。lambda表达式是一种匿名函数,可以在需要传递函数作为参数的场景中使用,比如在std::transform中。语法://一元操作std::transform(InputIterator1first1,InputIterator1la......
  • C++学习随笔——C++仿函数的应用方法
    仿函数的基本定义仿函数(Functor),也称为函数对象(FunctionObject),是一个行为像函数的对象。实现仿函数的方法是重载类中的operator()操作符,使得对象能够像调用普通函数一样使用。仿函数的主要优势是它们可以拥有状态,并且可以被用于STL算法和容器中。简单例子:点击查看代码#in......
  • C++入门第一课
    我准备再出一个合集,这个合集主要是讲C++一些知识,主要是因为懒得写洛谷题解(´ー∀ー`),适合新手学习。本人语文不太好,有些用词不太恰当,还请各位多多指正o( ̄︶ ̄)oOK我们现在就开起C++学习吧ヾ(≧▽≦*)o!第一课认识C++要学习C++,就首先要知道C++是什么。1.C++是一种面向对象的计算机程......
  • C++学习笔记——范围基于 for 循环和for_each循环的区别
    范围基于for循环是C++11中引入的,简化了遍历数组或容器的代码点击查看代码#include<iostream>#include<vector>intmain(){std::vector<int>numbers={1,2,3,4,5};//使用范围基于for循环遍历for(intnum:numbers){std::cout<<num......
  • C++学习随笔——关联容器的迭代器失效问题
    常见关联容器的迭代器失效规则std::map和std::set:插入元素:插入新元素不会使任何已有的迭代器失效。你可以在插入新元素后继续使用所有现有的迭代器。删除元素:删除某个元素会导致指向该元素的迭代器失效。除此之外,所有指向其他元素的迭代器仍然有效。如果在遍历过程中删除......
  • 从零开始学习C++之递归
    递归注:此算法与函数有关,如不了解请移步。在wikipedia中,递归的解释是这样的:在C++中,递归就是指在函数中调用函数本身;递归的作用类似于分治,将一个大问题分解为很多小问题进行求解。但是递归的时间复杂度极高,因为要解决很多小问题,所以时间复杂度高达\(O(2^n)\)。使用递......
  • C++/Qt 多媒体(续二)
    一、前言        前边讲述到了Qt的两项独特的模块编程支持的另一项内容——多媒体编程,上篇文章具体讲述的包括一个QMediaPlayer类的示例代码和一个QSoundEffect类的讲解,而本章将会提供一篇示例代码——《基于QMediaRecorder类的音频录制》。    对于上篇内......